在ubuntu

时间:2015-04-24 14:54:49

标签: serial-port embedded ubuntu-14.04 9-bit-serial

我知道9-bit使用奇偶校验位Linux可以进行MARK/SPACE parity mode串行通信。

有些Linux版本提供MARK/SPACE parity mode,因此我可以轻松设置奇偶校验位。

但据我所知,这个MARK/SPACE parity mode不是Linux标准,因此Linux可能不支持这种模式。

我如何检查我使用的Linux是否支持该模式?

我是否必须制作一些代码并进行测试?

我想知道没有这些额外的工作。

通过检查配置信息或内核源代码的方式吗?

而且,如果Linux不支持ubuntu12.04,有没有办法让它支持?

实际上,在ubuntu14.04中,它受到支持,但当我尝试使用ubuntu14.02时,似乎在我测试时不支持。 (如果lxde使用embedded中的MARK/SPACE parity

================== EDIT =====================

这里的

termios位意味着我可以使用带有CMSPAR标志PARODD的9位。

如何检查此标志是否可用于9位通信。 如果没有,可以采用任何方式激活此功能。

否则我必须检查我发送的偶数和奇数奇偶校验的每个字节,然后更改奇偶校验模式以使用9位。

但是,如果我可以使用CMSPAR标志,我只需设置CMSPAR将奇偶校验位设置为MARK/SPACE parity,而不管我发送的数据。

公司称硬件支持9bit。

This是关于too many output argument的说明。

1 个答案:

答案 0 :(得分:0)

标记奇偶校验与发送2个停止位(cflag CSTOPB)相同,因为停止位是逻辑1(负线电压),其长度与数据/奇偶校验位相同

空间奇偶校验是计算要发送的字节的奇偶校验的问题,然后在发送之前选择将导致其为逻辑0的奇偶校验方法。

因此,最好通过将第9位设置为0(而不是1)来指示发送的字节是一个地址(因为它需要更多的cpu周期来设置),因此

寻址(这是最常用的事情)将其设置为0;然后只使用1表示中间的所有数据有效负载,并且在几次更改寻址单元时使用0。

接收可以在任何硬件上以与Linux完全兼容的方式完成。但它限制了当第9位(=奇偶校验位= 2个停止位中的第一个)为逻辑0时产生奇偶校验错误的地址的可能地址数

因此,如果带有标准硬件的Linux机箱也是一个监听器,而不是仅仅发送数据,那么总线上最多可以有128个地址(设备组)。

另见:Is it possible to use 9-bit serial communication in Linux?

CMSPAR的记录,似乎不是任何实际标准的一部分。 (但话又说回来,其余的大部分都没有 - 令人惊讶......毕竟那些年来linux仍然无法完成30年前装配过程中实际硬件所能完成的事情的一半)甚至那就是紧张不安和bug(要求sync()或O_SYNC甚至在可接受的时间范围内处理,不能设置非标准波特率等)。但是,嘿。回到内核支持你的usb 3咖啡杯架。比rs232和以太网更重要。