OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

RS-232Cでバイナリデータを受信する方法

  • すぐに回答を!
  • 質問No.186958
  • 閲覧数2362
  • ありがとう数5
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 100% (13/13)

2台のPCを使用しバイナリファイルをRS232Cを使用し1台目のPCは送信専用、2台目のPCは受信専用で、送信側のPCから出したデータを受信側PCでデータの内容を判断し集計するプログラムを作ろうとしています。

送信側のPCでは、"AAB9AAC2AACC01D8AAE2・・・”といった内容のバイナリファイルの内容を1バイトずつ読み込み、それをMsCommを用いてバイナリモードで送信させて、EOFになるまで永遠とそれを繰り返します。

問題は受信側で、たとえば上記のデータの中の"AAB9"ならばカウントを1つ上げる、"AACC01D8"ならばカウントを1つ下げ、それを表示するといったような処理をリアルタイムで行いたいのですが、どうしてもデータの取りこぼしが発生します。

また、データの意味合いとしては、必ず"AA"という1バイトのデータから始まり、それに1バイトから5バイトまでのデータが可変長で付いてきて次の"AA"までが1つの意味となります。

通信パラメータは9600、8ビット、ストップビット1、パリティなしで、その他の制御線は一切使用しないという条件です(要するにRxD、GND線のみの最低限の条件)

受信側のバッファは1024バイトで、MSComm1.RThreshold = 1でOnCommを発生させています。また、送信側のファイルの大きさは1kバイトほどです

正直なところ、このようなことが可能なのかどうかもわからない状況なのですが、現状ではデータを数バイト取りこぼしているだけのようなのでできないことはないのではないか?と考えています。

どなたか、参考文献、ホームページ、プログラム、考え方等を何でもかまいませんん!ぜひ、ご教授願います!!また、現在はVBにて開発中ですが、最悪、言語は問いません。よろしくお願いいたします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3

たしか.1秒に1回100msほど.タイマー関連の処理に取られて.結構速度を落とさないと.取りこぼしが発生するようです。

私の関係した対応では.
バッファを巨大にする
転送速度を4800に落とす
受信ソフトの実行速度をあげるため.受信中は他の仕事をさせない
の3店でした。
お礼コメント
kouichi125

お礼率 100% (13/13)

お礼が遅れて申し訳ございませんでした。
ここ2,3日たてこんでたもので・・・

具体的な数値を頂き、非常に参考になります。

ありがとうございました。
投稿日時 - 2001-12-21 22:21:51
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル9

ベストアンサー率 21% (23/106)

バイナリデータの送受信ですと、Xon/Xoffを使ったフロー制御ができないので、基本的にハードウェアハンドシェークをするしかありませんが、制御線が結線されていないので、これもだめ。ということなら、データ受信中には何の制御もしてはだめで、受信に専念してバッファに貯める。貯めたあとで、処理をおこなうしかないと思います。 ...続きを読む
バイナリデータの送受信ですと、Xon/Xoffを使ったフロー制御ができないので、基本的にハードウェアハンドシェークをするしかありませんが、制御線が結線されていないので、これもだめ。ということなら、データ受信中には何の制御もしてはだめで、受信に専念してバッファに貯める。貯めたあとで、処理をおこなうしかないと思います。
お礼コメント
kouichi125

お礼率 100% (13/13)

早速の回答ありがとうございます。

素人考えで非常に申し訳ないのですが、

>データ受信中には何の制御もしてはだめで、受信に専念してバッファに貯める。>貯めたあとで、処理をおこなうしかないと・・・

と、ありますが、たとえばハイパーターミナル等は、どのようにしているのでしょうか?
当然、ハイパーターミナルでは複雑な処理等は行っていないとは思うのですが、現状では、単に受けたデータを表示させるだけでも、データが落ちてしまっています。サンプルソースや、ホームページ等あれば、お教えください。
投稿日時 - 2001-12-18 12:55:56
  • 回答No.2
レベル12

ベストアンサー率 45% (207/457)

過去質問を検索して下さい。キーワードは「MSComm」で十分でしょう。 参考までに該当しそうな過去質問を参考URLにつけておきます。 ...続きを読む
過去質問を検索して下さい。キーワードは「MSComm」で十分でしょう。
参考までに該当しそうな過去質問を参考URLにつけておきます。
お礼コメント
kouichi125

お礼率 100% (13/13)

ご回答ありがとうございます。

教えていただいたホームページを拝見させていただきました。
早速ポーリングによる方法を試してみます。
投稿日時 - 2001-12-18 14:53:21
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ