如何在.NET串行端口上设置ReadBufferSize

时间:2015-12-16 04:31:43

标签: c# vb.net serial-port

所以,我正在创建一个监听串口的VB.NET程序。我正在使用这个

Dim WithEvents ptr_SerialPort As System.IO.Ports.SerialPort
...
 ptr_SerialPort = My.Computer.Ports.OpenSerialPort(serialportname, baudrate,parity, databits, stopbits)

工作正常,直到我意识到我超出了我的SerialPort.ReadBufferSize属性,即4096,并且丢失了数据:

https://msdn.microsoft.com/en-us/library/system.io.ports.serialport.readbuffersize(v=vs.110).aspx

所以我试着按如下方式增加缓冲区的大小

ptr_SerialPort = My.Computer.Ports.OpenSerialPort(serialportname, baudrate, parity, databits, stopbits)
ptr_SerialPort.ReadBufferSize = 2000000

但是我收到错误"在打开"时无法设置缓冲区大小。这是合理的,所以我尝试了这个:

ptr_SerialPort = New System.IO.Ports.SerialPort(serialportname, baudrate, parity, databits, stopbits)
ptr_SerialPort.ReadBufferSize = 2000000
ptr_SerialPort.Open()

好吧,这导致串口不接收数据......我猜My.Computer.Ports.OpenSerialPort不仅仅是实例化它,而我上面提到的是一个不是的串口对象连接到我的硬件。所以,我的问题是......如何在我的电脑上打开串口,指定ReadBufferSize属性?

非常感谢!

1 个答案:

答案 0 :(得分:1)

嗯,奇怪的是

ptr_SerialPort = New System.IO.Ports.SerialPort(serialportname, baudrate, parity, databits, stopbits)
ptr_SerialPort.ReadBufferSize = 2000000
ptr_SerialPort.Open()

现在正在运作......所以这是完成它的方法。它一定是一些间歇性的问题,另一方面欺骗了我。谢谢你的回答,抱歉花时间。