Перейти к содержанию
    

Как кодирует Винда, при передачи по RS232?

Помогите разобраться с передачей данных по RS232.

Захотел посмотреть, что у меня творится на выходе RS233 (PC). Подключил логический анализатор в выходу и запустил терминалку. получил лог, но вот содержание байтов не соответствует передаваемым.

Например передаю символ "1", а вижу символ "g" (0х67). Подумал анализатор врёт, посмотрел осциллографом там такая же временная диаграмма.

подумал может термналка, что-то "по своему" преобразовывает, испытал на нескольких прогах, эффект тот же.

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

Использую,стандартный СОМ порт (не USB переходник).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сразу неожиданный вопрос - скорости обмена и там и там одинаковые стоят?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

сразу неожиданный вопрос - скорости обмена и там и там одинаковые стоят?

Да, спецом еще раз попробовал с различными скоростями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так сигнал на проводе инвертированный, кто был нулем, тот стал единицей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так сигнал на проводе инвертированный, кто был нулем, тот стал единицей.

Именно так.

Символ '1' кодируется как 31H или 00110001B.

В инвертированном виде это будет: 11001110B. Но инвертированы будут и стартовый и стоповый биты.

Логический анализатор будет воспринимать младший нулевой бит как стартовый.

В результате, получится код 01100111В или 67H или символ "g".

 

Кстати, логический анализатор работает неправильно - не отслеживает отсутствие стопового бита в байте.

Должен выдавать ошибку в этом случае.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, логический анализатор работает неправильно - не отслеживает отсутствие стопового бита в байте.

Всё правильно показывает, в лог.анализаторе скорее всего выбран "UART", а надо "RS-232".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так сигнал на проводе инвертированный, кто был нулем, тот стал единицей.

Благодарю Добрый человек. Не знал об этом. Да, поставил в настройках анализатора инвертировать, и сразу всё стало нормально. Хотя в этом пункте у него стоит (не инвертированый - стандарт).

 

Кстати, логический анализатор работает неправильно - не отслеживает отсутствие стопового бита в байте.

Должен выдавать ошибку в этом случае.

 

Он, показывал ошибку кадра. Тут, но при этом декодировал символ.

 

Всё правильно показывает, в лог.анализаторе скорее всего выбран "UART", а надо "RS-232".

В моём случае нет отдельно UART или RS232, для него выбор сразу на UART/RS232/RS485

 

Остальным тоже большое спасибо, за внимание.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всё правильно показывает, в лог.анализаторе скорее всего выбран "UART", а надо "RS-232".

Нет неправильно - отсутствие стопового бита ("0" вместо "1") - это ошибка.

Правильный приемник UART должен это проверять обязательно.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...