久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > arduino花式點燈續

arduino花式(shi)點燈(deng)續(xu) 時(shi)間:2018-09-26      來源:未知(zhi)

之前我們(men)使(shi)用Arduino 實(shi)(shi)現(xian)了點燈(deng),閃爍(shuo)燈(deng),串口點燈(deng)以及與上位機(ji)結合的點燈(deng)。這一次我們(men)將實(shi)(shi)現(xian)一個UDP服務器接受命令實(shi)(shi)現(xian)點燈(deng),以及使(shi)用Intel Edison開發板實(shi)(shi)現(xian)點燈(deng)。

一、UDP實(shi)現點燈

UDP服(fu)務(wu)器是(shi)一(yi)種網絡(luo)通信采取的正(zheng)常方式。使用udp協議(yi)實(shi)現快速的網絡(luo)通信。在服(fu)務(wu)器端只需要 三個函數便(bian)可部署。

udp_socket = socket(AF_INET, SOCK_DGRAM, 0);

這個(ge)(ge)函數(shu)(shu)第一個(ge)(ge)參數(shu)(shu)是代表ipv4的作用(yong)(yong)(yong)域(yu)的宏,第二個(ge)(ge)參數(shu)(shu)是數(shu)(shu)據報的類型,udp使用(yong)(yong)(yong)的用(yong)(yong)(yong)戶數(shu)(shu)據報格式。函數(shu)(shu)返(fan)回值(zhi)是指文件描述符(fu),使用(yong)(yong)(yong)它(ta)作進一步操作。

int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

bind函(han)數(shu)是將套接字與本地(di)地(di)址信息進行綁(bang)定。

struct sockaddr_in seraddr;

seraddr.sin_family=AF_INET;

seraddr.sin_port=htons(50000);

seraddr.sin_addr.s_addr=inet_addr("0.0.0.0");

 Seraddr這個結構體需(xu)要填入(ru)ipv4的作用域(yu),以及本機地址(zhi)和本地端口。

再使用recfrom函數(shu)便可接受信息(xi)

recvfrom(fd,buf,sizeof(buf),0,NULL,NULL);

結合之(zhi)前的串口函數,可以實現(xian)接(jie)受數據報(bao)打(da)開串口給下位機Arduino發送信息:

代碼:

#include #include

/* See NOTES */#include

#include

#include

#include //#include //#include

#include

#include

#include

#include

#include

#include

int serialfd;int uart_device_open(){

struct termios options;

if((serialfd=open("/dev/ttyUSB0",O_RDWR|O_NOCTTY|O_NDELAY))<0)

{

perror("open failed");

return -1;

}

tcgetattr(serialfd, &options);

options.c_cflag |= (CLOCAL | CREAD);

options.c_cflag &= ~CSIZE;

options.c_cflag &= ~CRTSCTS;

options.c_cflag |= CS8;

options.c_cflag &= ~CSTOPB;

options.c_iflag |= IGNPAR;

options.c_iflag &= ~(BRKINT | INPCK | ISTRIP | ICRNL | IXON);

options.c_cc[VMIN] = 12;

options.c_oflag = 0;

options.c_lflag = 0;

cfsetispeed(&options, B9600);

cfsetospeed(&options, B9600);

tcsetattr(serialfd,TCSANOW,&options);

printf("zigbee serial ok!\n");

return 0;

}

int main(int argc, const char *argv[]){

int fd;

fd=socket(AF_INET,SOCK_DGRAM,0);

if(fd<0)

{

printf("fd error\n");

return -1;

}

//socket

struct sockaddr_in seraddr;

seraddr.sin_family=AF_INET;

seraddr.sin_port=htons(50000);

seraddr.sin_addr.s_addr=inet_addr("0.0.0.0");

// host to network small htons

//bind 2 sockaddr <-- sockaddr_in

int ret_bind;

 ret_bind=bind(fd,(struct sockaddr*)&seraddr,sizeof(seraddr));

if(ret_bind<0)

{

printf("fail to bind\n");

return -1;

}

//recvfrom

char buf[128];

uart_device_open();

while(1)

{

bzero(buf,sizeof(buf));

recvfrom(fd,buf,sizeof(buf),0,NULL,NULL);

printf("Buf:%s\n",buf);

if(buf[0]=='1'||buf[0]=='b'||buf[0]=='0')

{

write(serialfd, buf, 1);

printf("success to send %c\n&quot;,buf[0]);

}

}

close(fd);

return 0;

}

二、Intel Edison實(shi)現點燈

 

 

Edison是(shi)Intel推出的一款(kuan)智(zhi)能開發平臺,兼(jian)容Arduino,同(tong)時也是(shi)一款(kuan)高(gao)性能的x86低功耗開發板(ban)。

首先(xian)我們(men)先(xian)配置一下Intel Edison:

 一旦成功(gong)連(lian)接,Edison正常(chang)啟(qi)動,在windows中會出現一個盤符。

 

 

陸續安裝完Arduino的幾個(ge)開發(fa)包。

 

 

使用之前的Arduino代碼燒錄到開發板中,方法參照Arduino的使用;

 

 

如此便(bian)實(shi)現(xian)了Intel Edison的Arduino點燈程(cheng)序(xu)。

上一篇:C語言預處理命令解析

下一篇:scanf函數簡單問題討論

熱點(dian)文章推薦(jian)
華清(qing)學員就業榜單
高(gao)薪(xin)學員(yuan)經驗分享
熱點(dian)新聞推薦
前(qian)臺專線:010-82525158 企業培訓洽(qia)談專線:010-82525379 院校合作洽談專線(xian):010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,,京公海網安備11010802025203號

回到頂部