好文档 - 专业文书写作范文服务资料分享网站

linux系统下,串口接收发送数据,并利用udp转发剖析

天下 分享 时间: 加入收藏 我要投稿 点赞

// perror(\ exit(1); }

optval = 1;

//**********当一个套接字已经打开但尚未有连接的时候用setsockopt()系统调用在其上设定选项

if ( setsockopt(client_sockfd, SOL_SOCKET, SO_BROADCAST, (void *)&optval, sizeof(int)) < 0 ) {

// perror(\ exit(1); }

memset( &serv_addr, 0, sizeof(struct sockaddr_in) ); //把serv_addr的所有字节设置成字符

serv_addr.sin_family = AF_INET; //表示UNIX网络套接字

serv_addr.sin_port = htons( PORT ); //远端主机端口号 serv_addr.sin_addr.s_addr = inet_addr(\表示发送的是广播包

if ( sendto(client_sockfd, send_buf, t, 0, (struct sockaddr *)&serv_addr,

sizeof(struct sockaddr)) < 0 )//广播包每次发一个字节 {

// perror(\ exit(1); }

close( client_sockfd ); //关闭套接字 return 0; }

int main() {

pid_t pid,id; int fd;

int nread,nwrite;

int i=0,sum=0,recv_c=0;

unsigned char readbuff[100]; //定义串口在内存中接收的缓冲区

unsigned char buff[100]; //将缓冲接收的串口数据放到buff里

unsigned char check[100]; //存放udp接收的数据 char *dev = \

fd = OpenDev(dev); //打开串口

set_speed(fd,57600); //设置波特率为57600

if (set_Parity(fd,8,1,'N') == FALSE) //设置校验,数据位,停止位 {

exit (1); }

pid=fork(); //建立新的进程。以下是两个并行的进程 if(pid<0) {

exit(1); }

if(pid==0) //子进程,接收广播包,发送到串口 {

// printf( \ while(1) {

recv_c=udp_broadcast_service(check); //接收udp数据

while((nwrite=write(fd,check,recv_c))>0) //将数据通过串口发送出去

{

check[nwrite] = '\\0'; break; } } }

else //父进程,接收串口的数据,发送广播包 {

// printf( \ while(1)

{

tcflush(fd, TCIOFLUSH); //刷新串口

bzero(readbuff,100); //清空缓冲区 bzero(buff,100); while((nread = read(fd, buff,1))<=0) {

//等待子进程,如果子进程死亡,返回子进程pid,如果没死亡返回pid=0;

id=waitpid(pid,NULL,WNOHANG);

if(id==pid)//如果子进程死亡,父进程销毁 {

// printf(\ exit(1); }

usleep(1000); } sum=1; nread=0;

usleep(5000); //要让串口有足够的时间接数 // printf( \

while((nread = read(fd, readbuff,8))>0) //接收串口的数据 {

for(i=0;i

buff[sum+i]=readbuff[i]; } sum=nread+sum; nread=0;

bzero(readbuff,100);

usleep(10000); // printf( \ }

// printf( \

send_broadcast(buff,sum); //发送出去

bzero(buff,100);

tcflush(fd, TCIOFLUSH); sum=0;

} }

close(fd); }

将串口接受的数据以udp

linux系统下,串口接收发送数据,并利用udp转发剖析

//perror(\exit(1);}optval=1;//**********当一个套接字已经打开但尚未有连接的时候用setsockopt()系统调用在其上设定选项if(setsockopt(client_sockfd,SOL_SOCKET,SO_BROADC
推荐度:
点击下载文档文档为doc格式
9puzc2d8gv9uewu2s0h44x67j2pwjr01ec0
领取福利

微信扫码领取福利

微信扫码分享