我有一个使用串行通信连接外部协议的应用程序.
我需要知道唤醒位是否在它发送给我的每个数据包上设置(9位),并且通信速率必须低于40ms,并且必须在20 ms内发送响应.该框架封装从端口读取的位,并仅向我发回8位数据.此外,由于调整问题,我不能等待奇偶校验错误事件.
我需要知道如何读取9位,或者是否有http://www.wcscnet.com/CdrvLBro.htm的免费替代方案
RS-232通信有时使用9位字节.这可用于与总线上的多个微控制器通信,其中8位是数据,而额外位表示地址字节(而不是数据).非活动控制器仅为地址字节生成中断.
Linux程序可以通过串行设备发送和接收9位字节吗?怎么样?
我有一个 netcore 应用程序,它打开串行端口,并在检测到奇偶校验错误后在控制台上写入“奇偶校验错误”。它在 Windows 10 中工作正常,但无法在 Linux 下工作。
我的假设是操作系统没有将奇偶校验错误传递给 netcore。
为了检查端口设置,我运行:
stty -D /dev/ttyS0 -ignpar inpck
Run Code Online (Sandbox Code Playgroud)
然后我跑:
stty -D /dev/ttyS0 -a
Run Code Online (Sandbox Code Playgroud)
并且设置似乎已按预期正确设置(-ignpar inpck)。
然后我运行我的 netcore 3 应用程序,但未检测到奇偶校验错误。
所以我跑
stty -D /dev/ttyS0 -a
Run Code Online (Sandbox Code Playgroud)
用于验证设置,但这些似乎已重置(-ignpar -inpck)
如何强制我的应用程序在启用 inpck 属性的情况下运行?
有没有办法让inpck默认启用?
谢谢。
更新:netcore 3 应用程序奇偶校验错误检测在 Windows 10 中工作正常,但在 Linux 下不起作用。我的假设是: