Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Преобразование типов. / 10 сообщений из 10, страница 1 из 1
01.12.2017, 15:48:02
    #39562637
Maguark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование типов.
Добрый день. Не могу понять, что происходит.

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

Устройство отправляет пакеты в хекс формате типа
"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"
И почему первый и последний байт меняется я ни как не могу понять.
...
Рейтинг: 0 / 0
01.12.2017, 15:53:44
    #39562643
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование типов.
MaguarkИ почему первый и последний байт меняется я ни как не могу понять.

Потому что, когда имеешь дело с байтами, надо оперировать массивами байт, а не строками
символов. Где-то у тебя происходит неконтролируемое преобразование кодировки, отчего всё,
что больше 127 и корёжится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.12.2017, 15:54:24
    #39562644
Tactical Nuclear Penguin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование типов.
никому не рассказывай что такое ComPort и не читай документацию к нему
...
Рейтинг: 0 / 0
01.12.2017, 15:59:26
    #39562649
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование типов.
Maguark,
Ну явно же старший бит каждого байта теряется.
Перед отправкой строки преобразуй данные в 16сс - строку. Или в 64сс.
...
Рейтинг: 0 / 0
01.12.2017, 16:04:46
    #39562652
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование типов.
чччДНу явно же старший бит каждого байта теряется.
Не угадал, два чуть младше старшего.
...
Рейтинг: 0 / 0
01.12.2017, 16:05:11
    #39562654
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование типов.
чччДНу явно же старший бит каждого байта теряется.

В этом случае из FF стало бы 7F, а не 4F.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
01.12.2017, 16:08:29
    #39562656
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование типов.
wadman,
Да, фигню сморозил.
...
Рейтинг: 0 / 0
01.12.2017, 16:11:16
    #39562658
Maguark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование типов.
Dimitry Sibiryakov,
Не указал сразу, виноват.
У меня
Str: AnsiString;
AnsiString это разве не эквивалент массиву байт?
...
Рейтинг: 0 / 0
01.12.2017, 16:14:53
    #39562664
Maguark
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование типов.
Более того, не забываем я же проверяю, что я принял и что у меня записано в Str выводя всё в НЕХ формате в RichEdit. И в RichEdit у меня всё выводится правильно.
...
Рейтинг: 0 / 0
01.12.2017, 16:36:39
    #39562676
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Преобразование типов.
MaguarkAnsiString это разве не эквивалент массиву байт?

Нет. Это строка символов в текущей ANSI кодировке.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Преобразование типов. / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]