我在/ 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下都能正常工作?
Tcl拒绝将速度设置为这些值,因为底层的C函数在Linux上不支持这些波特率。实际上,这不是Tcl甚至不是你的libc,而是Linux:它支持一组固定的波特率,而76800不是其中之一。
在我的系统(Debian sid)上,可以看到POSIX指定的波特率以外的波特率/usr/include/x86_64-linux-gnu/bits/termios-baud.h
。该位置可能因操作系统和版本而异。
如果要使用此串行设备,则需要以其他速率对其进行配置。最接近的是57600和115200。支持的POSIX指定的最大版本是38400。