【问题标题】:9bit serial with .NET9 位串行与 .NET
【发布时间】: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。

问题。

  1. 可以说,远程节点发给我1010 1010 1
  2. 假设我需要发送1010 1010 1

代码需要是什么样的?

更新

我在考虑变通解决方案:

  1. 使用 UART 的parity bit。但我实际上不明白,如何。
  2. 使用 COM -> USB 转换器,但实际上第 9 位可能会出现同样的问题。
  3. 在中间使用 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


【解决方案1】:

SerialDevice.Parity 用于错误检查而不是数据传输。并且应用程序无法访问该位。

使用两个字节进行 9 位传输。

发送部分:

dataWriteObject.WriteBytes(new byte[] { 0b10101010, 0b10000000});

接收部分:

                byte[] data = new byte[2] { 0, 0 };
                dataReaderObject.ReadBytes(data);
                int data1 = data[0];
                int data2 = data[1];
                data1 = data1 << 1;
                data2 = data2 >> 7;
                int data3 = data1 | data2;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 2018-03-04
    • 2022-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多