Windows API串口编程

本文总结了Windows API串口编程的关键点,包括同步和异步操作方式以及读串口的超时控制方法。重点讲述了如何使用SetCommTimeouts函数设置超时,并通过GetOverlappedResult或WaitForSingleObject进行超时等待。还提及了服务端程序使用WaitCommEvent的情况,以及根据报文格式设计读取函数的策略。
摘要由CSDN通过智能技术生成

最近一个项目才把Windows下如何用API来进行串口操作了解的比较清楚,现在总结几个关键点。其中主要是总结超时控制,整个串口操作的过程可以参考MSDN的“Serial Communications in Win32”。

一 同步操作方式和异步操作方式

所谓同步和异步,是指是否会阻塞操作串口的线程,同步会阻塞,异步不会阻塞,所以异步又叫重叠,也就是串口操作在后台进行,程序后面的语句可以和串口操作重叠执行。同步和异步,与整个程序是否是多线程无关,只会影响到进行串口操作的线程。

二 读串口的超时控制方法

异步方式读串口的超时控制的关键点:

1. 用SetCommTimeouts函数设置串口超时时间。

该函数第二个参数是指向COMMTIMEOUTS结构的指针,该结构各个成员的设置是超时控制的关键,说明如下:

  typedef   struct   _COMMTIMEOUTS   {    
  DWORD   ReadIntervalTimeout;   //   各个字符之间的读间隔超时。收到第1个字符之后该超时才生效。如果超时之后没收到第二个字符,串口读操作将结束。   
  DWORD   ReadTotalTimeoutMultiplier;   //   读时间系数  
  DWORD   ReadTotalTimeoutConstant;   //   读时间常量。总超时 = 要读取的字节数 x 读时间系数 +   读时间常量。
  DWORD   WriteTotalTimeoutMultiplier;   //   写时间系数  
  DWORD   WriteTotalTimeoutConstant;   //   写时间常量  
  }   COMMTIMEO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值