用API写了个串口的类,封装在win32的DLL里面问题在为什么我接收的时候是分段接收的(8个字符一段)???
由于分段接收,我的程序无法获得正确的字符串,而且接收的字符串末尾都没有结束符('\0')的。曾经用MSCOMM写的小程序中,它接收的时候如果分段接收的话。前面几段字符串是没有结束符的。而最后一段有结束符,这样我还好判断一下。可是API的接收却没有结束符的。曾用串口调试助手接收我发送的字符串,但串口调试助手却能不分段接收,不知道它又作了什么相应的判断在上面。急求解决思路!!!

解决方案 »

  1.   

    仔细调整一下你的Commtimeouts结构吧!当然这也不是最好的解决手段。如果你能决定协议,最好是如上面的兄弟所说,要有帧头、帧尾标识字节。这里有一个我的网友师傅的一段话:
    ……我收到许多来信,都问我为什么Read函数只读几个字节 ,我都快被问晕了。……这是很基本的通讯问题,因为通讯中传输需要时间,当你选择异步模式时你应该注意,这时候Read函数是非阻塞状态,意味着Read函数会迅速扫描缓冲区,把缓冲区里的字节读出来,这时候缓冲区里有多少字节就读多少字节,字节的多少取决于通讯速度与你计算机速度,你通讯越快,读得越多,计算机越快读得越少,这个容易理解吧。……