投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/7/5 20:14:41
> (FFがずっと続く)
1023 を送信していないときに、FF が送出され続けているということでしょうか?
それとも、1023 を一回送信したときに、FF の羅列が止まらなくなるということでしょうか?


> Dim args(0) As Object
> args(0) = data
この変数は、もはや使われていないようです。

それと、SerialPort クラスのプロパティ設定は問題ないでしょうか?
(たとえば、BaudRate、DataBits、Parity、StopBits、Handshake など)


> 受信データは、「FFFFFFF」と確認できました。(FFがずっと続く)
奇数桁の16進数になるのは不自然ですね。

たとえば、Integer 型の『-1』は、&HFFFFFFFF ですが、
FFFFFFF ではなく
FFFFFFFF だったりはしませんか?
Dim bin() As Byte = BitConverter.GetBytes(-1)



Hex 関数を使っていたのであれば、奇数桁になることもありえますが、
今回は BitConverter を使っているはずで、その場合、表記も
"FF-FF-FF-FF" 形式になるはずなのですが…。

現状のコードでいえば、AppendText が複数回 呼ばれた時に、
文字列が繋がって "FF-FF-FF-FFFF-FF-FF-FF" のように、
ハイフンが漏れることはあるかも知れませんが。


ReadByte が -1 を返すケースについては既に述べていますが、
今回は Read をお使いなのですよね。念のため、データ長も
調査するようにし、データの確認も TextBox ではなく、
Debug を使うようにしてみては如何でしょう。


Dim length As Integer = SerialPort1.BytesToRead
If length = 0 Then
    Return
End If

Dim data(length - 1) As Byte
If SerialPort1.Read(data, 0, data.Length) > 0 Then
    Debug.WriteLine("{0:yyyy/MM/dd HH:mm:ss.fff} {1} len={2} : ", Now, e.EventType, length, BitConverter.ToString(data))
    'Invoke(New Delegate_RcvDataToTextBox(AddressOf Me.RcvDataToTextBox), data) 
End If