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 の設定ミスが原因である可能性があります。

更新... シリアル構成オプション (-mode を含む) が [open] コマンドで文書化されているのを見ました。そこには、[fconfigure] を使用して、シリアル ポートに固有の追加オプションを照会または設定できることが記載されています。[fconfigure] ドキュメントは、おそらくその事実を反映するように更新する必要があります。

要するに、Tclはあなたのポートが本当にUbuntuの下のシリアルポートであるとは考えていませんが、理由はわかりません...

于 2009-09-23T21:18:57.460 に答える
0

バグかもしれません。それは過去にありました。

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

于 2009-09-23T21:23:44.400 に答える