Команды VB6 RS232 не работают - PullRequest
1 голос
/ 26 мая 2011

У меня есть следующий код:

MSCommProj.CommPort = 6
MSCommProj.RThreshold = 1
MSCommProj.Settings = "19200,N,8,1"
MSCommProj.InputLen = 0
MSCommProj.PortOpen = True

И он открывается нормально и подключается, но когда я пытаюсь отправить команду:

MSCommProj.Output = "21 8901 5057 31 0A" & Chr$(13)

и

MSCommProj.Output = "21 89 01 50 57 31 0A" & Chr$(13)

и

MSCommProj.Output = "3F 89 01 50 57 0A" & Chr$(13)

как указано в руководстве пользователя, он не включается.

Вот страницы в руководстве, которые показывают это. Может я просто делаю это неправильно? enter image description here enter image description here enter image description here enter image description here

Ответы [ 3 ]

5 голосов
/ 26 мая 2011

Вы уверены в том, что собираетесь отправлять данные символа на интерфейс RS232 для этого? Это похоже на двоичные последовательности для меня.

Вместо:

MSCommProj.Output = "3F 89 01 50 57 0A" & Chr$(13)

Я бы посмотрел на передачу двоичных данных таким образом:

MSCommProj.Output = chr$(63) & chr$(137) & chr$(1) & chr$(80) & chr$(87) & chr(10)

Вы заметите, что в конце нет chr$(13), спецификация не требует этого.


Если вы хотите узнать, каковы преобразования для этих шестнадцатеричных значений, запустите калькулятор Windows, измените представление на научное, переключитесь в шестнадцатеричный режим, введите значение, переключитесь в десятичный режим.

Или вы можете загрузить ASCII таблицу для этой цели. Или посмотрите одно из моих объемных сочинений на эту тему здесь .

2 голосов
/ 26 мая 2011

Вы должны отправить данные байты.
Вместо этого вы отправляете строковое представление тех.

Отправка фактических байтов.
chr$(&h21) & chr$(&h89) & chr$(&h01) & chr$(&h50) и т. Д.

0 голосов
/ 06 июня 2011

Это потому, что я не использовал перекрестный кабель ... Все коды RS232 были правильными. Мля.

...