Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблема с СОМ-портом
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Ekka
Здравствуйте, возникла такая проблема, есть ком-порт (usb) связывает программу ПК и МК.
Передаем число до 65535. Оно кодируется двумя байтами и отсылается через ком-порт в ПК, или от ПК к МК.
Но вот в чем засада, при передаче числа больше 127, число приходит кривое, т.е. посылаем 1500, приходит 1363,
посылаем 150, приходит 63... до 127 все нормально доходит.
Может ли быть проблема с кодировками???
Причем, если передавать чистые байты, например 01 5Е,
то все нормально доходит, если же передать как символы, то число большее 127 плывет
Эдди
Проблема в вашем коде. Где явно попутаны uint и int (когда заполняется буфер для передачи, либо на принимающей стороне - когда из буфера восстанавливаются числа).
Удобней всего сериализовать данные перед передачей, тогда такой проблемы не будет. А в том виде, что у вас, еще и будет проблема "конечности" — на big-endian машинах код тоже не будет работать.
Forger
Цитата(Ekka @ Jun 19 2017, 10:53) *
Причем, если передавать чистые байты, например 01 5Е,
то все нормально доходит, если же передать как символы, то число большее 127 плывет

Вы ошиблись темой, вам сюда лучше написать.
AlexandrY
Цитата(Ekka @ Jun 19 2017, 10:53) *
Может ли быть проблема с кодировками???

Строки в Delphi нынче по умолчанию хранятся в unicode.
Поэтому надо передавать посимвольно и каждый символ конвертировать в байт.
Про Delphi - это я включил телепатию. biggrin.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.