当前位置: 代码迷 >> PB >> 读取COM口数据遇到0X00,则无法继续读取
  详细解决方案

读取COM口数据遇到0X00,则无法继续读取

热度:15   发布时间:2016-04-29 07:32:13.0
读取COM口数据碰到0X00,则无法继续读取
在读取COM口数据的时候,如果COM口送过来的数据出现0X00,则后面的数据无法读取,比如送过来的数据是:
23 B5 08 00 AC 26,那么我接收到的数据只有23 B5 08,后面的数据则无法获取。

程序采用的是winapi方式读取串口数据,打开串口采用CreateFileA函数,查了一些资料,是否是串口设置的问题,也就是对dcb结构的设置,但我不知道怎么设置才不会对0X00作为接收的结束字符。

本人是PB新手,接手一个读写多路串口数据的接口程序,请高手指教,谢谢!
------解决方案--------------------
如果使用串口控件,则可以试试用二进制方式接收
ole_1.Object.InputMode = 1 
使用api的话
dcb lst_dcb
声明后,加上
lst_dcb.fbinary = 1

以上代码没有试过,你自己试试

------解决方案--------------------
引用:
可以运行,但我把string(ls_buff)后,无数据,是我转换出了问题?如何将bolb转换为string显示呢?

你获得的blob中间有00的字节,这样的数据流本身就不是一个字符串,字符串中是不能有00字符的,你要强制转换成字符串那是不可能成功的。如果一定要显示出这个数据流的内容,那么建议显示出该数据流的16进制编码。