реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проблема с СОМ-портом, Сом-порт
Ekka
сообщение Jun 19 2017, 07:53
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 164
Регистрация: 12-04-16
Из: Белгород
Пользователь №: 91 250



Здравствуйте, возникла такая проблема, есть ком-порт (usb) связывает программу ПК и МК.
Передаем число до 65535. Оно кодируется двумя байтами и отсылается через ком-порт в ПК, или от ПК к МК.
Но вот в чем засада, при передаче числа больше 127, число приходит кривое, т.е. посылаем 1500, приходит 1363,
посылаем 150, приходит 63... до 127 все нормально доходит.
Может ли быть проблема с кодировками???
Причем, если передавать чистые байты, например 01 5Е,
то все нормально доходит, если же передать как символы, то число большее 127 плывет

Сообщение отредактировал Ekka - Jun 19 2017, 07:57
Go to the top of the page
 
+Quote Post
Эдди
сообщение Jun 19 2017, 08:11
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Проблема в вашем коде. Где явно попутаны uint и int (когда заполняется буфер для передачи, либо на принимающей стороне - когда из буфера восстанавливаются числа).
Удобней всего сериализовать данные перед передачей, тогда такой проблемы не будет. А в том виде, что у вас, еще и будет проблема "конечности" — на big-endian машинах код тоже не будет работать.

Сообщение отредактировал Эдди - Jun 19 2017, 08:14
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 19 2017, 08:16
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Ekka @ Jun 19 2017, 10:53) *
Причем, если передавать чистые байты, например 01 5Е,
то все нормально доходит, если же передать как символы, то число большее 127 плывет

Вы ошиблись темой, вам сюда лучше написать.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 19 2017, 10:22
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Ekka @ Jun 19 2017, 10:53) *
Может ли быть проблема с кодировками???

Строки в Delphi нынче по умолчанию хранятся в unicode.
Поэтому надо передавать посимвольно и каждый символ конвертировать в байт.
Про Delphi - это я включил телепатию. biggrin.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 06:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01381 секунд с 7
ELECTRONIX ©2004-2016