【发布时间】:2019-02-20 13:23:00
【问题描述】:
我需要通过 Raspberry Pi 3 在多点总线节点和在 Windows IoT 上运行的主进程之间建立通信。
我知道如何用 8 位字节交换数据。它的工作代码示例:
_serial_port = await SerialDevice.FromIdAsync(di.Id);
if (_serial_port == null) return false;
_serial_port.WriteTimeout = TimeSpan.FromMilliseconds(1000);
_serial_port.ReadTimeout = TimeSpan.FromMilliseconds(1000);
_serial_port.BaudRate = 9600;
_serial_port.Parity = SerialParity.None;
_serial_port.StopBits = SerialStopBitCount.One;
_serial_port.DataBits = 8;
dataWriteObject = new DataWriter(_serial_port.OutputStream);
dataReaderObject = new DataReader(_serial_port.InputStream);
dataWriteObject.WriteBytes(0xAA);
await dataWriteObject.StoreAsync();
await dataReaderObject.LoadAsync(1);
byte resp = dataReaderObject.ReadByte();
在这里,我从远程节点发送1010 1010 并接收xxxx xxxx。
问题。
- 可以说,远程节点发给我
1010 1010 1 - 假设我需要发送
1010 1010 1
代码需要是什么样的?
更新
我在考虑变通解决方案:
- 使用 UART 的parity bit。但我实际上不明白,如何。
- 使用 COM -> USB 转换器,但实际上第 9 位可能会出现同样的问题。
- 在中间使用 Adruino,它将通过 GPIO 实现 9 位 RxTx,并以我们的内部格式将数据输出到 Raspberry。
【问题讨论】:
-
解释为什么你需要解决这个问题对于获得一个好的答案非常重要。最典型的是,硬件供应商指定 9 位串行协议。美国的 NAMA 和欧洲的 EVA 就是例子,投币式自动售货机的行业组织。他们故意选择了一种格式,如果不能控制中断处理程序,就无法在软件中实现。一个错误就是功能,他们想卖给你硬件。抵抗是徒劳的,只有 3) 能让你到达任何地方,而且获得可靠的乐趣很少。
-
我的老板让我准备软件来准备谈论设备MDB协议......这就是为什么。
-
这是一个缩写词,意思是Multi Drop Bus。但是,是的,那是 NAMA 使用的,所以我的猜测可能是准确的。与老板交谈,这是购买而不是建造。
标签: .net uart windows-iot-core-10 9-bit-serial multidrop-bus