Показать сообщение отдельно
  #1  
Старый 14.10.2012, 06:28
firmwares firmwares вне форума
Прохожий
 
Регистрация: 30.06.2010
Сообщения: 6
Репутация: 10
Сообщение Работа со считывателем БСК MF-RW-USB

Всем доброго времени суток.

Суть вот в чем:
1. Есть считыватель БСК MF-RW-USB, который создает виртуальный COM порт средствами FT232.
2. Для общения со считывателес используется DLL библиотека, которая содержит в себе все необходимое.
3. Обмен данными со считывателем осуществляется с использованием проверки контрольных сумм по FCS алгаритму.

Функция W_IO: обмен данными со считывателем
Код:
function W_IO(Address, Cmd: char; BodyLen: integer; const CmdBody; var ReplyLen: integer; var Reply-Buffer): char; 
char W_IO(char Address, char Cmd, int BodyLen, void *CmdBody, int *ReplyLen, void *ReplyBuffer);
Описание:
Address адрес считывателя (0..3F)
Cmd команда
BodyLen длина дополнительных данных для команды
CmdBody буфер, содержащий дополнительные данные
ReplyLen длина данных, полученных от считывателя
ReplyBuffer буфер, в который будут помещены полученные данные.
При вызове функции в ReplyLen должен быть записан размер области памяти, отведенной под Reply-
Buffer. На выходе в ReplyLen будет записана длина фактически полученных данных.
Возвращаемое значение – код возврата, см. раздел «Константы» REPLY_XXXXX.

Пример из мануала к библиотеке:
Код:
procedure ReadEventLog;
var
  Ret: char;
  RL: integer;
  Event: TEvent;
begin
// до вызова этой функции должна быть вызвана функция W_SetPortParams
// читаем считыватель с адресом 3F
  repeat
    Ret := W_IO(#$3F, #$10, 0, '', RL, Event);
    if Ret = REPLY_OK then begin
//    Успешно прочитали событие, обрабатываем его…
      Ret := W_IO(#$3F, #$11, 0, '', RL, Event);
      if Ret <> REPLY_ACK then begin
//      Ошибка удаления последнего события – обрабатываем…
      end;
    end else begin
//    Ошибка чтения события – обрабатываем…
    end;
  until Ret <> REPLY_ACK; // выход из цикла чтения при ошибке
end;

Скажите пожалуйста, как сформировать запрос таким образом, чтобы ответ полученный от считывателя вписывался в Edit.
В Edit необходимо вывести данные из ReplyBuffer.

Еще было бы не плохо выкинуть настройки порта в ini
Код:
 t.Port:= 1;
 t.BaudRate:= 9600;
 t.WaitPortTimeout:= 200;
 t.ReadTotalTimeout:= 100;
 t.ReadNextByteTimeout:= 50;
 t.RecordSize:= 21;

Прошу, не пинайте, в работе с портами я ноль, а сделать необходимо.
Всем заранее огромное спасибо за помощь.
Вложения
Тип файла: rar DLL.rar (237.8 Кбайт, 9 просмотров)
Ответить с цитированием