1. 连续两次发生EV_RXCHAR字符到事件的时间间隔如何计算,是不是仅与波特率有关?2. 当辅助线程监视到有字符到事件,并且向主线程发送字符到消息时,主线程会在何时处理该消息?是一收到就处理该消息吗?3. ReadFile一次最多能从缓冲区读取多少个字符?我看程序时在调用ReadFile前,会设定从缓冲区读取的字节数min(ReadNum,Comstat.cbinque),为什么?4. 是不是发n个字符,就会有n次EV_RXCHAR事件,同样也会向主线程触发n次字符到消息?5. 当进行异步I/O串口操作时,可能要多次调用ReadFile从接收缓冲区中读取数据,那么第二次调用ReadFile时如何确定从缓冲区的什么位置(偏移量)开始读取。6. MSDN中说OVERLAPPED结构中的Offset和OffsetHigh成员在进行串口操作时被忽略,可是我在一本资料中看到第二次调用ReadFile时设置rd_os.offset=NumberOfread(第一次成功从串口读取的字节数),到底是怎么回事?7. 当第一次监视到有字符到时,在主线程中使用ReadFile读取数据,然后再进行一系列比较、存取等操作之后(在主线程中完成),再次回到端口监视状态时,接收缓冲区中会有多少字符(假设设备一直向端口发送数据)?如何计算主线程中对字符到事件处理所需的时间?注:以上程序均用Win API函数编写。

解决方案 »

  1.   

    taojingtao.cnblogs.com 我的博客有个封装好的串口类, 你可以看下。
      

  2.   

    1.Yes
    2.看你使用发送消息的函数,SendMessage:立即处理;PostMessage:立即返回
    3.缓冲区的最大尺寸,他可以设置。看看串口的属性即可知道。
    4.不一定,触发一次事件能读取很多字符。
    5.那是系统自己的事不用你管。
    6.好好看看你的资料,可能理解有误或者就是他错了。串口数据读出来之后不会还在他的缓冲区内
    7.字符的个数不好说,根据你的发送速度决定.GetTickCount