воскресенье, 21 декабря 2014 г.

Пример работы с HASP-ключом iButton USB reader

Прежде всего, зайдите на ftp-ресурс Alladin и ознакомтесь с содержимым SDK ftp://ftp.aladdin.com/pub/hasp/Sentinel_HASP/API/Sentinel_HASP_Delphi_Run-time_API.zip
Для того, чтобы обратиться к устройству используем CreateFile() и идентификатор '\\.\touchm0'. Для получения статуса или чтения данных - функцию DeviceIoControl().

Пример чтения:
const IBUTTON_READER_CDO_USER_DEVICE_NAME = '\\.\touchm0';
      IOCTL_TMDRV_PRESENCE_DETECT = $00226A90;
      HexDigits: array[0..15] of Char = '0123456789abcdef';

var xHandle: THandle;
    xErr,dwBytes: DWORD;
    bTmId: array[1..8] of Byte;
    i,j: Integer;
    s: String;
begin

  xHandle:=CreateFile(IBUTTON_READER_CDO_USER_DEVICE_NAME,
           GENERIC_READ,FILE_SHARE_READ,nil,
           OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);

  if xHandle=INVALID_HANDLE_VALUE then begin
    xErr:=GetLastError;
    Edit1.Text:='CreateFile '+IntToStr(xErr);
    Exit
  end;

  try
    if not DeviceIoControl(xHandle,IOCTL_TMDRV_PRESENCE_DETECT,
                           nil,0,@bTmId,8,dwBytes,nil) then begin
      xErr:=GetLastError;
      Edit1.Text:='PRESENCE_DETECT '+IntToStr(xErr);
      Exit;
      //xErr=3848273921 если нет iButton
    end;

    s:='';
    for i:=7 downto 2 do begin
      j:=bTmId[i] div 16;
      s:=s+HexDigits[j];
      j:=bTmId[i] mod 16;
      s:=s+HexDigits[j];
    end;

    Edit1.Text:='$'+s;
  finally CloseHandle(xHandle); end;
end;
Ресурсы по тематике
  1. Мини-HASP ключ из любого USB-устройства
  2. Пример работы с HASP-ключом iButton USB reader
  3. Система управления доступом на базе iButton+NFC/RFID ридера из нано-буратины

Комментариев нет:

Отправить комментарий

В комментариях уважайте собеседника, внимательно читайте посты и не додумывайте. Просьбы и предложения из разряда: «можно ваш Skype/Viber/телефон», «напишите мне в vk/FB», а также другие им подобные — игнорируются. Выход новых версий ПО, внешняя ссылка, переставшая работать с течением времени и т.п. не является основанием для претензий. Желающие спокойно подискутировать и высказаться — Welcome. Желающие спонсировать блог — Donate. Нарушение этих простых правил ведет к бану и удалению комментариев без предупреждения.