我知道9-bit串行通信可以在Linux中使用奇偶校验位。
还有一些Linux版本提供了MARK/SPACE parity mode,这样我就可以轻松地设置奇偶校验位。
但是我知道,这个MARK/SPACE parity mode不是一个Linux标准,所以Linux可能不支持这种模式。
如何检查我使用的Linux是否支持该模式?
我需要做一些代码和测试吗?
我想知道没有这些额外的工作。
有没有类似于检查配置信息或内核源代码的方法?
而且,如果Linux不支持MARK/SPACE parity mode,有什么方法可以让它支持吗?
实际上,在ubuntu12.04中,它是受支持的,但是当我用ubuntu14.04尝试时,它似乎不支持当我测试。(对于ubuntu14.02是在embedded中使用lxde )
==================EDIT=====================
这里的MARK/SPACE parity位意味着如果我可以使用termios标志CMSPAR的9位.
以及如何检查此标志是否可用于9位通信。如果不是,任何激活这个功能的方法。
否则,我必须检查我发送的每个字节的奇偶校验,然后更改奇偶校验模式以使用9位。
但是,如果我可以使用CMSPAR标志,我只是将PARODD设置为与CMSPAR一起设置奇偶校验位,而不管我发送的数据是什么。
而公司表示硬件支持9位。
这是MARK/SPACE parity上的描述。
发布于 2016-03-04 07:14:45
标记奇偶等于发送两个塞位( CSTOPB),因为塞位是与数据/奇偶校验比特长度相同的逻辑1(负线路电压)。
空间奇偶校验是计算要发送的字节的奇偶校验,然后在发送之前选择将导致其逻辑0的奇偶校验方法。
因此,最好通过将位9设置为0(而不是1)来指示发送的字节是地址(因为将其设置为0比将其设置为1需要花费更多cpu周期),因此最好将寻址(这是最有可能使用的东西),因此只需在中间对所有数据有效负载使用1,而在更改寻址单元的几次时使用0。
接收可以在任何硬件上以与linux兼容的方式进行。但是,当第9位(=奇偶校验bit=first out 2 stop位)为逻辑0时,它将可能的地址限制在那些产生奇偶校验错误的地址上。
因此,如果具有标准硬件的linux盒也是侦听器,而不仅仅是发送数据,则总线上最多可以有128个地址(设备组)。
CMSPAR作为记录,似乎并不是任何实际标准的一部分。(但话又说回来,其他大部分的白蚁也没有.在这些年之后,linux仍然不能完成30年前使用程序集在dos中实际硬件所能完成的一半事情),即使是这样也是紧张和被窃听的(要求同步()或O_SYNC在一个可接受的时间框架内处理,不能设置非标准的波德率等等)。但是嘿。回到内核支持您的usb 3咖啡杯支架。远比rs232和以太网更重要。
https://stackoverflow.com/questions/29850748
复制相似问题