tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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

  コードの説明はしません。
  使い方は推理してください。

以上。参考まで

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。