0

我有一个 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

有谁知道出了什么问题?谢谢你的帮助!

4

2 回答 2

1

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

http://groups.google.com/group/comp.lang.tcl/browse_thread/thread/ea0e772c59fa1e52/949c04fe4cebc2a3?q=fconfigure+mode+group:comp.lang.tcl#949c04fe4cebc2a3

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

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

底线,Tcl 不认为你的端口真的是 Ubuntu 下的串口,虽然我不知道为什么......

于 2009-09-23T21:18:57.460 回答
0

可能是一个错误。它已经过去了。

http://sourceforge.net/tracker/?func=detail&atid=110894&aid=218617&group_id=10894

于 2009-09-23T21:23:44.400 回答