掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
シリアル通信の受信は? (ID:145646)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
オショウさん、我龍院さん。 その後我龍院さんのページを参考にして作業を行い、それなりの動作をするようになったのでご報告します。 まず、仕様と問題点を整理しておきます。 ・VB2008でSerialPortコンポーネントを使ったシリアル通信の受信部のプログラミング。 ・相手の機器からは「連続する2Bytesのバイナリデータ」がくる。 ・2Bytesのカタマリがさらに連続してくる場合があるので、なるべく高速に処理すべく、 2Bytes受け取った時点でDataReceivedイベントを発生させたい(ReceivedBytesThreshold=2)。 ・最終的には、受信したバイナリデータをメインスレッドに引き継ぎ、内容をチェックし、 データを組み立て、ラベルに表示する、というプログラムを作成したい。 ・当面、DataReceivedが発生するスレッドから2Bytesデータをメインスレッドに引き継ぎ、 ラベル(下記の lblAZ, lblEL)に表示する部分を作成する。 ・とりあえず、エラー処理は行っていない。 以下、作成したプログラムリスト。 Delegate Sub ReceiveDataDelegate(ByVal iData1 As Integer, ByVal iData2 As Integer) Private Sub DataAnalyze(ByVal iData1 As Integer, ByVal iData2 As Integer) lblAZ.Text = Convert.ToString(iData1) lblEL.Text = Convert.ToString(iData2) End Sub Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) _ Handles SerialPort1.DataReceived Dim dlgData As ReceiveDataDelegate = New ReceiveDataDelegate(AddressOf DataAnalyze) Dim ReceiveData1 As Integer = 0 Dim ReceiveData2 As Integer = 0 ReceiveData1 = SerialPort1.ReadByte ReceiveData2 = SerialPort1.ReadByte Me.Invoke(dlgData, ReceiveData1, ReceiveData2) End Sub 改善点が多々あると思いますので、ご指摘下さい。よろしくお願いします。 .
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.