|
[ruby-list:42121] RS232Cによるパソコン間の通信の不具合(質問): msg#00152lang.ruby.japanese
ノートパソコンと電子コンパスをRS232Cで接続し、データを取得するプログラ ムを検討しています。ところが、Rubyで簡単なプログラムを作成し、2台のPC間の 通信状態を確認しようとしたものの、動作が不安定で、かつ動かない理由が不明で す。 その理由がおわかりであれば、どなたか是非ご教示ください。MS-DOS時代は、何ら 問題無かった簡単な内容ですが、現在は、手こずり困っています。 以下に設定条件、問題点、検討したことを列記するとともに、簡易なプログラムを参 考に例示します。 記 前提条件1 PC1(IBMデスクトップ)とPC2(IBMノート;USB-RS232C変換)共 に、それぞれ電子コンパスとRS232Cを通じて、付属ソフトで順調に通信する。 すなわち、RS232Cケーブル等の機器設定は問題ないと思われる。 問題点1 PC1を受信状態にして、PC2から送信しても、PC1は反応しない。 PC2を再実行し、再度送信すると、最初の実行による50個のデータを受信後、 8個の途中まで受信する。 反応が中途半端である。 問題点2 PC1とPC2の送受信を逆に変えると、PC1から一気に送信し、終了 するが、PC2では受信せず待機状態のままとなる。 検討1 Perlで作成したプログラムでは、PC2から送信してPC1で受信する と、間違いなく送受信され、順調である。ただし、このPerlを使用しても、問題点2 の現象を示す。 Rubyでの受信 port = open("com1","r+") i=0 while i<500 i+=1 c = port.read(1) print c end port.close ---------------------- Rubyでの送信 port = open("com1","r+") i=0 while i<50 i+=1 port.write "#{i} ==> xyz\n" print "#{i} ==> xyz\n" end port.close ================== Perlでの受信 print "====INflow===\n"; open PORT, "+<COM1"; while ($i<500){ $i++; $a=<PORT>; print "($i) ====> $a"; } close PORT; ---------------------- Perlでの送信 print "====OUTflow===\n"; open PORT, "+<COM1"; while ($i<50){ $i++; print PORT "==$i =yes \n"; print "==$i =yes \n"; } close PORT; 矢幡 久
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:42120] Re: puts,printの出力をファイルにも出力するには, Nobuyoshi Nakada |
|---|---|
| Next by Date: | [ruby-list:42122] Re: RS232Cによるパソコン間の通信の不具合(質問), Hidetoshi NAGAI |
| Previous by Thread: | [ruby-list:42118] Re: puts,printの出力をファイルにも出力するには, 岩崎 弘孝 |
| Next by Thread: | [ruby-list:42122] Re: RS232Cによるパソコン間の通信の不具合(質問), Hidetoshi NAGAI |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |