微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

在我的 ongoing quest与一些传统设备接口时,我发现供应商提供的软件将特殊字符设置为:

00 00 00 00 11 13

但.NET的SerialPort类将它们设置为:

1A 00 00 1A 11 13

我想我有两个问题:

>这些字节是什么意思?
>我如何告诉SerialPort使用一组特定的特殊字符?

后者是我真正关心的,但我怀疑前者是有用的知道.

更新:以下不起作用:

byte[] specialchars = {
    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.它在内部用于设置串口的状态.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐