投稿者 ザボン  (社会人) 投稿日時 2014/11/29 15:43:46
ある機械とRS232Cシリアル通信でデータをパソコンで一方的に受け取っています。

VBA7.0でデータを受信しシートに印字するプログラムを自作しています。

データは1時間毎に機械から送信されてきます。

プログラムはループで常に受信データ格納先を確認し、データが入ったらループを抜け次の処理をするプログラムです。

この方法ではたまにデータを取りこぼしたりおかしなデータになってしまいます。(24回に1回か2回)

原因の予想ですが
非同期で通信しているため、データを少しでも格納したらReadFileが受信完了!みたいに思って次の 動作に移ってしまうのではないかと。

理想はループを使用せず、受信データ格納先にデータがすべて入ったらイベントが発生?プログラムが動作するようにしたいのですが、可能でしょうか?

ついでにですが、
ネットで調べまくって何とかここまでできたのですが、基礎をあんまり勉強していないので標準モジュールとかReadFileやCreateFileが完全に理解できていません。
標準モジュールに作ったプログラムは常に実行されているんでしょうか?
ポートを開きReadFileを常に実行しているからデータを受信できるのでしょうか?

質問のしかたが下手で申し訳ないですがご指導よろしくお願いいたします。