在我的
ongoing quest与一些传统设备接口时,我发现供应商提供的软件将特殊字符设置为:
00 00 00 00 11 13
但.NET的SerialPort类将它们设置为:
1A 00 00 1A 11 13
我想我有两个问题:
>这些字节是什么意思?
>我如何告诉SerialPort使用一组特定的特殊字符?
后者是我真正关心的,但我怀疑前者是有用的知道.
更新:以下不起作用:
byte[] specialchars = {
0x00,
0x00,
0x00,
0x00,
0x11,
0x13
};
this.port.NewLine = System.Text.Encoding.ASCII.GetString(specialchars);
更新2:根据要求,这里是the vendor supplied app的Portmon日志(已过滤以删除数千个IOCTL_SERIAL_GET_COMMSTATUS条目)和my attempt to match even the first exchange.
最佳答案 NewLine不是您想要的.这是普通的旧“新线”序列,例如仅CR CR或LF.
特殊字符的处理方式如下:
> EOF – 设置为0x1a,您无法在.NET中更改它
> ERR – 由SerialPort.ParityReplace
设定
> BRK – 不知道
> EVT – 设置为0x1a,您无法在.NET中更改它
> XON – 设置为0x11,你无法在.NET中更改它,它甚至通常不会生成sesn
> XOFF – 设置为0x13,你不能在.NET中更改它,它甚至通常不会生成sesn
您也可以学习Win32 DCB structure.它在内部用于设置串口的状态.