频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Windows CE.NET 4.2下PC与单片机的串行通信

来源: 作者: 出处:巧巧读书 2007-10-09 进入讨论组

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

  串行端口在Windows CE.NET 4.2(以下简称Windows CE)下属于流接口设备,他是串行设 备接口常规I/O驱动程序的调用与通信相关的具体函数的结合。串行设备被视为用于打开、关闭和读写串行端口的常规的可安装的流设备。Windows CE的串口函数和Windows的串口函数基本相同,但有几点值得注意:

  (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.NET 4.2下PC与单片机的串行通信(图一)

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

Windows CE.NET 4.2下PC与单片机的串行通信(图二)

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

  2.3配置串行端口

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

静态页面:http://www.qqread.com/dotnet/j347929.html 更多文章 更多内容请看Windows操作系统安装Windows权限设置Windows操作系统安全集专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章