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にて開発中ですが、最悪、言語は問いません。よろしくお願いいたします。
No.2
- 回答日時:
過去質問を検索して下さい。
キーワードは「MSComm」で十分でしょう。参考までに該当しそうな過去質問を参考URLにつけておきます。
参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=135370
ご回答ありがとうございます。
教えていただいたホームページを拝見させていただきました。
早速ポーリングによる方法を試してみます。
No.1
- 回答日時:
バイナリデータの送受信ですと、Xon/Xoffを使ったフロー制御ができないので、基本的にハードウェアハンドシェークをするしかありませんが、制御線が結線されていないので、これもだめ。
ということなら、データ受信中には何の制御もしてはだめで、受信に専念してバッファに貯める。貯めたあとで、処理をおこなうしかないと思います。早速の回答ありがとうございます。
素人考えで非常に申し訳ないのですが、
>データ受信中には何の制御もしてはだめで、受信に専念してバッファに貯める。>貯めたあとで、処理をおこなうしかないと・・・
と、ありますが、たとえばハイパーターミナル等は、どのようにしているのでしょうか?
当然、ハイパーターミナルでは複雑な処理等は行っていないとは思うのですが、現状では、単に受けたデータを表示させるだけでも、データが落ちてしまっています。サンプルソースや、ホームページ等あれば、お教えください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS GETをPOSTに変更したところ 送信 不能です。 1 2022/04/10 17:31
- Google Drive あと 7 日でストレージ プロモーション期間が終了します が来ました 1 2022/04/01 15:18
- Android(アンドロイド) iPhoneには、なぜ僕が合計3台持ちしているGalaxy A22やXperiaXZ1、arrows 4 2022/07/12 18:42
- iPhone(アイフォーン) 皆さんiPhoneは、機能が少な過ぎますか?? iPhoneには、なぜ僕がAndroid合計3台持ち 2 2022/07/12 19:59
- docomo(ドコモ) +メッセージの送受信。 au(uq mobile)のデータ回線でdocomoの電話番号の+メッセージ 2 2022/09/14 16:09
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- ドライブ・ストレージ RS232C 通信でエラー(受信が正確でない)がでます。どなたか教えてくださいませ。 11 2022/09/03 11:53
- その他(スマートフォン・携帯電話・VR) iPhone SE を使ています、ボイスメモのPC保存方法を教えてください 2 2022/11/12 09:08
- その他(クラウドサービス・オンラインストレージ) ネット経由でPCとiPadでのテキストデータの同期(共有)方法は? 2 2023/04/23 19:26
- 電車・路線・地下鉄 ITパスポート試験問題 7 2023/01/25 09:51
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
VB2010 シリアル受信した情報を...
-
WinsockAPIのrecvfromの受信デ...
-
バイナリデータ受信時のデータ順
-
winsockでソケット通信の開発を...
-
WriteFile()でのデータ送信がで...
-
COMポートの同時オープン同時読...
-
recv関数の受信結果について
-
シリアル通信の出力バッファと...
-
rs232cでの受信データ(mscomm)...
-
C#で通信処理。応答がない場合...
-
ClearCommError呼び出し時のCE_...
-
socket: recvはいつ,どれだけ...
-
UDP処理のエラーについて
-
シリアル通信エラー
-
再現性の無いバグ
-
「スイッチングハブのバッファ...
-
Connection reset by peer
-
Macターミナルで実行中のプログ...
-
バックグラウンドのプロセスの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# シリアル通信でデータ受信...
-
winsockでソケット通信の開発を...
-
socket: recvはいつ,どれだけ...
-
SocketのSend関数でのCLOSEの検...
-
シリアル通信の出力バッファと...
-
WriteFile()でのデータ送信がで...
-
RS232C通信(PC⇔PLC)
-
シリアルポート通信
-
ソケット通信内 read関数について
-
Linuxでのシリアル通信について...
-
SerialPortのDataReceivedイベ...
-
「スイッチングハブのバッファ...
-
RS-232Cでバイナリデータを受信...
-
Connection reset by peer
-
UDP処理のエラーについて
-
VB2005でWin32APIを用いてRS-23...
-
シリアル通信エラー
-
winsockの動作について。
-
シリアル通信 大きいサイズの...
-
VB2010 シリアル受信した情報を...
おすすめ情報