c# – 如何设置序列特殊字符?

在我的
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.它在内部用于设置串口的状态.

点赞