logo       

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

lang.ruby.japanese

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

長い質問に丁寧にご回答いただき大変有り難うございます。
いただいた忠告を受けて、検討しましたが、なお不明です。

1 バイナリーモード(binmode)の設定方法がよくわかりません。
system "MODE COM1 BAUD=9600 PARITY=N DATA=8 STOP=1"
port = open("com1", "r+").binmode
 でよいのでしょうか?。エラーになりませんが、受信状態は正しいパケットとはい
えませんでした。
 "rb"と書いた例も見たので、試したのですが、エラーとなります。
  ios.binmode と参考書にあるのは、port.binmodeと同じでしょうか。

2 正しいデータを受け取ることのできたプログラムを、再度、実行した結果、今度
は(おそらく)化けて受信しました。
  プログラムを変更したわけではありませんが、今度は下記のように正しいデータ
をうけとれません。
  バイナリーモードの設定をしなかったので、文字を飛ばされた可能性があるとい
うことだと思います。
  これに規則性があれば、なぜ、最初の実行時は、下記の一連の受信したパケット
のように、ほぼ正しいデータ列(頭のみ0Dが欠落)を読み込んだのか不思議です。
  また、規則性があれば、すぐ調べられると思うのですが。たとえば、コード0Dは
受信しても無視されるなど。
A 7E 70 12 24 BC 88 9 C EB 1F F0 32 FC 83 1 2B F2 A2 C A7 FA AC
A 7E 70 12 24 BC 88 9 9 EB 1F F0 32 FC 83 1 32 F2 A6 C A4 FA B1
A 7E 70 12 24 BC 88 9 11 EB 1F F0 32 FC 83 1 30 F2 A6 C A8 FA BB
A 7E 70 12 24 BC 88 9 14 EB 1F F0 32 FC 83 1 29 F2 A2 C AB FA B6
A 7E 70 12 24 BC 88 9 16 EB 1F F0 32 FC 83 1 29 F2 A0 C AD FA B8
  
3 "COMn"を直接オープンして、読み書きをする場合に安定しない理由が理解できる
と気持ちがすっきりしますが、
「> WindowsにせよLinuxにせよ排他だの同期だのブロッキングだのと シリアルポー
トのデバイスドライバの機能はDOSのそれと比べると
> 複雑になってます。」ということを知るだけで納得できます。有り難うございまし
た。

4  「シリアルポートはRubyが想定している標準的なリソースではないので、 これ
をRuby側の問題ではなく、ライブラリで解決すべき問題である。」とのご指摘、承り
ました。
  すなわち、拡張ライブラリーによって解決するもので、そのために、
ruby/serialportやRuby-termiosなどが提供されていることと理解します。
  この拡張時にどのような処理がされたかがわかれば、理解を深められるわけで
しょう。

5 Microsoft visual C++.netをインストールしたものの、ある時に、無料の
Borlandを搭載しました。そのために、makeでは Borlandがでると思います。
  Ruby本体は「ruby 1.8.2 (2004-11-06) [i386-mswin32]」でRDE上で動かしてい
ます。
>利用しているコンパイラによって、mswin32、mingw、cygwin、bcc32といった種別が
あります。
  なるほどです。
> その種別によって、拡張ライブラリのmake方法も異なります。
> Borland C++で拡張ライブラリを作りたいのであればbcc32でないと
> 色々面倒だと思います。
> 手っ取り早くビルドしたいのであればcygwin版が面倒がないでしょう。
  RDEを愛用しているので、cygwin版がよいと聞いてもなかなか移れずにいます。

なかむらさんの「自分で新規に拡張ライブラリを作りたいということでしたら、まず
は普通にCでプログラムが書けるようになるのが先決かと思います。」とのご忠告了
解しました。
  Microsoft visual C++.netで動くのでれば、とにかく簡単な事例で動作を確認
しながら、本格的に勉強したいと考えています。
  ところが、そのとっかかりで全く動かないので、躓いたままです。それ以上に深
入りができない状態を続けています。
  少しでもわかる人が側にいればラクなのでしょうが。
  
> (なんなら手元でビルドしたファイルを提供しても構いませんが...)
 いよいよのときには、是非お願い申し上げます。

矢幡 久






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

News | FAQ | advertise