投稿者 daive  (社会人) 投稿日時 2017/7/4 13:43:46
全く解らない状態の御様子なので、

COMポート(シリアル)での送受信 サンプル(C#/VB.NET)
http://nonsoft.la.coocan.jp/SoftSample/CS.NET/SampleRs232c.html
より、
Byte 受信:1文字以上

’受信文字数:既にPC側にて受信バッファ内に受信しているデータ数を示します。
’↓ここで、受信文字数分のByte配列を用意している、-1なのはベーシック系の配列定義の御作法
Dim dat As Byte() = New Byte(SerialPort1.BytesToRead - 1) {}
’↓ここで、先に指定した受信文字数分のデータを、受信バッファより取り出す
        SerialPort1.Read(dat, 0, dat.GetLength(0))

’この後、文字データなのか、バイナリーなのか、BCDなのかで、適したエンコード処理を行う。
’↓ここでは、メッセージボックスへ、シフトJISエンコードしたデータを表示している。
MessageBox.Show( _
            System.Text.Encoding.GetEncoding("SHIFT-JIS").GetString(dat))


Byte で受信した値は、配列に、0x00~0xFF の範囲の値が入るので、
送受信されるデータが、
ASCII、SHIFT-JIS など文字なのか?
バイナリーなのか?BCDなのか?
が、不明では、エンコード出来ない事になります。

0x00~0xFF:0~255(10進数)

もし、1023をバイナリーで送受信しているのであれば、
1023:0x03FF なので、1バイトで表現できない。
エンディアンが、LowByte HighByte の順であれば、
送信されるデータは、 
0xFF
0x03
と、2バイトで構成されている筈。
ところが、これでは一旦こけると、データズレが起きて、役立たずになる。
⇒バイナリーでの送受信では、通信フレームが必須。

取りあえず、此処まで。