相关疑难解决方法(0)

如何在Linux上设置自定义波特率?

我希望通过Linux上的串口与具有非标准波特率的设备进行通信termios.h.

我尝试了这篇文章中的"波特率别名"方法,但是当我执行我的C程序(我把它命名为"testprogram")时,Linux说"testprogram sets custom speed on ttyS0. This is deprecated."

我在Google上进行了一些搜索,似乎还有另一种(更新的?)方法将波特率更改为非标准值:在http://sourceware.org/ml/libc-help/2009-06 /msg00016.html笔者说,c_flagstruct termios必须进行OR操作BOTHER (=CBAUDEX | B0).使用这种方法,波特率直接设置在c_ispeed和 - 的c_ospeed成员中struct termios.但是,我不知道如何在我的C程序中使用此方法.就像作者所说,BOTHER当我包含时没有定义/可用termios.h,那么应该采取什么方式来设置波特率?

如何在不更改内核的情况下将波特率设置为非标准值?

linux serial-port baud-rate

34
推荐指数
4
解决办法
9万
查看次数

Uart 16c950 linux速度高于B4000000(4Mbps)

大家好,我正在使用Ubuntu下的高速RS422 pci板(OXPCIe958).该设备可以工作高达15Mbps.我需要以10Mbps的速度工作,但我注意到在Linux下,如果我们使用termois,可以指定的最大速度是B4000000(4 Mbps).

有没有办法在linux中指定自定义波特率?我试图改变termois.h中的值:

#define  B1152000 0010011
#define  B1500000 0010012
#define  B2000000 0010013
#define  B2500000 0010014
#define  B3000000 0010015
#define  B3500000 0010016
#define  B4000000 0010017 --> by default this is the last value

#define  B4500000 0010018   --> Added
#define  B5000000 0010020   --> Added
//#define __MAX_BAUD B4000000 --> Default value
#define __MAX_BAUD B10000000
Run Code Online (Sandbox Code Playgroud)

但改变不起作用.我无法理解分配给BXXXXXX的值的含义!!

该设备本机在Linux上运行,不必指定驱动程序.查看器件的数据表,我看到要指定目标波特率,我们必须设置一些寄存器来改变预分频器,锁存器除数和采样时钟.

根据数据表,tha baund率由下式给出:

Baundrate = inputclok /(sampleClock*divisor*prescaler)

有没有办法在linux下设置这个寄存器?驱动程序位于8250.c和8250_pci.c中

提前致谢

c linux termios uart

6
推荐指数
1
解决办法
1628
查看次数

Debian/Raspberry Pi上非标准波特率的C代码

我正在使用只能以非标准波特率625000运行的硬件设备.

我需要通过USB端口连接到该设备并从中读取和写入数据.因此,我一直在尝试开发一个小C程序,这将允许我这样做.但是,这段代码需要在Linux环境(Debian/Raspian)中工作,不幸的是我的Linux技能只是基本的.

因此,我希望有人可以用最简单的术语向我解释(代码示例会很棒!)我如何在Linux上设置625000的非标准波特率,连接到我的硬件设备(ttyUSB0),然后写一个比特流到设备(0x02 0x01)并从中读取它返回的7个字节.

我已经看过以下Stack Overflow问题了:

和别的...

但是,我的Linux知识漏洞对我来说太大了,无法建立必要的连接.我该怎么做?

c linux baud-rate

4
推荐指数
1
解决办法
4073
查看次数

标签 统计

linux ×3

baud-rate ×2

c ×2

serial-port ×1

termios ×1

uart ×1