VB.NET串口接收数据不完整

rtl84723   2009-12-28 16:28 楼主
我在用VB.NET开发winsCE,在用串口通信的时候,我用代码 n = Me.SerialPort1.BytesToRead
                                           If n > 0 Then
                                               Me.SerialPort1.Read(shuju, 0, 30)
                                            end if
我定义的数组shuju是字节型的,在和PC机的串口连接之后,我在CE端用软件单步调试,监测所收到的串口数据,发现一直没有0
比如我在PC机串口调试助手中发十六进制字节数据AA AA 00 00 54
在CE端监测窗口中只有AA AA 54 ,却没有CE ,这是什么原因啊?
希望高手能指点下!

回复评论 (3)

If n > 0 Then
  Me.SerialPort1.Read(shuju, 0, 30)
end if
1.改成N>=0试试
2.把n = Me.SerialPort1.BytesToRead 这句话去掉
直接用
byte[] buffer = new byte[30]
serialPort1.Read(buffer, 0, buffer.Length);
看buffer接收的数据对不对。
点赞  2009-12-28 16:46
byte[] buffer = new byte[30] --在.net里面数组其实就是一个sub-class,所以申明方式与C++不同!
serialPort1.Read(buffer, 0, buffer.Length);

你既然能收到AA AA 54! 是不是你在接受的时候吧所以 为零的数据全部过滤掉了?

看你的接受代码是怎么样的!

上面的方法是将所有的数据放到一个buf里面然后在打印出来 在验证一下数据的正确性
点赞  2009-12-28 17:44

4楼 他妈的天使 该用户已被删除

提示: 作者被禁止或删除 内容自动屏蔽
点赞  2009-12-28 17:56
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复