termios.h 中的波特率限制是多少?
What is the baudrate limit in the termios.h?
这是我一直在使用的用于与微控制器接口的串行程序中的一小段代码。该代码已被验证可以工作,但我想添加全局定义以使代码更加模块化。显示的摘录有效,直到我将 'cfsetispeed' 中的 'B1000000' 替换为全局 'BAUDRATE'.
// Globals
struct termios tty;
char BAUDRATE = B1000000; // 1,000,000
// All of the other details omitted ( int main (), etc. )
cfsetospeed (&tty, BAUDRATE);
cfsetispeed (&tty, B1000000);
所以想到两个问题:
1) 我读到 Termios 只允许 select 波特率,the max listed 是 230,400。怎么允许100万?
2) 为什么 cfsetispeed( ) 不允许将全局字符定义作为参数?
- Termios 接受波特率作为位标志,但有 other baud rates available to the speed_t structure in termbits.h (linked code for kernel v5.3.11) 未在 man7 页面上列出或 linux.die.net 范围从 460800 到 4000000。
编辑:之前的 link 提供已失效,我设法在较新版本中找到了等效项,所以这里是摘录以防它再次失效:
#define CBAUDEX 0010000
#define BOTHER 0010000
#define B57600 0010001
#define B115200 0010002
#define B230400 0010003
#define B460800 0010004
#define B500000 0010005
#define B576000 0010006
#define B921600 0010007
#define B1000000 0010010
#define B1152000 0010011
#define B1500000 0010012
#define B2000000 0010013
#define B2500000 0010014
#define B3000000 0010015
#define B3500000 0010016
#define B4000000 0010017
- cfsetispeed 接受 speed_t 类型的波特率。 speed_t 被类型定义为 termbits.h 中 "unsigned int" 类型的对象,它比您传入的字符大(32 位对 8 位)。
这是我一直在使用的用于与微控制器接口的串行程序中的一小段代码。该代码已被验证可以工作,但我想添加全局定义以使代码更加模块化。显示的摘录有效,直到我将 'cfsetispeed' 中的 'B1000000' 替换为全局 'BAUDRATE'.
// Globals
struct termios tty;
char BAUDRATE = B1000000; // 1,000,000
// All of the other details omitted ( int main (), etc. )
cfsetospeed (&tty, BAUDRATE);
cfsetispeed (&tty, B1000000);
所以想到两个问题:
1) 我读到 Termios 只允许 select 波特率,the max listed 是 230,400。怎么允许100万?
2) 为什么 cfsetispeed( ) 不允许将全局字符定义作为参数?
- Termios 接受波特率作为位标志,但有 other baud rates available to the speed_t structure in termbits.h (linked code for kernel v5.3.11) 未在 man7 页面上列出或 linux.die.net 范围从 460800 到 4000000。
编辑:之前的 link 提供已失效,我设法在较新版本中找到了等效项,所以这里是摘录以防它再次失效:
#define CBAUDEX 0010000
#define BOTHER 0010000
#define B57600 0010001
#define B115200 0010002
#define B230400 0010003
#define B460800 0010004
#define B500000 0010005
#define B576000 0010006
#define B921600 0010007
#define B1000000 0010010
#define B1152000 0010011
#define B1500000 0010012
#define B2000000 0010013
#define B2500000 0010014
#define B3000000 0010015
#define B3500000 0010016
#define B4000000 0010017
- cfsetispeed 接受 speed_t 类型的波特率。 speed_t 被类型定义为 termbits.h 中 "unsigned int" 类型的对象,它比您传入的字符大(32 位对 8 位)。