Итак, это уже загадка для экспертов. Описываю ситуацию.
Пример
- Код: Выделить всё
Private Sub MSComm1_OnComm() 'Срабатывание события COM порта
Dim Inp() As Byte
If MSComm1.CommEvent <> comEvReceive Then Exit Sub
Inp = MSComm1.Input
Terminal_Text = Terminal_Text & Hex(Inp(0))
I = I + 1
End Sub
работает исправно если вместо переменой объявить массив типа Byte и присвоить ему принятый байт (в настройках порта стоит RThreshold = 1, т.е. прерывание по приему каждого байта).
Если вы объявите Inp как переменную типа Byte на стадии присвоения (Inp = MSComm1.Input) получите несоответствие типов. В этом случае VB возжелает чтобы переменная Inp была типа String. И ему плевать, что в настройках стоит .InputMode = comInputModeBinary.
Как преобразовывать строку из одного символа в переменую типа Byte я так и не разобрался. И ну его к чертям собачьим вместе с дебилом Гейтсом.