у вас все вделано верно, почти
Цитата:
Код:
//Формируем запрос...
procedure TMain.Read;
begin
Ret := W_IO(#$1, #$00, 0, '', ReplyLen, ReplyBuffer);
if Ret = REPLY_OK then begin
Edit1.Text:='Команда выполнена успешно, получены данные';
Edit2.Text:=(ReplyBuffer);
end;
if Ret= REPLY_ACK then begin
Edit1.Text:='Получен ответ ACK';
Edit2.Text:=(ReplyBuffer);
end;
if Ret= REPLY_NACK6 then begin
Edit1.Text:='Получен ответ NACK6';
Edit2.Text:=(ReplyBuffer);
end;
end;
|
только необходимо задать значения ReplyLen и выделить память под ReplyBuffer, потом соответственно выводить ReplyBuffer и освобождать память, вы просто объявили эти переменные, необходимо их теперь иннициализировать, что-то типа
Код:
var
...
ReplyBuffer: Pointer;
...
begin
// выделяем память
ReplyLen:=255;
ReplyBuffer:=GetMem(ReplyLen);
Ret := W_IO(#$1, #$00, 0, '', ReplyLen, ReplyBuffer);
// теперь по адресу ReplyBuffer находится массив полученного ответа
//далее по тексту
..
//вывод в Edit2 для начала можно так (см. коментарий в конце ответа)
Edit2.Text:=PChar(ReplyBuffer);
FreeMem(ReplyBuffer,ReplyLen);
end;
т.к.
Цитата:
Общение со считывателем осуществляется в щеснадцатиричной кодировке.
|
(соответсвенно он и отвечает в НЕХ), то в ответе просто набор байт, который находится в ReplyBuffer, а выводя его не вариант, что получаются читабельные символы, необходимо дополнительно их преобразовывать в читабельный вид