|
[ruby-list:42175] Re: RS232Cによるパソコン間の通信の不具合(質問): msg#00206lang.ruby.japanese
青木@ナセ工企です。 > ところが、run後に任意の時間に、計測を繰り返し、計測値を表示記録させる目的 >で、while〜endを利用して、繰り返し計測をしようとすると、問題が発生します。 >chr = STDIN.getcによって、キー入力文字をchrで判定して、(例えばenterキーを押 >したときのみ) 計測を行うようにしたところ、enterキーを押したときに、計測内 >容は、古い計測値を示します。すなわち、数10回も以前に取得した計測値が、読み >込まれているらしく、これを表示するので、enterキーを押した直後の計測値を表示 >しません。 > これでは、使い物になりません。この原因は、bufferにデータが貯まるためと思わ >れます。このとき、sysread(1)やport.flush等を入れても、効果がありません。 矢幡さんの解決スキームとは異なりますが、一案。 キー入力を拾ってそのときだけ表示したいという意図は、明示された タイミング以外のデータは捨てたいということですよね? それなら、シリアル入力をポーリングする部分はスレッドにしてしまって 常時最新の値を保持するようにして、キー入力があったときにその値を 拾ってくるようにしてはいかがでしょう? #わたしはこの方法でシリアル接続のシーケンサを制御してます。 具体的なコードは手元に環境がないのでパスってことで^^; ------------------------------------------------------------ 東京大学大学院工学系研究科 / (有)ナセ工企 青木 茂 mailto:saoki-FORCTJUUkgPbmG5+kqVDhQ@xxxxxxxxxxxxxxxx mailto:aoki-E0433/OuU7Mh4X1ZLvYpJ+ga9YzINl48@xxxxxxxxxxxxxxxx mailto:shig-wwJ3oxS5HtEPE9aycRD6tQ@xxxxxxxxxxxxxxxx
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:42174] i18n Typo and Ruby-GetText, Masayoshi Takahashi |
|---|---|
| Next by Date: | [ruby-list:42176] Re: RS232Cによるパソコン間の通信の不具合(質問), KIMURA Koichi |
| Previous by Thread: | [ruby-list:42173] Re: RS232Cによるパソコン間の通信の不具合(質問), yahata hisashi |
| Next by Thread: | [ruby-list:42176] Re: RS232Cによるパソコン間の通信の不具合(質問), KIMURA Koichi |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |