投稿者 shu  (社会人) 投稿日時 2015/4/15 00:59:26
詳しくみていない箇所がありました。

If port.ReadByte = STX Then
・・・
ElseIf port.ReadByte = ETX Then
・・・
Else
    Select Case port.ReadByte
・・・
End If


これだと
> If port.ReadByte = STX Then 
ここで1回目
> ElseIf port.ReadByte = ETX Then
ここで2回目
>  Select Case port.ReadByte
ここで3回目
と1回のループで3Byte分読み込んでしまいます。
1回目のループではSTXの条件に合うので1回で済みますが2回目の
ループ以降3Byte分読んでしまいます。

Dim bytData = port.ReadByte()   '--- 実際には 
Select Case bytData
    Case STX
・・・
    Case ETX
・・・
    Case Else
・・・
End Select

のようにSelect Caseの前で1回だけReadしてその取得した値で判定を
するようにした方がよいです。
ReadExistingだとETXの判断をすることが出来ず送信された内容を含めて
読み込んでしまいます。