资源描述:
《串口通信与网络通信的应用研究.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、串口通信与网络通信的应用研究 摘要:该文通过可移动摄像头控制系统,探讨了以Windows与Linux平台为基础的两个操作系统之间的串口通信和网络通信,通过基于S3C2410的嵌入式串口通信的实现提出了具体可行的操作。该系统的硬件主体设计以三星S3C2410处理器为核心控制器件,实现在ARM平台上的基本功能。 关键词:嵌入式;Socket;串口通信;网络通信 本文的背景是研究通过对摄像头的远程控制从而对运动图像加以采集和处理。该系统的音视频编解码部分,是基于Windows系统用VC进行的开发,实现对图像视频的编解码处理,摄像头的远程控制系统主要是通过Linux系统设计。统通过串口和网络
2、进行传输和控制。系统采用C/S模型,PC机作为client端,根据采集到的数据进行编解码后,发送出对摄像头的控制命令,通过网络传输到ARM9平台上,ARM平台作为server端在接收到client端发送的命令后,通过串口发送命令来控制摄像头。 1串口通信 1.1Linux下串口通信基本原理 Linux系统将设备和文件的操作都作为对文件的处理,所以对设备的操作,内核会返回一个文件描述符,需要将其作为参数传给相对应的函数。Linux中所有的设备文件都放在“/dev”目录下,通过“ttyS+编号”命名相应的串口资源,所以对应路径是“/devttyS*”。因而可以相对文件读写那样访问一个串口
3、设备。 1.2Linux下的串口设置 首先要对串口进行设置,在termios.h完成对波特率等的设置。 structtermios {tcflagtciflag; tcflagtcoflag; tcflagtccflag; tcflagtclflag; cctccc[NCCS]; }; open()函数:intfd=open("/dev/ttyS*",ORDWR
4、ONOCTTY
5、ONDELAY); 然后调用read()和write()函数读写端口,返回实际读写的字节数,如果有错误发生则返回-1。 读取串口结束后,首先恢复串口原始属性,然后才可以关闭串口并退出程序。
6、 1.3串口控制应用程序 下面给出本系统中一个通过串口控制摄像头的函数的一部分结构: voidsendMsg(intpan,inttilt) {structtimevaltimeout; staticchar*driver="/dev/ttyS1"; timeout.tv_sec=0; timeout.tv_usec=0; formCmd(buf,pan,tilt); fd=uart_open(driver,B9600);3 write(fd,buf,16); close(fd); } 2网络通信 2.1Socket基本原理介绍 Socket是一种通信机制,客户
7、/服务器系统既可以在本地单机上运行,也可以在网络中运行。 首先需要了解socket中的一些重要函数: 1)创建Socket:intsocket(intdomain,inttype,intprotocol); 2)配置Socket:bind函数指定本地信息intbind(intsocket,conststructsockaddr*address,size_taddress_len); 3)使用listen()和accept()函数获取远端信息: Intlisten(intsocket,intbacklog); Intaccept(intsocket,structsockaddr*
8、address,size_t*address_len); 4)通信处理:send(),write(),recv(),read()。 5)通信结束:使用closesocket()。 2.2Windows和Linux下socket应用程序 客户端程序:创建一个未命名的套接字,然后把它连接到服务器套接字server_socket上,向服务器写一个字符,再读回经服务器处理后的一个字符。 服务器端程序:首先创建一个服务器套接字,绑定到一个名字,然后创建一个监听队列,接收来自客户程序的连接。 下面我们分别在Windows和Linux下进行socket编程,实现二者之间的通信,具体函数实现的
9、主要部分如下: Windows下作为client端: { SocketClient=socket(AF_INET,SOCK_STREAM,0); addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.1.10"); while(1) send(SocketClient,sendBuffer,16,0); closesocket(SocketClient); WSA