logo       

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

lang.ruby.japanese

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

こんにちは、なかむら(う)です。
引用順を多少いじります。

In message "[ruby-list:42165] Re: RS232Cによるパソコン間の通信の不具合(質問)"
on Apr.28,2006 23:52:23,
<yahatah-vBG97VH5NlJ18gpoEprZGc8NsWr+9BEh@xxxxxxxxxxxxxxxx> wrote:
| 1 バイナリーモード(binmode)の設定方法がよくわかりません。
| system "MODE COM1 BAUD=9600 PARITY=N DATA=8 STOP=1"
| port = open("com1", "r+").binmode
|  でよいのでしょうか?。

Yes.


|   ios.binmode と参考書にあるのは、port.binmodeと同じでしょうか。

Yes.


|  "rb"と書いた例も見たので、試したのですが、エラーとなります。

"r+" をバイナリモードにしたものは "r+b" です。
この場合でも、open してから binmode にするのと同じことです。

ところで、念のために確認しますが、そもそもなぜ "r+" にしてら
っしゃいますか?
また、"rb" で試したときに出た「エラー」というのはどういうもの
ですか?


| エラーになりませんが、受信状態は正しいパケットとはい
| えませんでした。

どう「正し」くなかったのでしょう?
逆に言えば、「正しいパケット」はどういうものなのでしょう?

続く「2」で正しくないパケットの例を出されてますが、何が正し
いかわからないので、なにが怪しいかすらわかりません。


| 2 正しいデータを受け取ることのできたプログラムを、再度、実行した結果、今度
| は(おそらく)化けて受信しました。

えーと、「正しいデータを受け取ることのできたプログラム」とは、
何で書かれたプログラムなのでしょう?
Rubyで書いたものが正しく動いたことがあった、ということなので
しょうか?
それともRuby以外で書かれたプログラムの話でしょうか?


|   これに規則性があれば、なぜ、最初の実行時は、下記の一連の受信したパケット
| のように、ほぼ正しいデータ列(頭のみ0Dが欠落)を読み込んだのか不思議です。
|   また、規則性があれば、すぐ調べられると思うのですが。たとえば、コード0Dは
| 受信しても無視されるなど。

バイナリモードであれば 0x0D が飛ばされることはそれなりに納得
がいくような気もしたのですが、よく考えてみたらなんだか不自然
にも思います。
前にも書きましたけど、ruby -v の出力を教えてくれませんか?


|   Microsoft visual C++.netで動くのでれば、とにかく簡単な事例で動作を確認
| しながら、本格的に勉強したいと考えています。

どんなrubyを使っているのかわからないので、動くとも動かないと
も言えないんですよね。
VC++.NET(ということはいわゆるVC7なのかなあ)で拡張ライブラリを
作れるかどうか、という点だけであれば、「作れます」ではあるん
ですが、結局はruby本体との組み合わせなので。



いろいろ言ってますが、結局のところ、

(1) どんなrubyを使っていて、
(2) どんなスクリプトを実行していて、
(3) どういう結果を期待していて、
(4) 実際にはどういう結果が出ているのか

のうち、今回出た(4)しかわかってないので、何ともいえない部分が
多すぎる状態です。
何らかの理由で出せない情報がおありだったりするのかもしれない
ので、出せ、とまでは言えないのですが、出せる情報があれば小出
しにするよりまとめて出したほうが有益なアドバイスが得られる可
能性は高いと思います。
今回の場合、(おそらくは)矢幡さん以外では実機で現象を確認でき
る人はいないでしょうから、推測で追試してみることも他の誰にも
できませんから、なおさらです。


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





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

News | FAQ | advertise