- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
串口通信与网络通信的应用研究
摘要:该文通过可移动摄像头控制系统,探讨了以Windows与Linux平台为基础的两个操作系统之间的串口通信和网络通信,通过基于S3C2410的嵌入式串口通信的实现提出了具体可行的操作。该系统的硬件主体设计以三星S3C2410处理器为核心控制器件,实现在ARM平台上的基本功能。
关键词:嵌入式;Socket;串口通信;网络通信
本文的背景是研究通过对摄像头的远程控制从而对运动图像加以采集和处理。该系统的音视频编解码部分,是基于Windows系统用VC进行的开发,实现对图像视频的编解码处理,摄像头的远程控制系统主要是通过Linux系统设计。统通过串口和网络进行传输和控制。系统采用C/S模型,PC机作为client端,根据采集到的数据进行编解码后,发送出对摄像头的控制命令,通过网络传输到ARM9平台上,ARM平台作为server端在接收到client端发送的命令后,通过串口发送命令来控制摄像头。
1串口通信
1.1Linux下串口通信基本原理
Linux系统将设备和文件的操作都作为对文件的处理,所以对设备的操作,内核会返回一个文件描述符,需要将其作为参数传给相对应的函数。Linux中所有的设备文件都放在“/dev”目录下,通过“ttyS+编号”命名相应的串口资源,所以对应路径是“/devttyS*”。因而可以相对文件读写那样访问一个串口设备。
1.2Linux下的串口设置
首先要对串口进行设置,在termios.h完成对波特率等的设置。
structtermios
{tcflagtciflag;
tcflagtcoflag;
tcflagtccflag;
tcflagtclflag;
cctccc[NCCS];
};
open()函数:intfd=open(/dev/ttyS*,ORDWR|ONOCTTY|ONDELAY);
然后调用read()和write()函数读写端口,返回实际读写的字节数,如果有错误发生则返回-1。
读取串口结束后,首先恢复串口原始属性,然后才可以关闭串口并退出程序。
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);
write(fd,buf,16);
close(fd);
}
2网络通信
2.1Socket基本原理介绍
Socket是一种通信机制,客户/服务器系统既可以在本地单机上运行,也可以在网络中运行。
首先需要了解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*address,size_t*address_len);
4)通信处理:send(),write(),recv(),read()。
5)通信结束:使用closesocket()。
2.2Windows和Linux下socket应用程序
客户端程序:创建一个未命名的套接字,然后把它连接到服务器套接字server_socket上,向服务器写一个字符,再读回经服务器处理后的一个字符。
服务器端程序:首先创建一个服务器套接字,绑定到一个名字,然后创建一个监听队列,接收来自客户程序的连接。
下面我们分别在Windows和Linux下进行socket编程,实现二者之间的通信,具体函数实现的主要部分如下:
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,sendBu
您可能关注的文档
最近下载
- 色盲检测图(俞自萍第六版).pptx VIP
- 《爱唱歌的小杜鹃》 课件 人教版音乐三年级上册.pptx
- DB37∕T 242-2021 建筑消防设施检测技术规程.docx
- PE管材验收标准(SDR17.6).docx VIP
- 复旦大学《计算机体系结构》期末考试两套试卷(含答案).pdf VIP
- 中国近现代史纲要知到课后答案智慧树章节测试答案2025年春海南大学.docx VIP
- 形考作业3:基于UML的大学图书馆图书信息管理系统设计实验.docx VIP
- 大学《地震工程学》课程课件.pptx
- 2024年二建继续教育-基于建筑信息模型、虚拟施工及网络的项目管理理论及实践1、2答案.docx VIP
- 2024年二建继续教育-剖析价值工程及如何运用价值工程优选设计方案1、2答案.docx VIP
文档评论(0)