Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2020, 10:27   #1
Hadroran
 
Регистрация: 14.10.2010
Сообщений: 5
По умолчанию Проблема с переводом 00 в символ для отправки в COM порт

Всем привет.
Столкнулся тут с одной задачкой и не могу ее решить.
Для работы с СОМ портом использую компонент ComPort из библиотеки ComPort Library. Для проверки работы программу - AccessPort.
В порт надо отправить команду AA 02 FF 00 00 A4 0F. ComPort для отправки принимает только значения string переменной. Перевожу команду в строку нарытым кодом:
Код:
function TForm1.HexToStr(HexStr : String; const Text : boolean = True): string;
var
  Hex : byte;
  sTemp : string;
  i : integer;
begin
  Result := '';
  HexStr:= StringReplace(HexStr, ' ', '', [rfReplaceAll]);
  if Length(HexStr) mod 2 <> 0 then
    Exit;

  for i := 2 to Length(HexStr) do
    if i mod 2 = 0 then begin
      sTemp := '$' + Copy(HexStr, i - 1, 2);
      Hex := Byte(StrToInt(sTemp));

      if Hex = $00 then begin
        if Text then
          Result := Result + ' '
        else
          Result := Result + #$00;
        Continue;
      end;

      Result := Result + chr(Hex);
    end;
end;
В результате получается строка https://prnt.sc/vdt0sm
При выполнении команды
Код:
ComPort.WriteStr(Str);
в AccessPort мы видим https://prnt.sc/vdt529, что вместо 00 отправляется 20 (пробел, который образовался при конвертировании).

Подскажите как это можно исправить.
Hadroran вне форума Ответить с цитированием
Старый 05.11.2020, 11:21   #2
Hadroran
 
Регистрация: 14.10.2010
Сообщений: 5
По умолчанию

Hadroran,
Используя метод
Код:
function Write(const Buffer; Count: Integer): Integer;
используем код
Код:
var
  Buf : TBytes ;
begin
  Buf := [$AA, $02, $FF, $00, $00, $A4, $0F] ;
  ComPort.Write(Buf[0], Length(Buf)) ;
end;
Тема закрыта. Спасибо.
Hadroran вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Математика для разработчиков игр: Полезные книги по линейной алгебре для самообучения coremission Gamedev - cоздание игр: Unity, OpenGL, DirectX 0 03.11.2020 13:50
Проблема с переводом HEX в BIN ruby25 Visual C++ 0 09.02.2015 23:28
Проблема с переводом Zalex Microsoft Office Word 1 14.07.2011 18:23
проблема с переводом...как всегда obsession Общие вопросы Delphi 4 21.05.2011 16:46
Проблема с переводом из char в число alenka_ej Помощь студентам 0 08.05.2010 13:47