Windows CE.NET 4.2下的串行通信技术讲解

Windows CE.NET 4.2下的串行通信技术讲解,第1张

在工业控制中,常需要将单片机采集到的数据传送给PC机处理、显示,并且根据处理结果给单片机发送控制命令。串行通信虽然传送速度相对较慢,但是传送成本低,对实现监视和控制,具有足够的带宽,并且没有过于复杂的编解码,实现自定义的协议也不复杂,因而在工业自动化、通信和军事等领域的应用十分广泛。随着Windows CE嵌入式 *** 作系统在工业控制中的广泛应用,设计和实现Windows CE下PC与单片机的串行通信具有重要的意义。

1WindowsCE.NET4.2简介

Windows CE 是一个面向移动计算和嵌入式应用的 *** 作系统,其突出优点是模块化、可定制性、完备性、实时性、通信能力强大和基于Win32应用程序编程接口。 Windows CE.N ET 4.2是为嵌入式市场重新设计的Windows CE 3.0的后继产品,为快速建立下一代智能移动和小内存占用的设备提供了一个健壮的实时 *** 作系统。他包括创建一个基于定制设备的Wi ndows CE所需的一切。

2Windows CE.NET 4.2下的串行通信技术

(1)Windows CE只支持UnICode字符集,在编程时必须特别注意。

(2) Windows CE不支持重叠的I/O *** 作。

2.1打开和关闭串行端口

在所有的流设备驱动程序中,均使用CreateFile来打开串行端口设备,如果这个端口不存在,CreateFile返回 ERROR_FILE_NOT_FOUND。因此,用户指定的端口必须是存在并且可用的,而且要遵循Windows CE流接口设备驱动程序的命名规则,即COM后接要打开的端口号再紧跟一个冒号。
    HANDLE hPort = CreateFile (_T("COM1:"), 
    GENERIC_READ|GENERIC_WRITE, 0,NULL,
    OPEN_EXISTING,0,NULL);

关闭串行端口比较简单,调用CloseHandle函数就能关闭一个打开的串行端口。CloseHandle只有一个参数,即调用CreateFile函数打开端口时返回的句柄,方法如下:

CloseHandle (hPort);

2.2读写串行端口

正如使用CreateFile打开串行端口一样,可以使用ReadFile和WriteFile函数来读写串行端 口。假设已经调用CreateFile成功地打开了串行端口,那么只需调用ReadFile即可从串行端口读取数据:

由于Windows CE不支持重叠的I/O *** 作,所以第5个参数必须设置为NULL。写串行端口也很 简单。调用过程如下:

如果从主线程读、写大量的串行数据,主线程就会因为等待相对较慢的串行读或串行写 *** 作而阻塞,不能即时处理其他的消息。因此最好用单独的线程来读写串行端口。

2.3配置串行端口

读和写串行端口比较简单,但是还需要对端口配置好正确的波特率、字符长度、奇偶校验、传输模式等,端口才能正确通信。可以调用I/O设备控制(IOCTL)来配置串行驱动程序,但此 *** 作需要一些底层的知识,并且要有相应的“嵌入工具包”(ETK),而SDK不能实现该 *** 作。除此之外,还有一种更简单的方法,就是调用GetCommState和SetCommState函数配置串行端口。由于配置端口的DCB结构内容较多,所以使用起来比较麻烦。错误地初始化 DCB结构是配置串行端口常见的问题。如果一个串行通信函数没有产生预期的效果,那么错误很可能是在DCB结构体的赋值。在与单片机实现串行通信的时候,由于只用到了RS 232串行口的RXD,TXD和GND三个引脚,而其他的引脚均舍弃不用,所以DCB的成员变量应该如下设置,否则不能正常通信:

Windows CE.NET 4.2下的串行通信技术讲解,Windows CE.NET 4.2下的串行通信技术讲解,第2张

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2646426.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-12
下一篇 2022-08-12

发表评论

登录后才能评论

评论列表(0条)

保存