VB2010 COMポートからのバイナリ受信
オシロスコープからの画像データ(40kバイト程度のtifファイル)をPCのCOMポートから受信し
保存するプログラムを作成しているのですが、受信データを正しくPC上に保存できません。
具体的には下記のコードでtifファイルは作成されますが、容量が数kバイトで明らかに不足
しています。
MsgBoxを有効にして受信バッファサイズや書込み長さを確認しましたが、「OK」ボタンを押す
たびに下記の表示になります。COMポートのバッファサイズが4096バイトなので「dat.Length」
をすべて足し合わせると本来の受信データサイズになると思うのですが、PC上に作成された
ファイル容量から「dat」が常に上書きされているような気がします。
正しく保存するにはどのような修正が必要でしょうか?
【MsgBoxを有効にしたときの表示値(OKを押すたびに数値が変わる)】
「dat.Length」
183
4075
4072
4092
4088
4084
4085
4092
4059
4078
3910
0
0
・
・
・
「ByteToRead」
4060
1508
324
908
2334
1785
70
227
400
0
0
・
・
・
【作成したコード】
Private Sub SerialPort1_DataReceived(ByVal sender As System.Object, ByVal e As_ System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
' シリアルポートからデータ受信
Dim dat As Byte() = New Byte(SerialPort1.BytesToRead - 1) {}
SerialPort1.Read(dat, 0, dat.GetLength(0))
'MessageBox.Show(dat.Length)
'MessageBox.Show(SerialPort1.BytesToRead)
File.WriteAllBytes("C:\test1.tif", dat)
SerialPort1.DiscardInBuffer()
End Sub
【環境】
OS:Win7
VB:2010
ポート設定:SerialPortクラス標準からポート番号以外は変更なし
お礼
momoturbo様 遅くなりましたが、ご回答どうもありがとうございました。