gpt4 book ai didi

c# - 串行端口上的十六进制转换错误

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:38 26 4
gpt4 key购买 nike

这是一个我无法弄清楚的怪事。我非常感谢任何人提供的任何意见。

我正在尝试从 arduino 接收温度数据,通过 XBEE 无线卡连接到我的 PC。接收 XBEE 直接连接到我 PC 上的 COM8 串行端口。我有一个非常简单的 C# 程序,它使用串口类接收数据。首先从串口读取一个char

    *private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
//RxString = serialPort1.ReadExisting();
RxRead = serialPort1.ReadChar();
//RxRead = 0x13;
this.Invoke(new EventHandler(DisplayText));
}*

(忽略注释掉的部分。它们是其他实验!)。然后,使用 RxRead int 传输我在一个简单的 Web 表单上写入的数据。

    private void DisplayText(object sender, EventArgs e)
{

RxString = RxRead.ToString();
textBox1.AppendText(RxString);
textBox1.AppendText(", ");
}

它在 Web 表单上的打印效果很好。

126, 0, 125, 51, 63, 0, 125, 51, 63, 0, 64, 63, 63, 82, 63, 63, 1, 49, 57, 46, 48, 48, 13, 10 , 63,

除此之外,上述流中的两个实例 125、51 是不正确的。它们应该是十进制 19,十六进制 13。我知道是这种情况,因为协议(protocol)定义明确,我可以使用 XCTU 程序看到来自 XBEE 的十六进制数据,(见下文)

接收数据包

7E 00 13 90 00 13 A2 00 40 A6 90 52 90 9A 01 31 39 2E 31 32 0D 0A B5

- Start delimiter: 7E
- Length: 00 13 (19)
- Frame type: 90 (Receive Packet)
- 64-bit source address: 00 13 A2 00 40 A6 90 52
- 16-bit source address: 90 9A
- Receive options: 01
- Received data: 31 39 2E 31 32 0D 0A
- Checksum: B5

谁能想到为什么这个程序应该完美地接收每个字节,但每次遇到十六进制 13 时都会发出嘶嘶声? (哦,我试过使用 readbyte 而不是 readchar,它给了我同样的结果。

非常感谢收到任何想法)。

最佳答案

确保在初始化串行端口时关闭 XOn/Xoff 流控制。 0x13 对应 XOFF,即“暂停传输”,它将从您接收的流中剥离。对于之后发生的事情,我没有确切的解释,但是如果启用了 XOn/Xoff,那么您要做的第一件事就是禁用它。

关于c# - 串行端口上的十六进制转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21968253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com