|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Работа со считывателем БСК 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; Прошу, не пинайте, в работе с портами я ноль, а сделать необходимо. Всем заранее огромное спасибо за помощь. |