获得不同的十六进制值

时间:2017-04-12 07:19:48

标签: c# winforms

我有一台设备通过串口提供不可打印字符的数据。我通过使用Encoding(获取数据的字节数组)然后使用BitConverter.ToString()(以获取Hex字符串)将数据转换为Hex。但我在Real Term(TCP终端)中获得相同数据的不同十六进制值。我需要实际价值。我该怎么办? 例如:数据 - “\ t \ 0”\ 0 \ 0 \ u0098 $ VeW“, 我的hex- 0900EE00003F24566557, 在实际期限 - 0900EE00009824566557。 我尝试过所有类型的编码。 代码: -

public void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    Thread.Sleep(10);
    string recievedData = port.ReadExisting();
}

1 个答案:

答案 0 :(得分:0)

问题在于您尝试读取二进制数据,就好像它的文本一样。请勿使用ReadExisting()来电 - 使用Read(byte[], int, int)

public void HandleDataReceived(object sender, SerialDataReceivedEventArgs e)
{        
    byte[] data = new byte[port.BytesToRead];
    int bytesRead = port.Read(data, 0, data.Length);
    if (bytesRead != data.Length)
    {
        throw new IOException("Unable to read advertised number of bytes");
    }
}