タイトル : Re^3: VB2010のSerialportの受信イベントについて 投稿日 : 2011/11/24(Thu) 22:26 投稿者 : オショウ
> 受信イベントが発生しても、すぐに全てのデータは読めないということでしょうか? 理論的には、イベントが発生する条件は、受信しないと発生しない ので、ありえないのですが、PCのスペックが低い場合、イベント の先頭で読み出しを行うと、『受信バイトがゼロ』となる事象は、 私も経験があります。 PCのスペックが十分にあった場合は・・・どこかにプログラム的 な問題があって、正常に動作していないことがあります。 受信データの区切り文字に何か固定のコード(デリミタ)になるも のの通信の場合は(テキスト形式でもバイナリ形式でも)、そのコ ードを受信するまで待ち合わせることができます。 無い場合は、確実に1バイト受信方式で読み貯めてから一気に処理 を行うことになるでしょう。 ※ デリミタコードがあった場合、.ReadTo(デリミタコード)とできます。 ※ 簡単に書けば・・・ Public Overridable Sub OnReceive(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Dim dev As SerialPort Dim sz As String dev = DirectCast(sender, SerialPort) If e.EventType = SerialData.Chars Then sz = devSerial.ReadTo(DATA_END_CODE) If sz <> String.Empty Then RaiseEvent ReceiveData(sz) End If End If End Sub コードの説明はしません。 使い方は推理してください。 以上。参考まで |