首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.NET的9位串行

使用.NET的9位串行
EN

Stack Overflow用户
提问于 2019-02-20 13:23:00
回答 1查看 323关注 0票数 0

我需要建立多点总线节点与运行在Windows 3上的IoT主进程之间的通信。

我知道如何用8位字节交换数据。它的工作代码示例:

代码语言:javascript
复制
_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的奇偶校验位。但我真的不明白怎么会。
  2. 使用COM -> USB转换器,但实际上也会出现9位相同的问题。
  3. 使用中间的Adruino,它将在GPIO上实现RxTx 9位,并以我们的内部格式将数据输出到Raspberry。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-21 06:25:49

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

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

发送部分:

代码语言:javascript
复制
dataWriteObject.WriteBytes(new byte[] { 0b10101010, 0b10000000});

接收部分:

代码语言:javascript
复制
                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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54787381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档