Serialport readbyte没有获得正确的数据

时间:2015-01-30 06:54:54

标签: c# vb.net visual-studio-2010 serial-port

我正在VB.net中编写软件,以便与外部设备通过modbus进行通信 我在读取从设备收到的数据时遇到问题,举例来说,使用sp1.ReadByte()从设备发送的数据是:

05-03-04-00-00-01-9F-FE-0B

更新:读取我使用此代码的数据

Dim reponse As Byte() = New Byte(5 + (2 * nombre_registrre - 1)) {}

        For i As Integer = 0 To response.Length - 1

         response(i) = CByte(genvision.sp1.ReadByte())

        Next

但收到此

05-03-04-01-9F-FE-0B

我想逐字节读取它,即使是那些00 00,

非常感谢你的帮助

2 个答案:

答案 0 :(得分:2)

尝试:

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
  byte[] array = new byte[256];
  int i = 0;
  while (serialPort1.BytesToRead > 0)
  {
    array[i]=serialPort1.ReadByte();
    i++;
  }
}

修改 对不起,我被C#标签驱逐了!你必须在下次更精确,P.S我不知道如何在VB中制作它但它应该没有太大的不同

答案 1 :(得分:1)

问题解决了,问题是:sp1.DiscardNull = true,

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

非常感谢你的帮助