In my 持续的探索 https://stackoverflow.com/q/5504716/50151为了与一些旧设备连接,我发现供应商提供的软件将特殊字符设置为:
00 00 00 00 11 13
但 .NET 的 SerialPort 类将它们设置为:
1A 00 00 1A 11 13
我想我有两个问题:
- 这些字节是什么意思?
- 如何告诉 SerialPort 使用一组特定的特殊字符?
我真正关心的是后者,但我怀疑了解前者会很有用。
Update:以下不起作用:
byte[] specialchars = {
0x00,
0x00,
0x00,
0x00,
0x11,
0x13
};
this.port.NewLine = System.Text.Encoding.ASCII.GetString(specialchars);
更新2:根据要求,这里是 Portmon 日志供应商提供的应用程序 http://tdwright.co.uk/minibird_filtered.log(过滤以删除数千个 IOCTL_SERIAL_GET_COMMSTATUS 条目)和我尝试匹配第一次交换 http://tdwright.co.uk/myapp.log.
NewLine
不是您要找的。这是普通的旧“新行”序列,例如CR LF 或单独 LF。
特殊字符的处理如下:
- EOF — 设置为 0x1a,您无法在 .NET 中更改它
- 错误 — 设置为SerialPort.ParityReplace http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.parityreplace.aspx
- BRK — 不知道
- EVT — 设置为 0x1a,您无法在 .NET 中更改它
- XON — 设置为 0x11,您无法在 .NET 中更改它,并且它通常不会生成 sesn
- XOFF — 设置为 0x13,您无法在 .NET 中更改它,并且它通常不会生成 sesn
学习一下也许对你有帮助Win32 DCB结构 http://msdn.microsoft.com/en-us/library/aa363214%28v=vs.85%29.aspx以及。 .NET 在内部使用它来设置串行端口的状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)