我用的是Remon Spekreijse编写的多线程控制串口类,每次收到一个字符就触发一个WM_COMM_RXCHAR消息,我在父窗口里处理WM_COMM_RXCHAR这个消息就行!然后循环再读一个字符!
不过,来的时候是一个字符串,我想处理这个字符串,不知道何时收全字符串。请问如何判断收完了?
我试过判断缓冲区为空的方法,不过每次读完了一个字符后,缓冲区就空了。在等待接受下一个字符,然后再产生WM_COMM_RXCHAR消息,所以好像不好使!

解决方案 »

  1.   

    采用RXCHAR的方式时,没收到一个字符就把它从串口的输入缓冲区中取出来了。所以你去判断缓冲区肯定是不行的。要实用的话,最好采用某中协议,或者你自己在某个字符串后面加个标志,读到这个标志的时候就表示你处理的这个字符串传输完毕。其实最好不要采用一个字符接受的方式,Remon Spekreijse编写的多线程控制串口类只是在这点上举了个例子。你完全可以向串口发送一个固定长度的字符串,然后从串口读出这个固定长度的字符串,在 对这些字符串分析就可以了。
      

  2.   

    对,最好不要触发一个字符事件接收一个。BUFFER开大写。读到'\0'就肯定接收完了