Member 12330615 Ответов: 1

Зачем менять значение int после получения последовательной связи?


В моем коде VC++ ,

Последовательная передача данных на другой компьютер.

Он отправляет структурированные данные следующим образом

структура data_format{

char stx; / / 0x02
тип int;
инт далее;
инт длина;
char data[N];
char etx; / / 0x03

Один раз он отправляет данные в другую часть;

stx+ type (=0) + seq (=100) + lenth (=220) + data ....

но в сторону получения данных

stx+ stype (=0) + seq (=100) + lenth (=92) + data....

Я каждый раз подтверждал, что стоимость лентов различна между отправляющей и принимающей частью. (220 - & gt; 92)

Возможно ли это?

Что я уже пробовал:

Еще 3 дня потрачены впустую на эту проблему

Randor

Похоже, вы пытаетесь отправить двоичные данные в текстовом режиме... которые могут быть 7 битами с 1, используемым в качестве нечетного бита четности.

Rick York

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

1 Ответов

Рейтинг:
1

OriginalGriff

Да. Посмотрите на значения: 92 + 128 = = 220. Это означает, что это семибитная проблема.
Наиболее вероятными причинами этого являются:
1) канал связи между двумя устройствами установлен на 7 бит на символ (7 bpc), что означает, что восьмой бит отбрасывается при его передаче.
2) ваше программное обеспечение использует символьное значение, которое содержит только 7 бит значимых данных - возможно, вы используете char когда вам нужно unsigned char
3) где-то в вашем программном обеспечении вы "маскируете" верхний бит, чтобы предотвратить отрицательные значения.

Но без вашего программного обеспечения мы даже не можем начать помогать вам исправлять.