Warm tip: This article is reproduced from serverfault.com, please click

其他-Tcl拒绝在Linux上为串行通道设置76800波特率

(其他 - Tcl refuses to set 76800 baud rate for serial channel on Linux)

发布于 2020-12-09 00:01:03

我在/ dev / ttyUSB0处有一个FTDI USB /串行设备。我建立了我的频道

% set channel [open /dev/ttyUSB0 r+]
file3
% chan configure $channel -mode "76800,n,8,1" -buffering none -blocking 0 -translation auto

对于Windows上的Tcl来说效果很好。在Linux上,波特率查询显示

% puts [chan configure $channel -mode]
57600,n,8,1

尝试以错误的波特率进行通信时,我得到了你期望的所有垃圾。我看了上一篇文章: fconfigure拒绝将波特率设置为921600 ...在Tcl源中引用一组固定的波特率。我是否可以通过增加非标准波特率来使通信在Windows和Linux下都能正常工作?

Questioner
John Peck
Viewed
11
bk2204 2020-12-09 08:13:54

Tcl拒绝将速度设置为这些值,因为底层的C函数在Linux上不支持这些波特率。实际上,这不是Tcl甚至不是你的libc,而是Linux:它支持一组固定的波特率,而76800不是其中之一。

在我的系统(Debian sid)上,可以看到POSIX指定的波特率以外的波特率/usr/include/x86_64-linux-gnu/bits/termios-baud.h该位置可能因操作系统和版本而异。

如果要使用此串行设备,则需要以其他速率对其进行配置。最接近的是57600和115200。支持的POSIX指定的最大版本是38400。