Serial port Tcl串行端口fconfigure可移植性问题

Serial port Tcl串行端口fconfigure可移植性问题,serial-port,tcl,expect,Serial Port,Tcl,Expect,我有一个Tcl/Expect程序,可以读取和写入串行端口的数据。 我在Fedora 7机器上进行了所有的开发和测试,但我现在正试图在Ubuntu 8.10中运行相同的代码,我得到了以下错误: spawn: returns {0} bad option "-mode": should be one of -blocking, -buffering, -buffersize, -encoding, -eofchar, or -translation while executing "fcon

我有一个Tcl/Expect程序,可以读取和写入串行端口的数据。 我在Fedora 7机器上进行了所有的开发和测试,但我现在正试图在Ubuntu 8.10中运行相同的代码,我得到了以下错误:

spawn: returns {0}
bad option "-mode": should be one of -blocking, -buffering, -buffersize, -encoding, -eofchar, or -translation
    while executing
"fconfigure $port -mode 19200,n,8,1"
    (file "./scan1.tcl" line 31)
我在Fedora没有问题,只有Ubuntu。看起来它不喜欢为fconfigure提供串行选项,但我不知道有什么替代方法。 这两台机器都有Tcl 8.4

以下是相关的代码片段:

#Open serial port
set portname "/dev/ttyS0"
spawn -open [set port [open $portname "r+"]];#This is a beast!
fconfigure $port -mode 19200,n,8,1

有人知道怎么了吗?谢谢你的帮助

一些研究似乎表明,[fconfigure]命令在无法识别所讨论的通道是否为真正的串行端口时(尽管我在文档中没有看到这一点)不提供-mode开关。最终,该决定似乎依赖于“isatty()”系统调用,该调用显然未能将通道报告为TTY。更多信息可在此处找到:

根据上面的线程,这可能是由于配置错误的Tcl

更新。。。我看到串行配置选项(包括-mode)是用[open]命令记录的。在这里,它提到[fconfigure]可用于查询或设置特定于串行端口的附加选项。[fconfigure]文档可能也应该更新以反映这一事实


总之,Tcl并不认为您的端口在Ubuntu下是串行端口,尽管我不知道为什么…

可能是一个bug。这是过去的事了


找到了答案,但您的评论帮助我发现我所在的系统实际上没有串行端口…:)