问题应该是出在这句:
bytesRead = serialPortRead(BRecieve, 0, bytesToRead);
楼上的说法有点意思,但是不完全透彻。
其实问题在于串口返回数据时,它返回的速度可能不会太快,而程序执行是非常快的。
也就是说,当执行到Read语句时,串口根本没来得及返回那么多的数据,如你说的,只返回了9个字节。即便你指定bytesToRead大小也没有用。
解决办法:只能通过控制代码来实现你想要的功能,我认为有两种方案可供使用:
一、设置一个大小为59的缓存,写一个while循环,只有从串口读满59个字节的数据时才退出while循环,否则继续读取。
二、思想跟第一种类似,只是不写while循环,利用调用函数思想,当存满59个字节时,返回true,否则返回false,继续读取串口数据。
希望对楼主有用。
首先是@SuppressWarnings
也就是如果你不加这个
你的程序会报**的警告信息,加了这个可以忽略这个警告
("serial")
是序列化警告,当实现了序列化接口的类上缺少serialVersionUID属性的定义时,会出现**警告。可以使用@SuppressWarnings将警告关闭
以上就是关于C# serialport类编写串口通信程序,无法接收全部数据!全部的内容,包括:C# serialport类编写串口通信程序,无法接收全部数据!、java程序中加入@SuppressWarnings("serial")是什么意思、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)