【发布时间】:2017-04-12 07:19:48
【问题描述】:
我有一台设备通过串行端口提供不可打印字符的数据。我通过使用编码(获取数据的字节数组)然后使用 BitConverter.ToString()(获取十六进制字符串)将数据转换为十六进制。但是我在 Real Term(TCP 终端)中得到了相同数据的不同十六进制值。我需要以实数形式出现的价值。我该怎么办? 例如:数据 - “\t\0î\0\0\u0098$VeW”, 我的十六进制 - 0900EE00003F24566557, 实值 - 0900EE00009824566557。 我尝试了所有类型的编码。 代码:-
public void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(10);
string recievedData = port.ReadExisting();
}
【问题讨论】:
-
听起来你应该从串口读取二进制数据。您使用的是哪个 API,您确定它不能只读取原始字节吗?
-
我通过串行端口的 DataReceived 事件接收数据,我将数据作为字符串获取。
-
请显示代码 -
DataReceived事件似乎并没有真正为您提供字符串本身。有什么阻止您使用Read(byte[], int, int)方法?如果您将代码包含在问题中,帮助您会更容易...... -
对。不要调用
ReadExisting- 调用接受字节数组的Read方法。