电路板人才网

嵌入式实时系统中跨平台通信的实现

发布于:08-31



被动通信方代码





被动通信方选择VxWorks?为操作系统。Linux?与VxWorks?都可以使用BSD?Socket,因此编程方法基本相同。通信任务和实时任务的数据交换以管道方式为例。



#include?vxWorks.h



#include?sockLib.h



#include?inetLib.h



#include?taskLib.h



//本机Socket?地址



struct?sockaddr_in?serverAddr;



//目标通信机Socket?地址



struct?sockaddr_in?clientAddr;



int?sFd;?//监听Socket?描述苻



int?newFd;?//被连接Socket?描述苻



int?ix=0;//被连接的Socket?数目



//启动管道函数



void?SetupPipe(void)







pipeDrv();//管道驱动



//管道建立



pipeDevCreate(“pipe?mypipe”,20,40);







//主通信函数



void?Server(void)







//使用TCP/IP?协议



serverAddr.sin_family?=?AF_INET;



serverAddr.sin_len?=?sizeof?(struct?sockaddr_in);



//本机提供通信的端口



serverAddr.sin_port?=?htons(HostPort);



serverAddr.sin_addr.s_addr?=?htonl?(HostIP);//本机IP?地址



//创建Socket



sFd?=?socket?(AF_INET,?SOCK_STREAM,?0);



//绑定Socket



bind?(sFd,?(struct?sockaddr?*)?&serverAddr,?sockAddrSize);



//监听Socket



listen?(sFd,?SERVER_MAX_CONNECTIONS);



//等待通信事件发生



FOREVER







newFd?=?accept?(sFd,?(struct?sockaddr?*)?&clientAddr,&sockAddrSize);



sprintf?(workName,?tTcpWork%d,?ix++);



taskSpawn(workName,?"text-indent:2em;">




阅读 67