logo       

[ruby-list:42135] Re: RS232Cによるパソコン間の通信の不具合(質問): msg#00166

lang.ruby.japanese

Subject: [ruby-list:42135] Re: RS232Cによるパソコン間の通信の不具合(質問)

こんにちは、なかむら(う)です。

In message "[ruby-list:42134] Re: RS232Cによるパソコン間の通信の不具合(質問)"
on Apr.26,2006 12:31:50,
<kimura.koichi-AMwPzFTG5Oh3+QwDJ9on6Q@xxxxxxxxxxxxxxxx> wrote:
| ポートの設定を確認するのはもちろん必要とは思いますが、フローコントロール
| というよりは、パイプの目詰まりと一緒でどっかのバッファにたまりっぱなしに
| なっているような気がします。あるいはreadでブロックされてるとか。
|
| ちょっと検索した限りでは、WindowsAPIのレベル(CreateFile/ReadFile etc)で
| COM1などのポートの読み書きはできるようですが、サンプルプログラムでは
| 1byteずつ読み込みしてました。ここである程度のバイト数を一気読みするよう
| になっているとバイト数が足りないときにブロックされるのではないかと思いま
| す。
| #間違ってたらごめんなさい

それが正解かと思います。

要するに、IO#readを使うと内部的にバッファリングを行うために複
数バイト読み込みが行われてしまい、それでブロックしてしまう、
ということのようです。
# 実際はそんなには単純じゃないようでもありますが...

というわけで、プラットフォームが不明なのでmswin32版であると決
め打ちして回答してしまうと、受信側スクリプトの
c = port.read(1)
という部分を
c = port.sysread(1)
とすれば正常に動作すると思われます。


それでは。
--
U.Nakamura <usa-bhNLnadBHJLJHuKqwHuiUngSJqDPrsil@xxxxxxxxxxxxxxxx>






<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise