VB.net串口相关概念-1101

心不动则不痛 提交于 2020-01-25 10:42:39

SerialPort

(1)

bytesRead = serialPort.Read(BRecieve, 0, bytesToRead);
楼上的说法有点意思,但是不完全透彻。
其实问题在于串口返回数据时,它返回的速度可能不会太快,而程序执行是非常快的。
也就是说,当执行到Read语句时,串口根本没来得及返回那么多的数据,如你说的,只返回了9个字节。即便你指定bytesToRead大小也没有用。
解决办法:只能通过控制代码来实现你想要的功能,我认为有两种方案可供使用:
一、设置一个大小为59的缓存,写一个while循环,只有从串口读满59个字节的数据时才退出while循环,否则继续读取。
二、思想跟第一种类似,只是不写while循环,利用调用函数思想,当存满59个字节时,返回true,否则返回false,继续读取串口数据。

你可以在接受字节的程序开始时延迟等待一会,这个时间要根据数据长短不同进行调节。这是最笨的方法。楼主可以试试ReadLine()或者ReadTo()方法。

如果你收到的数据是固定字节数就简单了,直接设置ReceiveByteThreshold属性为你接收的字节数就可以了。

(2)SerialPort.ReadLine方法

Visual Basic(声明)
Public Function ReadLine As String

用法
Dim instance As SerialPort
Dim returnValue As String

returnValue = instance.ReadLine()

返回值

类型:System..::.String

输入缓冲区中直到首次出现 NewLine 值的内容。

--------------------------------------------------------------------

NET框架 

.NET Framework是一个革命性的平台,可以帮助你编写以下类型的应用:

  • Windows应用程序

  • Web应用程序

  • 网页服务

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!