我需要在Raspberry Pi 3上的Windows IoT上运行的Multidrop总线节点和主进程之间建立通信。
我知道如何用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
代码需要什么样?
更新
我考虑解决方法:
答案 0 :(得分:0)
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;