欢迎来到天天文库
浏览记录
ID:22373012
大小:55.50 KB
页数:6页
时间:2018-10-28
《windows ce.net 4.2下pc与单片机的串行通信》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、WindowsCE.NET4.2下PC与单片机的串行通信 摘 要:obileputingandembeddedapplicationItdesignsamultithread,multitaskandfullpriorityoperatingsystemenvironmentforlimitedresourcesspecially,anditenablespounicateabilityRS232serialmunicationisthemostbasicmunicationmodesupportedbyunicationineansofmultithread,an
2、ddiscussesseveralkeytechniquestorealizemunicationrightly Keyunication;multithread;embeddedoperatingsystem 在工业控制中,常需要将单片机采集到的数据传送给PC机处理、显示,并且根据处理结果给单片机发送控制命令。串行通信虽然传送速度相对较慢,但是传送成本低,对实现监视和控制,具有足够的带宽,并且没有过于复杂的编解码,实现自定义的协议也不复杂,因而在工业自动化、通信和军事等领域的应用十分广泛。随着WindowsCE嵌入式操作系统在工业控制中的广泛应用,设计和实现Win
3、dowsCE下PC与单片机的串行通信具有重要的意义。 1WindowsCE.4.2简介 WindowsCE是一个面向移动计算和嵌入式应用的操作系统,其突出优点是模块化、可定制性、完备性、实时性、通信能力强大和基于Win32应用程序编程接口。WindowsCE.NET4.2是为嵌入式市场重新设计的WindowsCE3.0的后继产品,为快速建立下一代智能移动和小内存占用的设备提供了一个健壮的实时操作系统。他包括创建一个基于定制设备的WindowsCE所需的一切。 2WindowsCE.4.2下的串行通信技术 串行端口在WindowsCE.4.2(以下简称Windo
4、wsCE)下属于流接口设备,他是串行设备接口常规I/O驱动程序的调用与通信相关的具体函数的结合。串行设备被视为用于打开、关闭和读写串行端口的常规的可安装的流设备。WindowsCE的串口函数和Windows的串口函数基本相同,但有几点值得注意: (1)WindowsCE只支持Unicode字符集,在编程时必须特别注意。 (2)WindowsCE不支持重叠的I/O操作。 2.1打开和关闭串行端口 在所有的流设备驱动程序中,均使用CreateFile来打开串行端口设备,如果这个端口不存在,CreateFile返回ERROR_FILE_NOT_FOUND。因此,用户指
5、定的端口必须是存在并且可用的,而且要遵循WindowsCE流接口设备驱动程序的命名规则,即后接要打开的端口号再紧跟一个冒号。 HANDLEhPort=CreateFile(_T(1:), GENERIC_READ
6、GENERIC_WRITE,0,NULL, OPEN_EXISTING,0,NULL); 关闭串行端口比较简单,调用CloseHandle函数就能关闭一个打开的串行端口。CloseHandle只有一个参数,即调用CreateFile函数打开端口时返回的句柄,方法如下: CloseHandle(hPort); 2.2读写串行端口 正如使用Creat
7、eFile打开串行端口一样,可以使用ReadFile和WriteFile函数来读写串行端口。假设已经调用CreateFile成功地打开了串行端口,那么只需调用ReadFile即可从串行端口读取数据: 由于WindowsCE不支持重叠的I/O操作,所以第5个参数必须设置为NULL。写串行端口也很简单。调用过程如下: 如果从主线程读、写大量的串行数据,主线程就会因为等待相对较慢的串行读或串行写操作而阻塞,不能即时处理其他的消息。因12下一页——感谢阅读这篇文章,..,此最好用单独的线程来读写串行端口。 2.3配置串行端口 读和写串行端口比较简单,但是还需要对端口配置
8、好正确的波特率、字符长度、奇偶校验、传输模式等,端口才能正确通信。可以调用I/O设备控制(IOCTL)来配置串行驱动程序,但此操作需要一些底层的知识,并且要有相应的嵌入工具包(ETK),而SDK不能实现该操作。除此之外,还有一种更简单的方法,就是调用GetmState和SetmState函数配置串行端口。由于配置端口的DCB结构内容较多,所以使用起来比较麻烦。错误地初始化DCB结构是配置串行端口常见的问题。如果一个串行通信函数没有产生预期的效果,那么错误很可能是在DCB结构体的赋值。在与单片机实现串行通信的时候,由于只用到了RS232串行
此文档下载收益归作者所有