Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Преобразование типов.  [new]
Maguark
Member

Откуда:
Сообщений: 8
Добрый день. Не могу понять, что происходит.

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

Устройство отправляет пакеты в хекс формате типа
"FF 07 03 31 32 33 9F"
Я получаю пакет
ComPort.Read(Str[1],Count);
С помощью IntToHex(Ord(Str[i]),2) я вывожу принятое значение в RichEdit и вижу, что я принял именно "FF 07 03 31 32 33 9F".
Сразу после чтения я пишу:
ComPort.WriteStr(Str);
Но моё устройство ловит вот такой пакет:
"4F 07 03 31 32 33 5F"
И почему первый и последний байт меняется я ни как не могу понять.
1 дек 17, 15:48    [20998807]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43932

Maguark
И почему первый и последний байт меняется я ни как не могу понять.

Потому что, когда имеешь дело с байтами, надо оперировать массивами байт, а не строками
символов. Где-то у тебя происходит неконтролируемое преобразование кодировки, отчего всё,
что больше 127 и корёжится.

Posted via ActualForum NNTP Server 1.5

1 дек 17, 15:53    [20998838]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов.  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2420
никому не рассказывай что такое ComPort и не читай документацию к нему
1 дек 17, 15:54    [20998842]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов.  [new]
чччД
Guest
Maguark,
Ну явно же старший бит каждого байта теряется.
Перед отправкой строки преобразуй данные в 16сс - строку. Или в 64сс.
1 дек 17, 15:59    [20998871]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов.  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 23220
чччД
Ну явно же старший бит каждого байта теряется.

Не угадал, два чуть младше старшего.
1 дек 17, 16:04    [20998902]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43932

чччД
Ну явно же старший бит каждого байта теряется.

В этом случае из FF стало бы 7F, а не 4F.

Posted via ActualForum NNTP Server 1.5

1 дек 17, 16:05    [20998906]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов.  [new]
чччД
Guest
wadman,
Да, фигню сморозил.
1 дек 17, 16:08    [20998917]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов.  [new]
Maguark
Member

Откуда:
Сообщений: 8
Dimitry Sibiryakov,
Не указал сразу, виноват.
У меня
Str: AnsiString;
AnsiString это разве не эквивалент массиву байт?
1 дек 17, 16:11    [20998927]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов.  [new]
Maguark
Member

Откуда:
Сообщений: 8
Более того, не забываем я же проверяю, что я принял и что у меня записано в Str выводя всё в НЕХ формате в RichEdit. И в RichEdit у меня всё выводится правильно.
1 дек 17, 16:14    [20998941]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование типов.  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 43932

Maguark
AnsiString это разве не эквивалент массиву байт?

Нет. Это строка символов в текущей ANSI кодировке.

Posted via ActualForum NNTP Server 1.5

1 дек 17, 16:36    [20999016]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить