シリアル通信を実現しようとしていて、現在データ送信は完成しました。
しかし、データ受信方法が分かりません。
データはいつやってくるのかが分からないので、
「データ受信したら割り込み(イベント?)ルーチンに入る」という方法がいいかなあ、と考えています。
そこで、ActiveBasicにおいて、
「データ受信したら割り込み(イベント?)ルーチンに入る」方法を教えてください。
もし他に方法があれば教えてください。
すみませんがよろしくご教授お願いいたします。
シリアル通信時のデータ受信方法
Re: シリアル通信時のデータ受信方法
もう見てないかも知れませんが、、、、、
受信用のタイマー、もしくはスレッドを作って、
その中で常時読み出しを行えばいいと思います。
1文字づつ受信してますが、私が以前作ったソフトの都合ですので、
その辺は適当に。。。。
わたしもAB初心者なので、偉そうな事書けませんが、
参考までに私のソフトの流れを書くと、
特定の文字(ETX)を受信したら1ワードとして、
受信用の文字列バッファに格納していきます。
受信バッファはリングバッファにしておいて、メインスレッドは任意の
タイミングで、新しいワードを受信していれば、順次読み出して処理しています。
受信バッファは、クリティカルセッションとかセマフォとか使わないといけない気もしつつ、不勉強なため放置してますが、、、、、
参考になれば幸いです。
受信用のタイマー、もしくはスレッドを作って、
その中で常時読み出しを行えばいいと思います。
コード: 全て選択
Dim rChr As Byte
Dim rLen As Long
Dim dummy As Long
While 1
'1文字受信
dummy = ReadFile(hComm, rChr, 1, VarPtr(rLen), ByVal 0)
If rLen > 0 Then 'なんか受信してれば
以下、文字読み出しの処理
・
・
・
・
End If
Wend
その辺は適当に。。。。
わたしもAB初心者なので、偉そうな事書けませんが、
参考までに私のソフトの流れを書くと、
特定の文字(ETX)を受信したら1ワードとして、
受信用の文字列バッファに格納していきます。
受信バッファはリングバッファにしておいて、メインスレッドは任意の
タイミングで、新しいワードを受信していれば、順次読み出して処理しています。
受信バッファは、クリティカルセッションとかセマフォとか使わないといけない気もしつつ、不勉強なため放置してますが、、、、、
参考になれば幸いです。