我有一台设备通过串口提供不可打印字符的数据。我通过使用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();
}
答案 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");
}
}