PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 28 → Relojes Biometricos HANDPUNCH2000
Relojes Biometricos HANDPUNCH2000
Débuté par Jarod, 09 mar. 2008 00:41 - 18 réponses
Posté le 09 mars 2008 - 00:41
hola estoy tratando de hacer un software para leer informacion desde un reloj biometrico para control de asistencia a travez de una DLL qie trae el reloj rsidll32.dll pero todo los codigos de ejemplo que encuentro estan en Visual Basic o C tengo el manual de la DLL pero todas las declaraciones estan en C y no se como hacerlas en windev 8 si alguien quiere aportar les podria enviar la dll y el manual, les agradeceria el ejemplo de las declaraciones son las siguientes

VB Code
----------
Attribute VB_Name = "Rsidll32"
Option Explicit


'-----------------------------------------------
' rsidll32 enumerations and constants
'-----------------------------------------------

' ////////////////////////////////////////////////////////////////
' //
' // Macros for array sizes and data item ranges.
' //
' // Array sizes are for raw hand reader data.
' //
' ////////////////////////////////////////////////////////////////

Public Const RSI_LEN_ID = 5
Public Const RSI_LEN_TEMPLATE = 9
Public Const RSI_LEN_PASSWORD = 10
Public Const RSI_LEN_MESSAGE = 32
Public Const RSI_LEN_DATA_BANK = 4096
Public Const RSI_LEN_FKEY_DATA = 4096
Public Const RSI_LEN_READY_STR = 14
Public Const RSI_LEN_USER_DATA = 24
Public Const RSI_LEN_USER_NAME = 16
Public Const RSI_LEN_XUD_RESERVED = 6
Public Const RSI_LEN_NUM_XTI = 3
Public Const RSI_LEN_SETUP_DATA = 128
Public Const RSI_LEN_VECTOR = 2 + RSI_LEN_TEMPLATE
Public Const RSI_LEN_USER_REC = 16
Public Const RSI_LEN_USER_REC_PARSE = 23
Public Const RSI_LEN_DISP_MSG = 37
Public Const RSI_LEN_TIME = 6
Public Const RSI_LEN_HOLIDAYS = 48
Public Const RSI_LEN_TIME_ZONES = RSI_LEN_HOLIDAYS + 720
Public Const RSI_LEN_BELLS = 300
Public Const RSI_LEN_PRINTER = 128
Public Const RSI_LEN_DATALOG = 18
Public Const RSI_LEN_DATA_LOG_PARSE = 28
Public Const RSI_LEN_CALIBRATION_DATA = 6
Public Const RSI_LEN_CALIBRATION_PARSE = 6
Public Const RSI_LEN_PROM_DATE = 20
Public Const RSI_LEN_PROM_NAME = 17
Public Const RSI_LEN_EXT_UD = 61
Public Const RSI_LEN_RI_RESERVED = 50
Public Const RSI_LEN_READER_INFO = 102
Public Const RSI_MAX_XTI = 1440 ' max minutes in a day

Public Const RSI_NUM_DAYS = 31
Public Const RSI_NUM_MONTHS = 12
Public Const RSI_NUM_PASSWORDS = 5
Public Const RSI_NUM_TIME_ZONE_INTERVALS = 4
Public Const RSI_NUM_TIME_ZONE_TABLE_ITEMS = 60
Public Const RSI_NUM_BELL_SCHEDULE_ITEMS = 100
Public Const RSI_NUM_DATA_BANK_ITEMS = 256

' NOTE THAT ALL ENUMS DECLARED IN A TYPE END UP AS LONGS

'
' RSI_RESULT
'
Enum RSI_RESULT
RSI_SUCCESS
RSI_ERROR_DATA
RSI_ERROR_COM
RSI_NO_CONNECTION
RSI_COM_TIMEOUT
RSI_BAD_CRC
RSI_PARSE_OVERFLOW
RSI_PARSE_UNDERFLOW
RSI_INVALID_CHANNEL
RSI_INVALID_SOCKET
RSI_INVALID_BUFFER
RSI_SOCKET_ERROR
RSI_CANCEL_IO
End Enum

'
' RSI_MESSAGE_CODE
'
Enum RSI_MESSAGE_CODE
RSI_ACCESS_GRANTED = 0
RSI_WRONG_TIME_PLACE = 1
RSI_HAND_NOT_CLEARED = 2
End Enum

'
' RSI_PROMPT
'
Enum RSI_PROMPT
RSI_RIGHT = 0
RSI_LEFT = 1
RSI_BLANK = 2
End Enum

'
' DAY_NAMES
'
' These are used for the dowMask of time zones and bell schedules
'
Enum DAY_NAMES
RSI_SUNDAY = &H1
RSI_MONDAY = &H2
RSI_TUESDAY = &H4
RSI_WEDNESDAY = &H8
RSI_THURSDAY = &H10
RSI_FRIDAY = &H20
RSI_SATURDAY = &H40
RSI_HOLIDAY = &H80
End Enum

'
' TIME_ZONES
'
Enum TIME_ZONES
RSI_TZ_ALWAYS = 0
RSI_TZ_NEVER = 61
End Enum

'
' SPECIAL_READER_ADDRS
'
Enum SPECIAL_READER_ADDRS
RSI_MIN_READER_ADDRESS = &H0
RSI_MAX_READER_ADDRESS = &HFE
RSI_BROADCAST_ADDRESS = &HAA
RSI_SYSTEM_HOST_ADDRESS = &HFF
End Enum

'
' RSI_BAUD
'
Enum RSI_BAUD
RSI_38400 = 0
RSI_19200 = 1
RSI_9600 = 2
RSI_4800 = 3
RSI_2400 = 4
RSI_1200 = 5
RSI_600 = 6
RSI_300 = 7
End Enum

'
' RSI_AUTHORITY_LEVEL
'
Enum RSI_AUTHORITY_LEVEL
RSI_NONE = 0
RSI_SERVICE = 1
RSI_SETUP = 2
RSI_MANAGEMENT = 3
RSI_ENROLLMENT = 4
RSI_SECURITY = 5
End Enum

'
' RSI_OUTPUT_STATE
'
Enum RSI_OUTPUT_STATE
RSI_TIMED_UNLOCK = 1
RSI_INDEFINATE_UNLOCK = 2
RSI_RELOCK_NOW = 3
RSI_AUX_ON = 4
RSI_AUX_OFF = 5
RSI_DISABLE_LOCK = 6
RSI_AUX1_ON = 7
RSI_AUX1_OFF = 8
RSI_AUX2_ON = 9
RSI_AUX2_OFF = 10
RSI_AUX0_TIMED = 11
RSI_AUX1_TIMED = 12
RSI_AUX2_TIMED = 13
End Enum

'
' RSI_OPERATING_MODE
'
Enum RSI_OPERATING_MODE
RSI_STAND_ALONE = 0
RSI_MASTER = 1
RSI_REMOTE = 2
End Enum

'
' RSI_OUTPUT_MODES
'
Enum RSI_OUTPUT_MODES
RSI_LOCK = 0
RSI_CARD_READER_EMULATION = 1
End Enum

'
' RSI_DATA_LOG_FORMAT
'
Enum RSI_DATA_LOG_FORMAT
RSI_DLF_BUFFER_EMPTY = 0
RSI_DLF_USER_ENROLLED = 1
RSI_DLF_NO_HAND_READ = 2
RSI_DLF_IDENTITY_UNKNOWN = 3
RSI_DLF_EXIT_GRANTED = 4
RSI_DLF_SCORE_IS = 5
RSI_DLF_ACCESS_DENIED = 6
RSI_DLF_IDENTITY_VERIFIED = 7
RSI_DLF_USER_REMOVED = 8
RSI_DLF_ENTER_COMMAND_MODE = 9
RSI_DLF_LEAVE_COMMAND_MODE = 10
RSI_DLF_RECALIBRATED = 11
RSI_DLF_TWO_MAN_TIMEOUT = 12
RSI_DLF_DOOR_FORCED_OPEN = 13
RSI_DLF_TAMPER_ACTIVATED = 14
RSI_DLF_SUPERVISOR_OVERRIDE = 15
RSI_DLF_USER_ADDED_FROM_CARD = 16
RSI_DLF_AUX_INPUT_ON = 17
RSI_DLF_REQ_EXIT_ACTIVATED = 18
RSI_DLF_AUX_OUTPUT_ON = 19
RSI_DLF_BAUD_RATE_CHANGED = 20
RSI_DLF_MESSAGES_READ = 21
RSI_DLF_UNIT_ADDRESS_CHANGED = 22
RSI_DLF_SITE_CODE_CHANGED = 23
RSI_DLF_TIME_AND_DATE_SET = 24
RSI_DLF_LOCK_SETUP_CHANGED = 25
RSI_DLF_PASSWORDS_CHANGED = 26
RSI_DLF_REJECT_THRESHOLD_SET = 27
RSI_DLF_AUX_OUT_SETUP_CHANGED = 28
RSI_DLF_PRINTER_SETUP_CHANGED = 29
RSI_DLF_EXT_DATALOGS = 30
RSI_DLF_DOOR_OPEN_TOO_LONG = 31
RSI_DLF_USERS_LISTED = 32
RSI_DLF_DATA_BASE_SAVED = 33
RSI_DLF_DATA_BASE_RESTORED = 34
RSI_DLF_AMNESTY_PUNCH_GRANTED = 35
RSI_DLF_REJ_OVERRIDE_CHANGED = 36
RSI_DLF_AUTH_LEVEL_CHANGED = 37
RSI_DLF_OPER_MODE_CHANGED = 38
RSI_DLF_OUTPUT_MODE_CHANGED = 39
RSI_DLF_MAX_ID_LEN_CHANGED = 40
RSI_DLF_MEMORY_CLEARED = 41
RSI_DLF_ACCESS_REFUSED_TZ = 42
RSI_DLF_TIME_ZONES_CHANGED = 43
RSI_DLF_USER_TIME_ZONE_CHANGED = 44
RSI_DLF_DURESS_ALARM = 45
RSI_DLF_LOCK_OUTPUT_ON = 46
RSI_DLF_LOCK_OUTPUT_OFF = 47
RSI_DLF_AUX_OUTPUT_OFF = 48
RSI_DLF_SPECIAL_ENROLLMENT = 49
RSI_DLF_AUX_UNLOCK_WIEGAND = 50
RSI_DLF_TIME_RESTRICTIONS = 51
End Enum

Enum RSI_RESPONSE_TYPE
RSI_RESP_NONE = -1
RSI_RESP_HERE_IS_STATUS = &H30 ' '0'
RSI_RESP_HERE_IS_USER_RECORD = &H32 ' '2'
RSI_RESP_HERE_IS_CALIBRATION_DATA = &H33 ' '3'
RSI_RESP_HERE_ARE_RESULTS = &H35 ' '5'
RSI_RESP_HERE_IS_DATA_BANK = &H36 ' '6'
RSI_RESP_HERE_IS_TEMPLATE_VECTOR = &H37 ' '7'
RSI_RESP_HERE_IS_NEXT_DATA_LOG = &H38 ' '8'
RSI_RESP_HERE_IS_SETUP_DATA = &H39 ' '9'
RSI_RESP_HERE_IS_EXT_SETUP_DATA = &H41 ' 'A'
RSI_RESP_UNABLE_TO_COMPLETE = &H58 ' 'X'
RSI_RESP_HERE_IS_OEM_CODE = &H4F ' 'O'
RSI_RESP_HERE_IS_READER_INFO = &H53 ' 'S'
RSI_RESP_HERE_IS_EXT_USER_RECORD = &H31 ' '1'
End Enum

' Enumeration for memory configuration
Enum RSI_MEMORY_OPTIONS
RSI_MEMORY_OPTION_A = 0 ' Small 128K
RSI_MEMORY_OPTION_B = 1 ' Medium 256K
RSI_MEMORY_OPTION_C = 2 ' Large 640K
RSI_MEMORY_OPTION_ERROR
End Enum

' Enumeration for reader model number
Enum RSI_MODELS
RSI_MODEL_HP2K = 0
RSI_MODEL_HP3K = 1
RSI_MODEL_HP4K = 2
RSI_MODEL_HKCR = 3
RSI_MODEL_HKII = 4
RSI_MODEL_5 = 5
RSI_MODEL_6 = 6
RSI_MODEL_7 = 7
RSI_MODEL_8 = 8
RSI_MODEL_9 = 9
RSI_MODEL_10 = 10
RSI_MODEL_11 = 11
RSI_MODEL_12 = 12
RSI_MODEL_13 = 13
RSI_MODEL_14 = 14
RSI_MODEL_SPECIAL = 15
RSI_MODEL_ERROR
End Enum

'
' RSI_DATA_ERROR enumeration
'
' Enumeration for specific data range errors as described below.
'
Enum RSI_DATA_ERROR
RSI_DATA_OK ' No data error
RSI_ERROR_ID_CHAR ' ASCII ID character out of range
Ox30-Ox3F
RSI_ERROR_AUTHORITY_LEVEL ' Authority level out of range 0-5
RSI_ERROR_REJECT_THRESHOLD ' Reject threshold out of range
RSI_ERROR_TIME_ZONE ' Time zone out of range 0-61
RSI_ERROR_YEAR ' added by Prasanth Pulavarthi
RSI_ERROR_MONTH ' Month out of range
RSI_ERROR_DAY
RSI_ERROR_HOUR ' added by Prasanth Pulavarthi
RSI_ERROR_MINUTE
RSI_ERROR_SECOND
RSI_ERROR_TIME_20K
RSI_ERROR_READER_ADDR ' added by Prasanth Pulavarthi
RSI_ERROR_FACILITY_CODE ' added by Prasanth Pulavarthi
RSI_ERROR_ID_LENGTH ' added by Prasanth Pulavarthi
RSI_ERROR_NUM_TRIES ' added by Prasanth Pulavarthi
RSI_ERROR_DURESS_CHAR ' added by Prasanth Pulavarthi
RSI_ERROR_MSG_TEXT ' added by Prasanth Pulavarthi
RSI_ERROR_INTERVAL_TIME ' added by Prasanth Pulavarthi
RSI_ERROR_BELL_DURATION ' added by Prasanth Pulavarthi
RSI_ERROR_BUFFER_INVALID ' added by Prasanth Pulavarthi
RSI_ERROR_CHANNEL_INVALID ' used only by rsiGetDataError()
RSI_ERROR_SERIAL_MODE
End Enum

'
' RSI_COMMAND_TYPE enumeration
'
' These are the characters that are sent to the hand reader to execute a
' command. The argument to rsiSendMessage is set to one of these values.
'
Enum RSI_COMMAND_TYPE
RSI_CMD_RESUME = &H31 ' '1'
RSI_CMD_ABORT = &H32 ' '2'
RSI_CMD_HERE_IS_USER_RECORD = &H37 ' '7'
RSI_CMD_SEND_USER_RECORD = &H38 ' '8'
RSI_CMD_HERE_IS_SETUP_DATA = &H3D ' '='
RSI_CMD_REMOVE_USER_RECORD = &H3F ' '?'
RSI_CMD_CALIBRATE = &H3A ' ':'
RSI_CMD_CLEAR_USER_DATABASE = &H3E ' '>'
RSI_CMD_SEND_CALIBRATION_DATA = &H3C ' '<'
RSI_CMD_SEND_LAST_USER_RECORD = &H40 ' '@'
RSI_CMD_HERE_IS_TIME = &H41 ' 'A'
RSI_CMD_SEND_RESULTS = &H43 ' 'C'
RSI_CMD_SEND_STATUS_CRC = &H44 ' 'D'
RSI_CMD_ENTER_IDLE_MODE = &H45 ' 'E'
RSI_CMD_ENTER_IDLE_MODE2 = &H65 ' 'e'
RSI_CMD_HERE_IS_BANK_NUMBER = &H46 ' 'F'
RSI_CMD_HERE_IS_DATA_BANK = &HC7 ' 'G' + high bit set for
length>255
RSI_CMD_SEND_DATA_BANK = &H48 ' 'H'
RSI_CMD_ENROLL_USER = &H49 ' 'I'
RSI_CMD_VERIFY_USER_EXTERNAL = &H4A ' 'J'
RSI_CMD_SEND_TEMPLATE = &H4B ' 'K'
RSI_CMD_UPDATE_NV_RAM = &H4C ' 'L'
RSI_CMD_SEND_DATA_LOG = &H4D ' 'M'
RSI_CMD_SEND_PREV_DATA_LOG = &H6D ' 'm'
RSI_CMD_SEND_SETUP_DATA = &H4E ' 'N'
RSI_CMD_OUTPUT_CONTROL = &H4F ' 'O'
RSI_CMD_HERE_IS_DISPLAY_MESSAGE = &H50 ' 'P'
RSI_CMD_PRINTER_PASS_THROUGH = &H70 ' 'p'
RSI_CMD_VERIFY_USER_INTERNAL = &H51 ' 'Q'
RSI_CMD_NEXT_MESSAGE_TIME_ZONE = &H52 ' 'R'
RSI_CMD_HERE_ARE_TIME_ZONES = &HD3 ' 'S' + high bit set for
length>255
RSI_CMD_DISPLAY_CODED_MESSAGE = &H56 ' 'V'
RSI_CMD_NEXT_MESSAGE_BELL_SCHEDULE = &H57 ' 'W'
RSI_CMD_HERE_IS_BELL_SCHEDULE = &HD8 ' 'X' + high bit set for
length>255

RSI_CMD_HERE_IS_FKEY_DATA = &H64 ' 'd'
RSI_CMD_SEND_EXT_SETUP_DATA = &H2C ' ','
RSI_CMD_HERE_IS_EXT_SETUP_DATA = &H2B ' '+'
RSI_CMD_SET_USER_DATA = &H66 ' 'f'
RSI_CMD_SEND_OEM_CODE = &H6F ' 'o'
RSI_CMD_SEND_READER_INFO = &H73 ' 's'
RSI_CMD_SEND_EXT_USER_RECORD = &H74 ' 't'
RSI_CMD_SET_EXT_USER_DATA = &H75 ' 'u'
RSI_CMD_ADD_USER_MESSAGE = &H76 ' 'v'
RSI_CMD_REMOVE_USER_MESSAGE = &H77 ' 'w'
RSI_CMD_HERE_IS_EXT_USER_RECORD = &H78 ' 'x'
RSI_CMD_CLEAR_USER_MESSAGES = &H79 ' 'y'
End Enum

'
' RSI_DATA_LOG_DATA_TYPE
'
Enum RSI_DATA_LOG_DATA_TYPE
RSI_NO_DATA_EXPECTED = &HFF
RSI_NO_DATA_ENTERED = &H0
RSI_DATA_IN = &H1
RSI_DATA_BACK1 = &H2
RSI_DATA_OUT = &H3
RSI_DATA_DEPARTMENT = &H4
RSI_DATA_BACK2 = &H5
RSI_DATA_JOB = &H6
RSI_DATA_BACK3 = &H7
RSI_DATA_BULK_HOURS = &H8
RSI_DATA_BULK_DOLLARS = &H9
RSI_DATA_CATEGORY = &H15
End Enum

'
' RSI_TA_DLF_17
' Used for datalog format 17 of high byte of data2
'
Enum RSI_TA_DLF_17
RSI_TA_DLF_17_AUXIN1_ON = &HFF
RSI_TA_DLF_17_AUXIN2_ON = &H1
End Enum

'
' RSI_AUXOUT_ON_EVENTS
' Used for datalog format 19 of 4-byte lsb of data2
'
Enum RSI_AUXOUT_ON_EVENTS
RSI_AUXOUT_ON_TAMPER = 0
RSI_AUXOUT_ON_TZVIOL = 1
RSI_AUXOUT_ON_IDREF = 2
RSI_AUXOUT_ON_DURESS = 3
RSI_AUXOUT_ON_AUXIN1 = 4
RSI_AUXOUT_ON_AUXIN2 = 5
RSI_AUXOUT_ON_DOOR = 6
RSI_AUXOUT_ON_TRYAGAIN = 7
RSI_AUXOUT_ON_F1KEY = 8
RSI_AUXOUT_ON_F2KEY = 9
RSI_AUXOUT_ON_POWER = 10
End Enum

'
' RSI_TA_DLF_19
'
Enum RSI_TA_DLF_19
RSI_TA_DLF_19_AUXOUT0_ON = &HFF
RSI_TA_DLF_19_AUXOUT1_ON = &H1
RSI_TA_DLF_19_AUXOUT2_ON = &H2
End Enum

'
' RSI_TA_DLF_30
' Used for datalog format 30 of high byte of data2
'
Enum RSI_TA_DLF_30
RSI_TA_DLF_30_INT_SETUP = &H1
RSI_TA_DLF_30_SYS_BOARD_STAT = &H2
End Enum

'
' RSI_TA_DLF_48
' Used for datalog format 48 of high byte of data2
'
Enum RSI_TA_DLF_48
RSI_TA_DLF_48_AUXOUT0_OFF = &HFF
RSI_TA_DLF_48_AUXOUT1_OFF = &HFF
RSI_TA_DLF_48_AUXOUT2_OFF = &HFF
End Enum


'-----------------------------------------------
' rsidll32 types
'-----------------------------------------------
'
' RSI_ID
'
Type RSI_ID
b0 As Byte
b1 As Byte
b2 As Byte
b3 As Byte
b4 As Byte
End Type

'
' RSI_STATUS
'
Type RSI_STATUS
h_read As Long ' byte 1 bit 0
led1 As Long ' byte 1 bit 1
led2 As Long ' byte 1 bit 2
led3 As Long ' byte 1 bit 3
led4 As Long ' byte 1 bit 4
any_key As Long ' byte 1 bit 5
aux_out1 As Long ' byte 1 bit 6
aux_out2 As Long ' byte 1 bit 7
res_sys As Long ' byte 2 bit 0
verify_rdy As Long ' byte 2 bit 1
rslts_rdy As Long ' byte 2 bit 2
failed_cmd As Long ' byte 2 bit 3
dlog_rdy As Long ' byte 2 bit 4
id_nim As Long ' byte 2 bit 5
cmd_bsy As Long ' byte 2 bit 6
kp_id As Long ' byte 2 bit 7
tmpr_st As Long ' byte 3 bit 0
aux_in2 As Long ' byte 3 bit 1
aux_st As Long ' byte 3 bit 2
aux_in1 As Long ' byte 3 bit 3 New readers
door_st As Long ' byte 3 bit 4
rex_st As Long ' byte 3 bit 5
lock_st As Long ' byte 3 bit 6
auxo_st As Long ' byte 3 bit 7
End Type

'
' RSI_MESSAGE_TEXT
'
Type RSI_MESSAGE_TEXT
data(0 To RSI_LEN_MESSAGE - 1) As Byte
End Type

'
' RSI_DISPLAY_MESSAGE
'
Type RSI_DISPLAY_MESSAGE
userSpecific As Long ' display the message for a specific
user only?
halfsecs_id As RSI_ID ' how long should the message be
displayed? -OR-
' to which user should the message be
displayed to?
' for halfsecs, use halfsecs_id.b0
msg As RSI_MESSAGE_TEXT ' the message text
End Type

'
' RSI_TIME_DATE
'
Type RSI_TIME_DATE
second As Byte
minute As Byte
hour As Byte
day As Byte
month As Byte
year As Byte
End Type

'
' RSI_DATA_LOG_DATA_1
'
Type RSI_DATA_LOG_DATA_1
data(0 To 5) As Byte ' all others
End Type

'
' RSI_DATA_LOG_DATA_2
'
Type RSI_DATA_LOG_DATA_2
data(0 To 7) As Byte ' all others
End Type

'
' RSI_DATA_LOG_ELEMENT
'
Type RSI_DATA_LOG_ELEMENT ' offset
addr As Byte ' 0
time As RSI_TIME_DATE ' 1-6
pad1 As Byte ' 7
format As RSI_DATA_LOG_FORMAT ' 8-11
data1 As RSI_DATA_LOG_DATA_1 ' 12-17
pad2 As Byte ' 18
pad3 As Byte ' 19
data2 As RSI_DATA_LOG_DATA_2 ' 20-27
End Type

'
' RSI_BELL_SCHEDULE_ELEMENT
'
Type RSI_BELL_SCHEDULE_ELEMENT
min As Byte
hour As Byte
dur As Byte
dowMask As Byte
End Type

'
' RSI_HOLIDAY_ELEMENT
'
Type RSI_HOLIDAY_ELEMENT
data(0 To RSI_NUM_DAYS - 1) As Long
End Type

'
' RSI_TIME_ZONE_INTERVAL
'
Type RSI_TIME_ZONE_INTERVAL
start As Byte
stop As Byte
dowMask As Byte
End Type
'
' RSI_DATA_BANK
'
Type RSI_DATA_BANK
data(0 To RSI_LEN_DATA_BANK - 1) As Byte
End Type
'
' RSI_TIME_ZONE_ELEMENT
'
Type RSI_TIME_ZONE_ELEMENT
tzi(0 To RSI_NUM_TIME_ZONE_INTERVALS - 1) As RSI_TIME_ZONE_INTERVAL
End Type

'
' RSI_TIME_ZONE_TABLE
'
Type RSI_TIME_ZONE_TABLE
holidays(0 To RSI_NUM_MONTHS - 1) As RSI_HOLIDAY_ELEMENT
timeZones(0 To RSI_NUM_TIME_ZONE_TABLE_ITEMS - 1) As
RSI_TIME_ZONE_ELEMENT
End Type

'
' RSI_BELL_SCHEDULE
'
Type RSI_BELL_SCHEDULE
bells(0 To RSI_NUM_BELL_SCHEDULE_ITEMS - 1) As RSI_BELL_SCHEDULE_ELEMENT
End Type

'
' RSI_PASSWORD
'
Type RSI_PASSWORD
pass(0 To RSI_LEN_PASSWORD - 1) As Byte
End Type

'
' RSI_REJECT_THRESHOLD
'
Type RSI_REJECT_THRESHOLD
threshold As Integer
End Type

'
' RSI_TIME_20K
'
Type RSI_TIME_20K
time_20K As Integer
End Type

'
' RSI_READER_ADDRESS
'
Type RSI_READER_ADDRESS
addr As Byte
End Type

'
' RSI_FACILITY_CODE
'
Type RSI_FACILITY_CODE
facil_code As Integer
End Type

'
' RSI_OUTPUT_MODE
'
Type RSI_OUTPUT_MODE
out_mode As Byte
End Type

'
' RSI_IDLEN_TYPE
'
Type RSI_IDLEN_TYPE
idlen_type As Byte
End Type

'
' RSI_ACCOUNTING_MODE
'
Type RSI_ACCOUNTING_MODE
account_mode As Byte
End Type

'
' RSI_TIME_ZONE
'
Type RSI_TIME_ZONE
tz As Byte
End Type

'
' RSI_DURESS_CHAR
'
Type RSI_DURESS_CHAR
Duress_Char As Byte
End Type

'
' RSI_NUM_TRIES_TYPE
'
Type RSI_NUM_TRIES_TYPE
Num_Retries As Byte
End Type

'
' RSI_SETUP_DATA
'
Type RSI_SETUP_DATA
passwords(0 To RSI_NUM_PASSWORDS - 1) As RSI_PASSWORD
threshold As RSI_REJECT_THRESHOLD
auxFlag As Long
auxTimeout As RSI_TIME_20K
printFlag As Long
statusFlag As Long
auxAlarmFlagD As Long
auxAlarmFlagA As Long
auxAlarmFlagI As Long
auxAlarmFlagT As Long
auxAlarmFlagP As Long
lockTime As RSI_TIME_20K
shuntTime As RSI_TIME_20K
networkBaudIndex As RSI_BAUD
printerBaudIndex As RSI_BAUD
readerAddress As RSI_READER_ADDRESS
facilityCode As RSI_FACILITY_CODE
operatingMode As RSI_OPERATING_MODE
outputMode As RSI_OUTPUT_MODE
beeperFlag As Long
idLength As RSI_IDLEN_TYPE
accountingMode As RSI_ACCOUNTING_MODE
unlockTimeZone As RSI_TIME_ZONE
auxTimeZone As RSI_TIME_ZONE
auxDuressFlag As Long
duressCharacter As RSI_DURESS_CHAR
numberOfTries As RSI_NUM_TRIES_TYPE
dlsOn As RSI_TIME_DATE ' // year and second are not used
dlsOff As RSI_TIME_DATE ' // year and second are not used
display12Hour As Long
End Type

'
' RSI_TEMPLATE
'
Type RSI_TEMPLATE
template(0 To RSI_LEN_TEMPLATE - 1) As Byte
End Type

'
' RSI_USER_RECORD
'
Type RSI_USER_RECORD
ID As RSI_ID
templateVector As RSI_TEMPLATE
authorityLevel As RSI_AUTHORITY_LEVEL
rejectThreshold As RSI_REJECT_THRESHOLD
timeZone As RSI_TIME_ZONE
End Type

'
' RSI_CALIBRATION_DATA
'
Type RSI_CALIBRATION_DATA
exposure As Integer
row As Integer
col As Integer
End Type

'
' RSI_SCORE
'
Type RSI_SCORE
score As Integer
End Type

'
' RSI_LAST_TEMPLATE
'
' Note that score is meaningful only after a verify;
' ignore immediately after an enroll.

Type RSI_LAST_TEMPLATE
score As RSI_SCORE
templateVector As RSI_TEMPLATE
End Type

'
' RSI_RESULTS
'
Type RSI_RESULTS
ID As RSI_ID
pad As Byte ' force score to even boundary
score As RSI_SCORE
End Type

'
' RSI_RESPONSE
'
Type RSI_RESPONSE
type As RSI_RESPONSE_TYPE
data As Long
dataSize As Integer ' set by user to sizeof data item (0=don't
care)
buffer As Long ' buffer containing raw data from reader
buflen As Integer ' set by user to length of expected data
response
End Type

'
' RSI_FKEY_DATA
'
Type RSI_FKEY_DATA
data(0 To RSI_LEN_FKEY_DATA - 1) As Byte
End Type

'
' RSI_READY_STR
'
Type RSI_READY_STR
readyStr(0 To RSI_LEN_READY_STR - 1) As Byte
End Type

'
' RSI_SERIAL_MODE
'
Type RSI_SERIAL_MODE
sm As Byte
End Type

'
' RSI_AUX_EVENT_FLAG
'
Type RSI_AUX_EVENT_FLAG
tamper As Long
tzviol As Long
idref As Long
duress As Long
auxin1 As Long
auxin2 As Long
door As Long
tryagain As Long
f1key As Long
f2key As Long
power As Long
unlock As Long
End Type

'
' RSI_AUX_CLEAR_FLAG
'
Type RSI_AUX_CLEAR_FLAG
onverified As Long
End Type

'
' RSI_AUX_OUTPUT_SETUP
'
Type RSI_AUX_OUTPUT_SETUP
flags As RSI_AUX_EVENT_FLAG
time As RSI_TIME_20K
pad1 As Byte
pad2 As Byte
clear As RSI_AUX_CLEAR_FLAG
tz As RSI_TIME_ZONE
End Type

'
' RSI_HP_DLOG_FLAG
'
Type RSI_HP_DLOG_FLAG
hdf As Long
End Type

'
' RSI_TIME_SCALE
'
Type RSI_TIME_SCALE
ts As Byte
End Type

'
' RSI_AUX_KPD_CTRL
'
Type RSI_AUX_KPD_CTRL
akc As Byte
End Type

'
' RSI_LANG_TYPE
'
Type RSI_LANG_TYPE
lt As Byte
End Type

'
' RSI_DATE_FMT
'
Type RSI_DATE_FMT
df As Byte
End Type

'
' RSI_RING_COUNT
'
Type RSI_RING_COUNT
rc As Byte
End Type

'
' RSI_RING_TIMEOUT
'
Type RSI_RING_TIMEOUT
rt As Byte
End Type

'
' RSI_RING_DELAY
'
Type RSI_RING_DELAY
rd As Byte
End Type

'
' RSI_FK_MASKS
'
Type RSI_FK_MASKS
fm As Integer
End Type

'
' RSI_EXT_SETUP_DATA
'
Type RSI_EXT_SETUP_DATA
readyStrVector As RSI_READY_STR
serMode As RSI_SERIAL_MODE
pad As Byte ' force even boundary
flags0 As RSI_AUX_EVENT_FLAG
aux1 As RSI_AUX_OUTPUT_SETUP
aux2 As RSI_AUX_OUTPUT_SETUP
hpDlogFlag As RSI_HP_DLOG_FLAG
timeScale As RSI_TIME_SCALE
auxKpdCtrl As RSI_AUX_KPD_CTRL
langType As RSI_LANG_TYPE
dateFmt As RSI_DATE_FMT
ringCount As RSI_RING_COUNT
ringTimeout As RSI_RING_TIMEOUT
ringDelay As RSI_RING_DELAY
deFKMasks As RSI_FK_MASKS
End Type

'
' RSI_UDF
'
Type RSI_UDF
ud(0 To RSI_LEN_USER_DATA - 1) As Byte
End Type

'
' RSI_USER_DATA
'
Type RSI_USER_DATA
ID As RSI_ID
data As RSI_UDF
End Type

'
' RSI_COMMAND_STATUS
'
Type RSI_COMMAND_STATUS
incomplete As Long
status As RSI_STATUS
End Type

'
' RSI_EXT_TIME_INTERVAL
'
Type RSI_EXT_TIME_INTERVAL
hour_beg As Byte ' hour begin
minute_beg As Byte ' minute begin
hour_end As Byte ' hour end
minute_end As Byte ' minute end
dow As Byte ' day of the week mask
End Type

'
' RSI_NAME
'
Type RSI_NAME
un(0 To RSI_LEN_USER_NAME - 1) As Byte
End Type

'
' RSI_XUD_RESERVED
'
Type RSI_XUD_RESERVED
xr(0 To RSI_LEN_XUD_RESERVED - 1) As Byte
End Type

'
' RSI_AMNESTY
'
Type RSI_AMNESTY
amn As Byte
End Type

'
' RSI_EXT_USER_DATA
'
Type RSI_EXT_USER_DATA
ti(0 To RSI_LEN_NUM_XTI - 1) As RSI_EXT_TIME_INTERVAL
pad As Byte ' force even boundary
fkmasks As RSI_FK_MASKS
name As RSI_NAME
data As RSI_UDF
amnesty As RSI_AMNESTY
reserved As RSI_XUD_RESERVED
End Type

'
' RSI_EXT_USER_DATA_FIELD
'
Type RSI_EXT_USER_DATA_FIELD
ID As RSI_ID
pad As Byte ' force xud to even boundary
xud As RSI_EXT_USER_DATA
End Type

'
' RSI_USER_MESSAGE
'
Type RSI_USER_MESSAGE
ID As RSI_ID
msg As RSI_MESSAGE_TEXT
End Type

'
' RSI_EXT_USER_RECORD
'
Type RSI_EXT_USER_RECORD
ur As RSI_USER_RECORD ' basic user record
xud As RSI_EXT_USER_DATA ' extended user data
End Type

'
' RSI_PROM_DATE
'
Type RSI_PROM_DATE
pd(0 To RSI_LEN_PROM_DATE - 1) As Byte
End Type

'
' RSI_PROM_NAME
'
Type RSI_PROM_NAME
pn(0 To RSI_LEN_PROM_NAME - 1) As Byte
End Type

'
' RSI_RI_RESERVED
'
Type RSI_RI_RESERVED
rr(0 To RSI_LEN_RI_RESERVED - 1) As Byte
End Type

'
' RSI_READER_INFO
'
Type RSI_READER_INFO
model As Byte
memory As Byte
promDate As RSI_PROM_DATE
promName As RSI_PROM_NAME
pad1 As Byte ' force to even boundary
sn As Long
snp As Byte
pad2 As Byte ' force userCap to even boundary
userCap As Integer
dlogCap As Integer
usersEnrolled As Integer
dlogsPresent As Integer
reserved As RSI_RI_RESERVED
End Type

'
' RSI_OEM_CODE
'
Type RSI_OEM_CODE
code As Integer
End Type

'
' RSI_BULK_HOURS
' Used for T&A data log format 15, 2nd item, data2, type 08
'
Type RSI_BULK_HOURS
hours As Integer
minutes As Byte
deduct As Byte
End Type

'
' RSI_BULK_DOLLARS
' Used for T&A data log format 15, 2nd item, data2, type 09
'
Type RSI_BULK_DOLLARS
dollars As Integer
cents As Byte
deduct As Byte
End Type

'
' BYTE RSI_BCD_4
'
Type RSI_BCD_4
rb4(0 To 3) As Byte
End Type

'
' RSI_TA_15_1
'
Type RSI_TA_15_1
type As RSI_DATA_LOG_DATA_TYPE ' either 0x15 or 0xFF
category As RSI_BCD_4 ' for type=0x15 only
End Type

'
' RSI_TA_15_2
'
Type RSI_TA_15_2
type As RSI_DATA_LOG_DATA_TYPE ' OxFF or 0 - 9
data As RSI_BCD_4
End Type

'
' RSI_TA_15_3
'
Type RSI_TA_15_3
type As RSI_DATA_LOG_DATA_TYPE ' 0xFF, 00, 04
department As RSI_BCD_4 ' only for type 04
End Type

'
' RSI_TA_7
'
Type RSI_TA_7
type As RSI_DATA_LOG_DATA_TYPE ' 0xFF, 00 - 07
department As RSI_BCD_4 ' for types 01 - 07 only
End Type

'
' RSI_DLF_17
'
Type RSI_DLF_17
ta As RSI_TA_DLF_17
data As RSI_BCD_4
End Type

'
' RSI_DLF_19
'
Type RSI_DLF_19
ta As RSI_TA_DLF_19
data As RSI_BCD_4
End Type

'
' RSI_DLF_30
'
Type RSI_DLF_30
ta As RSI_TA_DLF_30
data As RSI_BCD_4
End Type

'
' RSI_DLF_48
'
Type RSI_DLF_48
ta As RSI_TA_DLF_48
data As RSI_BCD_4
End Type

'
' rsidll32 function declarations
'

' // Level 0

Declare Function rsiCloseChannel Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiGetHandReader Lib "rsidll32" ( _
ByVal chnl As Long _
) As Byte

Declare Function rsiInstallChannel Lib "rsidll32" ( _
ByVal ComPort As Long _
) As Long

Declare Function rsiOpenCustomChannel Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiOpenDirectChannel Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal BaudRate As Long _
) As Long

Declare Function rsiOpenModemChannel Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal baud As Long, _
ByVal number As String, _
ByVal speaker As Long _
) As Long

Declare Function rsiSetHandReader Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal addr As Long, _
status As RSI_STATUS _
) As Long

Declare Function rsiSetModemInitString Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal init_string As String _
) As Long

' // Ethernet

Declare Function rsiCleanupWsock Lib "rsidll32" ( _
) As Long

Declare Function rsiCloseWsock Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiInitWsock Lib "rsidll32" ( _
ByVal HostName As String, _
ByVal port As Long _
) As Long

Declare Function rsiReadSocket Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef c As Byte _
) As Long

Declare Function rsiStartupWsock Lib "rsidll32" ( _
) As Long

Declare Function rsiWriteSocket Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal c As Byte _
) As Long

'
///////////////////////////////////////////////////////////////////////////////
' //
' // LEVEL 2
' //
' // Commands to hand reader. See Software Manual for descriptions.
' //
' // Validation is performed on all data and RSI_ERROR_DATA may be returned.
' //
' // Note that the data structures these functions use are not necessarily
the
' // structures that the hand reader uses.
' //
'
///////////////////////////////////////////////////////////////////////////////


Declare Function rsiAbortCommand Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiBeep Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal duration As Byte, _
ByVal count As Byte _
) As Long

Declare Function rsiCalibrate Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiClearUserDataBase Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiDisplayCodedMessage Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal msg As RSI_MESSAGE_CODE, _
ByVal halfsecs As Byte _
) As Long

Declare Function rsiEnrollUser Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal Prompt As RSI_PROMPT _
) As Long

Declare Function rsiEnterIdleMode Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiEnterIdleMode2 Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiHereAreTimeZones Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef tz As RSI_TIME_ZONE_TABLE _
) As Long

Declare Function rsiHereIsBankNumber Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal Bank As Long _
) As Long

Declare Function rsiHereIsBellScheduleTable Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef schedule As RSI_BELL_SCHEDULE _
) As Long

Declare Function rsiHereIsDataBank Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef dbnk As RSI_DATA_BANK _
) As Long

Declare Function rsiHereIsDisplayMessage Lib "rsidll32" ( _
ByVal chnl As Long, _
msg As RSI_DISPLAY_MESSAGE _
) As Long

Declare Function rsiHereIsSetupData Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Setup As RSI_SETUP_DATA _
) As Long

Declare Function rsiHereIsTime Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef time As RSI_TIME_DATE _
) As Long

Declare Function rsiHereIsUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ur As RSI_USER_RECORD _
) As Long

Declare Function rsiHereIsSmartCardRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ur As RSI_USER_RECORD _
) As Long

Declare Function rsiIDToText Lib "rsidll32" ( _
ID As Any, _
ByVal text As String _
) As Long

Declare Function rsiNextMessageIsBellScheduleTable Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiNextMessageIsTimeZone Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiOutputControl Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal OutState As RSI_OUTPUT_STATE _
) As Long

Declare Function rsiPrinterPassThrough Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal Out As String, _
ByVal length As Long _
) As Long

Declare Function rsiRemoveUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ID As RSI_ID _
) As Long

Declare Function rsiResume Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendCalibrationData Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendDataBank Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal bnk As Long _
) As Long

Declare Function rsiSendDataLog Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendLastUserRecord Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendPreviousDataLog Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendResults Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendSetupData Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendStatusCRC Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef status As RSI_STATUS _
) As Long

Declare Function rsiSendTemplate Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ID As RSI_ID _
) As Long

Declare Function rsiTextToID Lib "rsidll32" ( _
ByVal text As String, _
ID As RSI_ID _
) As Long

Declare Function rsiUpdateNVRam Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiVerifyOnExternalData Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Prompt As RSI_PROMPT, _
ByRef tmpl As RSI_TEMPLATE _
) As Long

Declare Function rsiVerifyOnInternalData Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ID As RSI_ID _
) As Long

Declare Function rsiHereIsFkeyData Lib "rsidll32" ( _
ByVal chnl As Long, _
fkeyData As RSI_FKEY_DATA _
) As Long

Declare Function rsiHereIsExtSetupData Lib "rsidll32" ( _
ByVal chnl As Long, _
Setup As RSI_EXT_SETUP_DATA _
) As Long

Declare Function rsiSetUserData Lib "rsidll32" ( _
ByVal chnl As Long, _
udf As RSI_USER_DATA, _
cstat As RSI_COMMAND_STATUS _
) As Long

Declare Function rsiSetExtUserData Lib "rsidll32" ( _
ByVal chnl As Long, _
xudf As RSI_EXT_USER_DATA_FIELD, _
cstat As RSI_COMMAND_STATUS _
) As Long

Declare Function rsiAddUserMessage Lib "rsidll32" ( _
ByVal chnl As Long, _
um As RSI_USER_MESSAGE, _
cstat As RSI_COMMAND_STATUS _
) As Long

Declare Function rsiRemoveUserMessage Lib "rsidll32" ( _
ByVal chnl As Long, _
ID As RSI_ID _
) As Long

Declare Function rsiHereIsExtUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
xur As RSI_EXT_USER_RECORD _
) As Long

Declare Function rsiClearUserMessages Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

'
///////////////////////////////////////////////////////////////////////////////
' //
' // LEVEL 3
' //
' // High level functions to perform various hand reader tasks.
' //
'
///////////////////////////////////////////////////////////////////////////////
Declare Function rsiAllocResponseBuffer Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiDeAllocResponseBuffer Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiGetCalibrationData Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef calib As RSI_CALIBRATION_DATA _
) As Long

Declare Function rsiGetDataBank Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal bnk As Long, _
ByRef dbnk As RSI_DATA_BANK _
) As Long

Declare Function rsiGetDataLogElement Lib "rsidll32" ( _
ByVal chnl As Long, _
DataLog As RSI_DATA_LOG_ELEMENT, _
ByVal bPrev As Long _
) As Long

Declare Function rsiGetLastTemplate Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef tmpl As RSI_LAST_TEMPLATE _
) As Long

Declare Function rsiGetLastUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ur As RSI_USER_RECORD _
) As Long

Declare Function rsiGetResults Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Results As RSI_RESULTS _
) As Long

Declare Function rsiGetResponse Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Response As RSI_RESPONSE _
) As Long

Declare Function rsiGetSetupData Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Setup As RSI_SETUP_DATA _
) As Long

Declare Function rsiGetStatus Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef status As RSI_STATUS _
) As Long

Declare Function rsiGetUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ID As RSI_ID, _
ByRef ur As RSI_USER_RECORD _
) As Long

Declare Function rsiParseResponse Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Response As RSI_RESPONSE _
) As Long

Declare Function rsiReadResponseBuffer Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef bufptr As Long, _
ByRef buflen As Long _
) As Long

Declare Function rsiSetBellSchedule Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef schedule As RSI_BELL_SCHEDULE _
) As Long

Declare Function rsiSetDataBank Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal bnk As Long, _
ByRef dbnk As RSI_DATA_BANK _
) As Long

Declare Function rsiSetTimeZoneTable Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef tz As RSI_TIME_ZONE_TABLE _
) As Long

Declare Function rsiGetReaderInfo Lib "rsidll32" ( _
ByVal chnl As Long, _
ri As RSI_READER_INFO _
) As Long

Declare Function rsiGetOemCode Lib "rsidll32" ( _
ByVal chnl As Long, _
oem As RSI_OEM_CODE _
) As Long

Declare Function rsiGetExtSetupData Lib "rsidll32" ( _
ByVal chnl As Long, _
Setup As RSI_EXT_SETUP_DATA _
) As Long

Declare Function rsiGetExtUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ID As RSI_ID, _
xur As RSI_EXT_USER_RECORD _
) As Long

Declare Sub rsiSetPings Lib "rsidll32" ( _
ByVal cnt As Long _
)

'
' Windows API function declarations
'
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
Dest As Any, _
ByVal Src As Any, _
ByVal length As Long _
)

Declare Sub CopyMemory2 Lib "kernel32" Alias "RtlMoveMemory" ( _
ByVal Dest As Any, _
ByVal Src As Any, _
ByVal length As Long _
)

Declare Sub CopyMemory3 Lib "kernel32" Alias "RtlMoveMemory" ( _
Dest As Any, _
Src As Any, _
ByVal length As Long _
)

Declare Sub FillMemory Lib "kernel32" Alias "RtlFillMemory" ( _
Dest As Any, _
ByVal length As Long, _
ByVal Fill As Byte _
)

Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
Dest As Any, _
Src As Any, _
ByVal length As Long _
)

Public Const GMEM_MOVEABLE = &H2
Public Const GMEM_ZEROINIT = &H40

Public Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long,
ByVal dwBytes As Long) As Long
Public Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As
Long
Public Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As
Long
Public Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As
Long
Posté le 15 mai 2008 - 08:19
yo estoy haciendo una interfase para el handpunch 3000 y me seria muy util esa dll y el manual podrias ayudarme enviandomela

gracias
Posté le 04 juin 2008 - 08:52
Hola Oswaldo te puedo ayudar con el manual original de la laibreria esribeme a mi correo jaime.rodriguez@kfc.com.ve a ver si nos ayudamos ya logre comunicarme con el reloj hasta ahora lo que he podido hacer es leer la fecha y poderla cambiar pero hay unas declaraciones que no entiendo si quieres que te envie lo que podido avanzar avisame

saludos
JAROD

Oswaldo Alarcon wrote in news message <482b3d2d$1@news.pcsoft.fr>:




yo estoy haciendo una interfase para el handpunch 3000 y me seria muy util esa dll y el manual podrias ayudarme enviandomela

gracias

Posté le 26 novembre 2008 - 08:19
Hola que tal yo tambien ya logre que se comunicara con el relog la handpunch pero no puedo hacer que jale el log de recoleccion rsiGetDataLogElement no me marca error pero no trae nada de datos, espero me puedan ayudar
Posté le 26 novembre 2008 - 14:13
WIndev XI y XII(creo que en versiones anteriores también) tiene una utilidad que se llama WDAPI dentro de ella tienes una pestaña que se llama C to W-Language conversion, ahi podrás convertir estructuras y funciones de un lenguage a otro.

Espero que te sirva

Saludos
Posté le 31 mars 2009 - 02:17
Hola, Alguien tendrá el manual del HANDPUNCH3000 pero en español?

si es positivo favor de reenviármelo a mí cuenta: jcastilla@identitronics.com, gracias de antemano.



Jarod wrote in news message <47d2d319$1@news.pcsoft.fr>:





hola estoy tratando de hacer un software para leer informacion desde un reloj biometrico para control de asistencia a travez de una DLL qie trae el reloj rsidll32.dll pero todo los codigos de ejemplo que encuentro estan en Visual Basic o C tengo el manual de la DLL pero todas las declaraciones estan en C y no se como hacerlas en windev 8 si alguien quiere aportar les podria enviar la dll y el manual, les agradeceria el ejemplo de las declaraciones son las siguientes

VB Code
----------
Attribute VB_Name = "Rsidll32"
Option Explicit


'-----------------------------------------------
' rsidll32 enumerations and constants
'-----------------------------------------------

' ////////////////////////////////////////////////////////////////
' //
' // Macros for array sizes and data item ranges.
' //
' // Array sizes are for raw hand reader data.
' //
' ////////////////////////////////////////////////////////////////

Public Const RSI_LEN_ID = 5
Public Const RSI_LEN_TEMPLATE = 9
Public Const RSI_LEN_PASSWORD = 10
Public Const RSI_LEN_MESSAGE = 32
Public Const RSI_LEN_DATA_BANK = 4096
Public Const RSI_LEN_FKEY_DATA = 4096
Public Const RSI_LEN_READY_STR = 14
Public Const RSI_LEN_USER_DATA = 24
Public Const RSI_LEN_USER_NAME = 16
Public Const RSI_LEN_XUD_RESERVED = 6
Public Const RSI_LEN_NUM_XTI = 3
Public Const RSI_LEN_SETUP_DATA = 128
Public Const RSI_LEN_VECTOR = 2 + RSI_LEN_TEMPLATE
Public Const RSI_LEN_USER_REC = 16
Public Const RSI_LEN_USER_REC_PARSE = 23
Public Const RSI_LEN_DISP_MSG = 37
Public Const RSI_LEN_TIME = 6
Public Const RSI_LEN_HOLIDAYS = 48
Public Const RSI_LEN_TIME_ZONES = RSI_LEN_HOLIDAYS + 720
Public Const RSI_LEN_BELLS = 300
Public Const RSI_LEN_PRINTER = 128
Public Const RSI_LEN_DATALOG = 18
Public Const RSI_LEN_DATA_LOG_PARSE = 28
Public Const RSI_LEN_CALIBRATION_DATA = 6
Public Const RSI_LEN_CALIBRATION_PARSE = 6
Public Const RSI_LEN_PROM_DATE = 20
Public Const RSI_LEN_PROM_NAME = 17
Public Const RSI_LEN_EXT_UD = 61
Public Const RSI_LEN_RI_RESERVED = 50
Public Const RSI_LEN_READER_INFO = 102
Public Const RSI_MAX_XTI = 1440 ' max minutes in a day

Public Const RSI_NUM_DAYS = 31
Public Const RSI_NUM_MONTHS = 12
Public Const RSI_NUM_PASSWORDS = 5
Public Const RSI_NUM_TIME_ZONE_INTERVALS = 4
Public Const RSI_NUM_TIME_ZONE_TABLE_ITEMS = 60
Public Const RSI_NUM_BELL_SCHEDULE_ITEMS = 100
Public Const RSI_NUM_DATA_BANK_ITEMS = 256

' NOTE THAT ALL ENUMS DECLARED IN A TYPE END UP AS LONGS

'
' RSI_RESULT
'
Enum RSI_RESULT
RSI_SUCCESS
RSI_ERROR_DATA
RSI_ERROR_COM
RSI_NO_CONNECTION
RSI_COM_TIMEOUT
RSI_BAD_CRC
RSI_PARSE_OVERFLOW
RSI_PARSE_UNDERFLOW
RSI_INVALID_CHANNEL
RSI_INVALID_SOCKET
RSI_INVALID_BUFFER
RSI_SOCKET_ERROR
RSI_CANCEL_IO
End Enum

'
' RSI_MESSAGE_CODE
'
Enum RSI_MESSAGE_CODE
RSI_ACCESS_GRANTED = 0
RSI_WRONG_TIME_PLACE = 1
RSI_HAND_NOT_CLEARED = 2
End Enum

'
' RSI_PROMPT
'
Enum RSI_PROMPT
RSI_RIGHT = 0
RSI_LEFT = 1
RSI_BLANK = 2
End Enum

'
' DAY_NAMES
'
' These are used for the dowMask of time zones and bell schedules
'
Enum DAY_NAMES
RSI_SUNDAY = &H1
RSI_MONDAY = &H2
RSI_TUESDAY = &H4
RSI_WEDNESDAY = &H8
RSI_THURSDAY = &H10
RSI_FRIDAY = &H20
RSI_SATURDAY = &H40
RSI_HOLIDAY = &H80
End Enum

'
' TIME_ZONES
'
Enum TIME_ZONES
RSI_TZ_ALWAYS = 0
RSI_TZ_NEVER = 61
End Enum

'
' SPECIAL_READER_ADDRS
'
Enum SPECIAL_READER_ADDRS
RSI_MIN_READER_ADDRESS = &H0
RSI_MAX_READER_ADDRESS = &HFE
RSI_BROADCAST_ADDRESS = &HAA
RSI_SYSTEM_HOST_ADDRESS = &HFF
End Enum

'
' RSI_BAUD
'
Enum RSI_BAUD
RSI_38400 = 0
RSI_19200 = 1
RSI_9600 = 2
RSI_4800 = 3
RSI_2400 = 4
RSI_1200 = 5
RSI_600 = 6
RSI_300 = 7
End Enum

'
' RSI_AUTHORITY_LEVEL
'
Enum RSI_AUTHORITY_LEVEL
RSI_NONE = 0
RSI_SERVICE = 1
RSI_SETUP = 2
RSI_MANAGEMENT = 3
RSI_ENROLLMENT = 4
RSI_SECURITY = 5
End Enum

'
' RSI_OUTPUT_STATE
'
Enum RSI_OUTPUT_STATE
RSI_TIMED_UNLOCK = 1
RSI_INDEFINATE_UNLOCK = 2
RSI_RELOCK_NOW = 3
RSI_AUX_ON = 4
RSI_AUX_OFF = 5
RSI_DISABLE_LOCK = 6
RSI_AUX1_ON = 7
RSI_AUX1_OFF = 8
RSI_AUX2_ON = 9
RSI_AUX2_OFF = 10
RSI_AUX0_TIMED = 11
RSI_AUX1_TIMED = 12
RSI_AUX2_TIMED = 13
End Enum

'
' RSI_OPERATING_MODE
'
Enum RSI_OPERATING_MODE
RSI_STAND_ALONE = 0
RSI_MASTER = 1
RSI_REMOTE = 2
End Enum

'
' RSI_OUTPUT_MODES
'
Enum RSI_OUTPUT_MODES
RSI_LOCK = 0
RSI_CARD_READER_EMULATION = 1
End Enum

'
' RSI_DATA_LOG_FORMAT
'
Enum RSI_DATA_LOG_FORMAT
RSI_DLF_BUFFER_EMPTY = 0
RSI_DLF_USER_ENROLLED = 1
RSI_DLF_NO_HAND_READ = 2
RSI_DLF_IDENTITY_UNKNOWN = 3
RSI_DLF_EXIT_GRANTED = 4
RSI_DLF_SCORE_IS = 5
RSI_DLF_ACCESS_DENIED = 6
RSI_DLF_IDENTITY_VERIFIED = 7
RSI_DLF_USER_REMOVED = 8
RSI_DLF_ENTER_COMMAND_MODE = 9
RSI_DLF_LEAVE_COMMAND_MODE = 10
RSI_DLF_RECALIBRATED = 11
RSI_DLF_TWO_MAN_TIMEOUT = 12
RSI_DLF_DOOR_FORCED_OPEN = 13
RSI_DLF_TAMPER_ACTIVATED = 14
RSI_DLF_SUPERVISOR_OVERRIDE = 15
RSI_DLF_USER_ADDED_FROM_CARD = 16
RSI_DLF_AUX_INPUT_ON = 17
RSI_DLF_REQ_EXIT_ACTIVATED = 18
RSI_DLF_AUX_OUTPUT_ON = 19
RSI_DLF_BAUD_RATE_CHANGED = 20
RSI_DLF_MESSAGES_READ = 21
RSI_DLF_UNIT_ADDRESS_CHANGED = 22
RSI_DLF_SITE_CODE_CHANGED = 23
RSI_DLF_TIME_AND_DATE_SET = 24
RSI_DLF_LOCK_SETUP_CHANGED = 25
RSI_DLF_PASSWORDS_CHANGED = 26
RSI_DLF_REJECT_THRESHOLD_SET = 27
RSI_DLF_AUX_OUT_SETUP_CHANGED = 28
RSI_DLF_PRINTER_SETUP_CHANGED = 29
RSI_DLF_EXT_DATALOGS = 30
RSI_DLF_DOOR_OPEN_TOO_LONG = 31
RSI_DLF_USERS_LISTED = 32
RSI_DLF_DATA_BASE_SAVED = 33
RSI_DLF_DATA_BASE_RESTORED = 34
RSI_DLF_AMNESTY_PUNCH_GRANTED = 35
RSI_DLF_REJ_OVERRIDE_CHANGED = 36
RSI_DLF_AUTH_LEVEL_CHANGED = 37
RSI_DLF_OPER_MODE_CHANGED = 38
RSI_DLF_OUTPUT_MODE_CHANGED = 39
RSI_DLF_MAX_ID_LEN_CHANGED = 40
RSI_DLF_MEMORY_CLEARED = 41
RSI_DLF_ACCESS_REFUSED_TZ = 42
RSI_DLF_TIME_ZONES_CHANGED = 43
RSI_DLF_USER_TIME_ZONE_CHANGED = 44
RSI_DLF_DURESS_ALARM = 45
RSI_DLF_LOCK_OUTPUT_ON = 46
RSI_DLF_LOCK_OUTPUT_OFF = 47
RSI_DLF_AUX_OUTPUT_OFF = 48
RSI_DLF_SPECIAL_ENROLLMENT = 49
RSI_DLF_AUX_UNLOCK_WIEGAND = 50
RSI_DLF_TIME_RESTRICTIONS = 51
End Enum

Enum RSI_RESPONSE_TYPE
RSI_RESP_NONE = -1
RSI_RESP_HERE_IS_STATUS = &H30 ' '0'
RSI_RESP_HERE_IS_USER_RECORD = &H32 ' '2'
RSI_RESP_HERE_IS_CALIBRATION_DATA = &H33 ' '3'
RSI_RESP_HERE_ARE_RESULTS = &H35 ' '5'
RSI_RESP_HERE_IS_DATA_BANK = &H36 ' '6'
RSI_RESP_HERE_IS_TEMPLATE_VECTOR = &H37 ' '7'
RSI_RESP_HERE_IS_NEXT_DATA_LOG = &H38 ' '8'
RSI_RESP_HERE_IS_SETUP_DATA = &H39 ' '9'
RSI_RESP_HERE_IS_EXT_SETUP_DATA = &H41 ' 'A'
RSI_RESP_UNABLE_TO_COMPLETE = &H58 ' 'X'
RSI_RESP_HERE_IS_OEM_CODE = &H4F ' 'O'
RSI_RESP_HERE_IS_READER_INFO = &H53 ' 'S'
RSI_RESP_HERE_IS_EXT_USER_RECORD = &H31 ' '1'
End Enum

' Enumeration for memory configuration
Enum RSI_MEMORY_OPTIONS
RSI_MEMORY_OPTION_A = 0 ' Small 128K
RSI_MEMORY_OPTION_B = 1 ' Medium 256K
RSI_MEMORY_OPTION_C = 2 ' Large 640K
RSI_MEMORY_OPTION_ERROR
End Enum

' Enumeration for reader model number
Enum RSI_MODELS
RSI_MODEL_HP2K = 0
RSI_MODEL_HP3K = 1
RSI_MODEL_HP4K = 2
RSI_MODEL_HKCR = 3
RSI_MODEL_HKII = 4
RSI_MODEL_5 = 5
RSI_MODEL_6 = 6
RSI_MODEL_7 = 7
RSI_MODEL_8 = 8
RSI_MODEL_9 = 9
RSI_MODEL_10 = 10
RSI_MODEL_11 = 11
RSI_MODEL_12 = 12
RSI_MODEL_13 = 13
RSI_MODEL_14 = 14
RSI_MODEL_SPECIAL = 15
RSI_MODEL_ERROR
End Enum

'
' RSI_DATA_ERROR enumeration
'
' Enumeration for specific data range errors as described below.
'
Enum RSI_DATA_ERROR
RSI_DATA_OK ' No data error
RSI_ERROR_ID_CHAR ' ASCII ID character out of range
Ox30-Ox3F
RSI_ERROR_AUTHORITY_LEVEL ' Authority level out of range 0-5
RSI_ERROR_REJECT_THRESHOLD ' Reject threshold out of range
RSI_ERROR_TIME_ZONE ' Time zone out of range 0-61
RSI_ERROR_YEAR ' added by Prasanth Pulavarthi
RSI_ERROR_MONTH ' Month out of range
RSI_ERROR_DAY
RSI_ERROR_HOUR ' added by Prasanth Pulavarthi
RSI_ERROR_MINUTE
RSI_ERROR_SECOND
RSI_ERROR_TIME_20K
RSI_ERROR_READER_ADDR ' added by Prasanth Pulavarthi
RSI_ERROR_FACILITY_CODE ' added by Prasanth Pulavarthi
RSI_ERROR_ID_LENGTH ' added by Prasanth Pulavarthi
RSI_ERROR_NUM_TRIES ' added by Prasanth Pulavarthi
RSI_ERROR_DURESS_CHAR ' added by Prasanth Pulavarthi
RSI_ERROR_MSG_TEXT ' added by Prasanth Pulavarthi
RSI_ERROR_INTERVAL_TIME ' added by Prasanth Pulavarthi
RSI_ERROR_BELL_DURATION ' added by Prasanth Pulavarthi
RSI_ERROR_BUFFER_INVALID ' added by Prasanth Pulavarthi
RSI_ERROR_CHANNEL_INVALID ' used only by rsiGetDataError()
RSI_ERROR_SERIAL_MODE
End Enum

'
' RSI_COMMAND_TYPE enumeration
'
' These are the characters that are sent to the hand reader to execute a
' command. The argument to rsiSendMessage is set to one of these values.
'
Enum RSI_COMMAND_TYPE
RSI_CMD_RESUME = &H31 ' '1'
RSI_CMD_ABORT = &H32 ' '2'
RSI_CMD_HERE_IS_USER_RECORD = &H37 ' '7'
RSI_CMD_SEND_USER_RECORD = &H38 ' '8'
RSI_CMD_HERE_IS_SETUP_DATA = &H3D ' '='
RSI_CMD_REMOVE_USER_RECORD = &H3F ' '?'
RSI_CMD_CALIBRATE = &H3A ' ':'
RSI_CMD_CLEAR_USER_DATABASE = &H3E ' '>'
RSI_CMD_SEND_CALIBRATION_DATA = &H3C ' '<'
RSI_CMD_SEND_LAST_USER_RECORD = &H40 ' '@'
RSI_CMD_HERE_IS_TIME = &H41 ' 'A'
RSI_CMD_SEND_RESULTS = &H43 ' 'C'
RSI_CMD_SEND_STATUS_CRC = &H44 ' 'D'
RSI_CMD_ENTER_IDLE_MODE = &H45 ' 'E'
RSI_CMD_ENTER_IDLE_MODE2 = &H65 ' 'e'
RSI_CMD_HERE_IS_BANK_NUMBER = &H46 ' 'F'
RSI_CMD_HERE_IS_DATA_BANK = &HC7 ' 'G' + high bit set for
length>255
RSI_CMD_SEND_DATA_BANK = &H48 ' 'H'
RSI_CMD_ENROLL_USER = &H49 ' 'I'
RSI_CMD_VERIFY_USER_EXTERNAL = &H4A ' 'J'
RSI_CMD_SEND_TEMPLATE = &H4B ' 'K'
RSI_CMD_UPDATE_NV_RAM = &H4C ' 'L'
RSI_CMD_SEND_DATA_LOG = &H4D ' 'M'
RSI_CMD_SEND_PREV_DATA_LOG = &H6D ' 'm'
RSI_CMD_SEND_SETUP_DATA = &H4E ' 'N'
RSI_CMD_OUTPUT_CONTROL = &H4F ' 'O'
RSI_CMD_HERE_IS_DISPLAY_MESSAGE = &H50 ' 'P'
RSI_CMD_PRINTER_PASS_THROUGH = &H70 ' 'p'
RSI_CMD_VERIFY_USER_INTERNAL = &H51 ' 'Q'
RSI_CMD_NEXT_MESSAGE_TIME_ZONE = &H52 ' 'R'
RSI_CMD_HERE_ARE_TIME_ZONES = &HD3 ' 'S' + high bit set for
length>255
RSI_CMD_DISPLAY_CODED_MESSAGE = &H56 ' 'V'
RSI_CMD_NEXT_MESSAGE_BELL_SCHEDULE = &H57 ' 'W'
RSI_CMD_HERE_IS_BELL_SCHEDULE = &HD8 ' 'X' + high bit set for
length>255

RSI_CMD_HERE_IS_FKEY_DATA = &H64 ' 'd'
RSI_CMD_SEND_EXT_SETUP_DATA = &H2C ' ','
RSI_CMD_HERE_IS_EXT_SETUP_DATA = &H2B ' '+'
RSI_CMD_SET_USER_DATA = &H66 ' 'f'
RSI_CMD_SEND_OEM_CODE = &H6F ' 'o'
RSI_CMD_SEND_READER_INFO = &H73 ' 's'
RSI_CMD_SEND_EXT_USER_RECORD = &H74 ' 't'
RSI_CMD_SET_EXT_USER_DATA = &H75 ' 'u'
RSI_CMD_ADD_USER_MESSAGE = &H76 ' 'v'
RSI_CMD_REMOVE_USER_MESSAGE = &H77 ' 'w'
RSI_CMD_HERE_IS_EXT_USER_RECORD = &H78 ' 'x'
RSI_CMD_CLEAR_USER_MESSAGES = &H79 ' 'y'
End Enum

'
' RSI_DATA_LOG_DATA_TYPE
'
Enum RSI_DATA_LOG_DATA_TYPE
RSI_NO_DATA_EXPECTED = &HFF
RSI_NO_DATA_ENTERED = &H0
RSI_DATA_IN = &H1
RSI_DATA_BACK1 = &H2
RSI_DATA_OUT = &H3
RSI_DATA_DEPARTMENT = &H4
RSI_DATA_BACK2 = &H5
RSI_DATA_JOB = &H6
RSI_DATA_BACK3 = &H7
RSI_DATA_BULK_HOURS = &H8
RSI_DATA_BULK_DOLLARS = &H9
RSI_DATA_CATEGORY = &H15
End Enum

'
' RSI_TA_DLF_17
' Used for datalog format 17 of high byte of data2
'
Enum RSI_TA_DLF_17
RSI_TA_DLF_17_AUXIN1_ON = &HFF
RSI_TA_DLF_17_AUXIN2_ON = &H1
End Enum

'
' RSI_AUXOUT_ON_EVENTS
' Used for datalog format 19 of 4-byte lsb of data2
'
Enum RSI_AUXOUT_ON_EVENTS
RSI_AUXOUT_ON_TAMPER = 0
RSI_AUXOUT_ON_TZVIOL = 1
RSI_AUXOUT_ON_IDREF = 2
RSI_AUXOUT_ON_DURESS = 3
RSI_AUXOUT_ON_AUXIN1 = 4
RSI_AUXOUT_ON_AUXIN2 = 5
RSI_AUXOUT_ON_DOOR = 6
RSI_AUXOUT_ON_TRYAGAIN = 7
RSI_AUXOUT_ON_F1KEY = 8
RSI_AUXOUT_ON_F2KEY = 9
RSI_AUXOUT_ON_POWER = 10
End Enum

'
' RSI_TA_DLF_19
'
Enum RSI_TA_DLF_19
RSI_TA_DLF_19_AUXOUT0_ON = &HFF
RSI_TA_DLF_19_AUXOUT1_ON = &H1
RSI_TA_DLF_19_AUXOUT2_ON = &H2
End Enum

'
' RSI_TA_DLF_30
' Used for datalog format 30 of high byte of data2
'
Enum RSI_TA_DLF_30
RSI_TA_DLF_30_INT_SETUP = &H1
RSI_TA_DLF_30_SYS_BOARD_STAT = &H2
End Enum

'
' RSI_TA_DLF_48
' Used for datalog format 48 of high byte of data2
'
Enum RSI_TA_DLF_48
RSI_TA_DLF_48_AUXOUT0_OFF = &HFF
RSI_TA_DLF_48_AUXOUT1_OFF = &HFF
RSI_TA_DLF_48_AUXOUT2_OFF = &HFF
End Enum


'-----------------------------------------------
' rsidll32 types
'-----------------------------------------------
'
' RSI_ID
'
Type RSI_ID
b0 As Byte
b1 As Byte
b2 As Byte
b3 As Byte
b4 As Byte
End Type

'
' RSI_STATUS
'
Type RSI_STATUS
h_read As Long ' byte 1 bit 0
led1 As Long ' byte 1 bit 1
led2 As Long ' byte 1 bit 2
led3 As Long ' byte 1 bit 3
led4 As Long ' byte 1 bit 4
any_key As Long ' byte 1 bit 5
aux_out1 As Long ' byte 1 bit 6
aux_out2 As Long ' byte 1 bit 7
res_sys As Long ' byte 2 bit 0
verify_rdy As Long ' byte 2 bit 1
rslts_rdy As Long ' byte 2 bit 2
failed_cmd As Long ' byte 2 bit 3
dlog_rdy As Long ' byte 2 bit 4
id_nim As Long ' byte 2 bit 5
cmd_bsy As Long ' byte 2 bit 6
kp_id As Long ' byte 2 bit 7
tmpr_st As Long ' byte 3 bit 0
aux_in2 As Long ' byte 3 bit 1
aux_st As Long ' byte 3 bit 2
aux_in1 As Long ' byte 3 bit 3 New readers
door_st As Long ' byte 3 bit 4
rex_st As Long ' byte 3 bit 5
lock_st As Long ' byte 3 bit 6
auxo_st As Long ' byte 3 bit 7
End Type

'
' RSI_MESSAGE_TEXT
'
Type RSI_MESSAGE_TEXT
data(0 To RSI_LEN_MESSAGE - 1) As Byte
End Type

'
' RSI_DISPLAY_MESSAGE
'
Type RSI_DISPLAY_MESSAGE
userSpecific As Long ' display the message for a specific
user only?
halfsecs_id As RSI_ID ' how long should the message be
displayed? -OR-
' to which user should the message be
displayed to?
' for halfsecs, use halfsecs_id.b0
msg As RSI_MESSAGE_TEXT ' the message text
End Type

'
' RSI_TIME_DATE
'
Type RSI_TIME_DATE
second As Byte
minute As Byte
hour As Byte
day As Byte
month As Byte
year As Byte
End Type

'
' RSI_DATA_LOG_DATA_1
'
Type RSI_DATA_LOG_DATA_1
data(0 To 5) As Byte ' all others
End Type

'
' RSI_DATA_LOG_DATA_2
'
Type RSI_DATA_LOG_DATA_2
data(0 To 7) As Byte ' all others
End Type

'
' RSI_DATA_LOG_ELEMENT
'
Type RSI_DATA_LOG_ELEMENT ' offset
addr As Byte ' 0
time As RSI_TIME_DATE ' 1-6
pad1 As Byte ' 7
format As RSI_DATA_LOG_FORMAT ' 8-11
data1 As RSI_DATA_LOG_DATA_1 ' 12-17
pad2 As Byte ' 18
pad3 As Byte ' 19
data2 As RSI_DATA_LOG_DATA_2 ' 20-27
End Type

'
' RSI_BELL_SCHEDULE_ELEMENT
'
Type RSI_BELL_SCHEDULE_ELEMENT
min As Byte
hour As Byte
dur As Byte
dowMask As Byte
End Type

'
' RSI_HOLIDAY_ELEMENT
'
Type RSI_HOLIDAY_ELEMENT
data(0 To RSI_NUM_DAYS - 1) As Long
End Type

'
' RSI_TIME_ZONE_INTERVAL
'
Type RSI_TIME_ZONE_INTERVAL
start As Byte
stop As Byte
dowMask As Byte
End Type
'
' RSI_DATA_BANK
'
Type RSI_DATA_BANK
data(0 To RSI_LEN_DATA_BANK - 1) As Byte
End Type
'
' RSI_TIME_ZONE_ELEMENT
'
Type RSI_TIME_ZONE_ELEMENT
tzi(0 To RSI_NUM_TIME_ZONE_INTERVALS - 1) As RSI_TIME_ZONE_INTERVAL
End Type

'
' RSI_TIME_ZONE_TABLE
'
Type RSI_TIME_ZONE_TABLE
holidays(0 To RSI_NUM_MONTHS - 1) As RSI_HOLIDAY_ELEMENT
timeZones(0 To RSI_NUM_TIME_ZONE_TABLE_ITEMS - 1) As
RSI_TIME_ZONE_ELEMENT
End Type

'
' RSI_BELL_SCHEDULE
'
Type RSI_BELL_SCHEDULE
bells(0 To RSI_NUM_BELL_SCHEDULE_ITEMS - 1) As RSI_BELL_SCHEDULE_ELEMENT
End Type

'
' RSI_PASSWORD
'
Type RSI_PASSWORD
pass(0 To RSI_LEN_PASSWORD - 1) As Byte
End Type

'
' RSI_REJECT_THRESHOLD
'
Type RSI_REJECT_THRESHOLD
threshold As Integer
End Type

'
' RSI_TIME_20K
'
Type RSI_TIME_20K
time_20K As Integer
End Type

'
' RSI_READER_ADDRESS
'
Type RSI_READER_ADDRESS
addr As Byte
End Type

'
' RSI_FACILITY_CODE
'
Type RSI_FACILITY_CODE
facil_code As Integer
End Type

'
' RSI_OUTPUT_MODE
'
Type RSI_OUTPUT_MODE
out_mode As Byte
End Type

'
' RSI_IDLEN_TYPE
'
Type RSI_IDLEN_TYPE
idlen_type As Byte
End Type

'
' RSI_ACCOUNTING_MODE
'
Type RSI_ACCOUNTING_MODE
account_mode As Byte
End Type

'
' RSI_TIME_ZONE
'
Type RSI_TIME_ZONE
tz As Byte
End Type

'
' RSI_DURESS_CHAR
'
Type RSI_DURESS_CHAR
Duress_Char As Byte
End Type

'
' RSI_NUM_TRIES_TYPE
'
Type RSI_NUM_TRIES_TYPE
Num_Retries As Byte
End Type

'
' RSI_SETUP_DATA
'
Type RSI_SETUP_DATA
passwords(0 To RSI_NUM_PASSWORDS - 1) As RSI_PASSWORD
threshold As RSI_REJECT_THRESHOLD
auxFlag As Long
auxTimeout As RSI_TIME_20K
printFlag As Long
statusFlag As Long
auxAlarmFlagD As Long
auxAlarmFlagA As Long
auxAlarmFlagI As Long
auxAlarmFlagT As Long
auxAlarmFlagP As Long
lockTime As RSI_TIME_20K
shuntTime As RSI_TIME_20K
networkBaudIndex As RSI_BAUD
printerBaudIndex As RSI_BAUD
readerAddress As RSI_READER_ADDRESS
facilityCode As RSI_FACILITY_CODE
operatingMode As RSI_OPERATING_MODE
outputMode As RSI_OUTPUT_MODE
beeperFlag As Long
idLength As RSI_IDLEN_TYPE
accountingMode As RSI_ACCOUNTING_MODE
unlockTimeZone As RSI_TIME_ZONE
auxTimeZone As RSI_TIME_ZONE
auxDuressFlag As Long
duressCharacter As RSI_DURESS_CHAR
numberOfTries As RSI_NUM_TRIES_TYPE
dlsOn As RSI_TIME_DATE ' // year and second are not used
dlsOff As RSI_TIME_DATE ' // year and second are not used
display12Hour As Long
End Type

'
' RSI_TEMPLATE
'
Type RSI_TEMPLATE
template(0 To RSI_LEN_TEMPLATE - 1) As Byte
End Type

'
' RSI_USER_RECORD
'
Type RSI_USER_RECORD
ID As RSI_ID
templateVector As RSI_TEMPLATE
authorityLevel As RSI_AUTHORITY_LEVEL
rejectThreshold As RSI_REJECT_THRESHOLD
timeZone As RSI_TIME_ZONE
End Type

'
' RSI_CALIBRATION_DATA
'
Type RSI_CALIBRATION_DATA
exposure As Integer
row As Integer
col As Integer
End Type

'
' RSI_SCORE
'
Type RSI_SCORE
score As Integer
End Type

'
' RSI_LAST_TEMPLATE
'
' Note that score is meaningful only after a verify;
' ignore immediately after an enroll.

Type RSI_LAST_TEMPLATE
score As RSI_SCORE
templateVector As RSI_TEMPLATE
End Type

'
' RSI_RESULTS
'
Type RSI_RESULTS
ID As RSI_ID
pad As Byte ' force score to even boundary
score As RSI_SCORE
End Type

'
' RSI_RESPONSE
'
Type RSI_RESPONSE
type As RSI_RESPONSE_TYPE
data As Long
dataSize As Integer ' set by user to sizeof data item (0=don't
care)
buffer As Long ' buffer containing raw data from reader
buflen As Integer ' set by user to length of expected data
response
End Type

'
' RSI_FKEY_DATA
'
Type RSI_FKEY_DATA
data(0 To RSI_LEN_FKEY_DATA - 1) As Byte
End Type

'
' RSI_READY_STR
'
Type RSI_READY_STR
readyStr(0 To RSI_LEN_READY_STR - 1) As Byte
End Type

'
' RSI_SERIAL_MODE
'
Type RSI_SERIAL_MODE
sm As Byte
End Type

'
' RSI_AUX_EVENT_FLAG
'
Type RSI_AUX_EVENT_FLAG
tamper As Long
tzviol As Long
idref As Long
duress As Long
auxin1 As Long
auxin2 As Long
door As Long
tryagain As Long
f1key As Long
f2key As Long
power As Long
unlock As Long
End Type

'
' RSI_AUX_CLEAR_FLAG
'
Type RSI_AUX_CLEAR_FLAG
onverified As Long
End Type

'
' RSI_AUX_OUTPUT_SETUP
'
Type RSI_AUX_OUTPUT_SETUP
flags As RSI_AUX_EVENT_FLAG
time As RSI_TIME_20K
pad1 As Byte
pad2 As Byte
clear As RSI_AUX_CLEAR_FLAG
tz As RSI_TIME_ZONE
End Type

'
' RSI_HP_DLOG_FLAG
'
Type RSI_HP_DLOG_FLAG
hdf As Long
End Type

'
' RSI_TIME_SCALE
'
Type RSI_TIME_SCALE
ts As Byte
End Type

'
' RSI_AUX_KPD_CTRL
'
Type RSI_AUX_KPD_CTRL
akc As Byte
End Type

'
' RSI_LANG_TYPE
'
Type RSI_LANG_TYPE
lt As Byte
End Type

'
' RSI_DATE_FMT
'
Type RSI_DATE_FMT
df As Byte
End Type

'
' RSI_RING_COUNT
'
Type RSI_RING_COUNT
rc As Byte
End Type

'
' RSI_RING_TIMEOUT
'
Type RSI_RING_TIMEOUT
rt As Byte
End Type

'
' RSI_RING_DELAY
'
Type RSI_RING_DELAY
rd As Byte
End Type

'
' RSI_FK_MASKS
'
Type RSI_FK_MASKS
fm As Integer
End Type

'
' RSI_EXT_SETUP_DATA
'
Type RSI_EXT_SETUP_DATA
readyStrVector As RSI_READY_STR
serMode As RSI_SERIAL_MODE
pad As Byte ' force even boundary
flags0 As RSI_AUX_EVENT_FLAG
aux1 As RSI_AUX_OUTPUT_SETUP
aux2 As RSI_AUX_OUTPUT_SETUP
hpDlogFlag As RSI_HP_DLOG_FLAG
timeScale As RSI_TIME_SCALE
auxKpdCtrl As RSI_AUX_KPD_CTRL
langType As RSI_LANG_TYPE
dateFmt As RSI_DATE_FMT
ringCount As RSI_RING_COUNT
ringTimeout As RSI_RING_TIMEOUT
ringDelay As RSI_RING_DELAY
deFKMasks As RSI_FK_MASKS
End Type

'
' RSI_UDF
'
Type RSI_UDF
ud(0 To RSI_LEN_USER_DATA - 1) As Byte
End Type

'
' RSI_USER_DATA
'
Type RSI_USER_DATA
ID As RSI_ID
data As RSI_UDF
End Type

'
' RSI_COMMAND_STATUS
'
Type RSI_COMMAND_STATUS
incomplete As Long
status As RSI_STATUS
End Type

'
' RSI_EXT_TIME_INTERVAL
'
Type RSI_EXT_TIME_INTERVAL
hour_beg As Byte ' hour begin
minute_beg As Byte ' minute begin
hour_end As Byte ' hour end
minute_end As Byte ' minute end
dow As Byte ' day of the week mask
End Type

'
' RSI_NAME
'
Type RSI_NAME
un(0 To RSI_LEN_USER_NAME - 1) As Byte
End Type

'
' RSI_XUD_RESERVED
'
Type RSI_XUD_RESERVED
xr(0 To RSI_LEN_XUD_RESERVED - 1) As Byte
End Type

'
' RSI_AMNESTY
'
Type RSI_AMNESTY
amn As Byte
End Type

'
' RSI_EXT_USER_DATA
'
Type RSI_EXT_USER_DATA
ti(0 To RSI_LEN_NUM_XTI - 1) As RSI_EXT_TIME_INTERVAL
pad As Byte ' force even boundary
fkmasks As RSI_FK_MASKS
name As RSI_NAME
data As RSI_UDF
amnesty As RSI_AMNESTY
reserved As RSI_XUD_RESERVED
End Type

'
' RSI_EXT_USER_DATA_FIELD
'
Type RSI_EXT_USER_DATA_FIELD
ID As RSI_ID
pad As Byte ' force xud to even boundary
xud As RSI_EXT_USER_DATA
End Type

'
' RSI_USER_MESSAGE
'
Type RSI_USER_MESSAGE
ID As RSI_ID
msg As RSI_MESSAGE_TEXT
End Type

'
' RSI_EXT_USER_RECORD
'
Type RSI_EXT_USER_RECORD
ur As RSI_USER_RECORD ' basic user record
xud As RSI_EXT_USER_DATA ' extended user data
End Type

'
' RSI_PROM_DATE
'
Type RSI_PROM_DATE
pd(0 To RSI_LEN_PROM_DATE - 1) As Byte
End Type

'
' RSI_PROM_NAME
'
Type RSI_PROM_NAME
pn(0 To RSI_LEN_PROM_NAME - 1) As Byte
End Type

'
' RSI_RI_RESERVED
'
Type RSI_RI_RESERVED
rr(0 To RSI_LEN_RI_RESERVED - 1) As Byte
End Type

'
' RSI_READER_INFO
'
Type RSI_READER_INFO
model As Byte
memory As Byte
promDate As RSI_PROM_DATE
promName As RSI_PROM_NAME
pad1 As Byte ' force to even boundary
sn As Long
snp As Byte
pad2 As Byte ' force userCap to even boundary
userCap As Integer
dlogCap As Integer
usersEnrolled As Integer
dlogsPresent As Integer
reserved As RSI_RI_RESERVED
End Type

'
' RSI_OEM_CODE
'
Type RSI_OEM_CODE
code As Integer
End Type

'
' RSI_BULK_HOURS
' Used for T&A data log format 15, 2nd item, data2, type 08
'
Type RSI_BULK_HOURS
hours As Integer
minutes As Byte
deduct As Byte
End Type

'
' RSI_BULK_DOLLARS
' Used for T&A data log format 15, 2nd item, data2, type 09
'
Type RSI_BULK_DOLLARS
dollars As Integer
cents As Byte
deduct As Byte
End Type

'
' BYTE RSI_BCD_4
'
Type RSI_BCD_4
rb4(0 To 3) As Byte
End Type

'
' RSI_TA_15_1
'
Type RSI_TA_15_1
type As RSI_DATA_LOG_DATA_TYPE ' either 0x15 or 0xFF
category As RSI_BCD_4 ' for type=0x15 only
End Type

'
' RSI_TA_15_2
'
Type RSI_TA_15_2
type As RSI_DATA_LOG_DATA_TYPE ' OxFF or 0 - 9
data As RSI_BCD_4
End Type

'
' RSI_TA_15_3
'
Type RSI_TA_15_3
type As RSI_DATA_LOG_DATA_TYPE ' 0xFF, 00, 04
department As RSI_BCD_4 ' only for type 04
End Type

'
' RSI_TA_7
'
Type RSI_TA_7
type As RSI_DATA_LOG_DATA_TYPE ' 0xFF, 00 - 07
department As RSI_BCD_4 ' for types 01 - 07 only
End Type

'
' RSI_DLF_17
'
Type RSI_DLF_17
ta As RSI_TA_DLF_17
data As RSI_BCD_4
End Type

'
' RSI_DLF_19
'
Type RSI_DLF_19
ta As RSI_TA_DLF_19
data As RSI_BCD_4
End Type

'
' RSI_DLF_30
'
Type RSI_DLF_30
ta As RSI_TA_DLF_30
data As RSI_BCD_4
End Type

'
' RSI_DLF_48
'
Type RSI_DLF_48
ta As RSI_TA_DLF_48
data As RSI_BCD_4
End Type

'
' rsidll32 function declarations
'

' // Level 0

Declare Function rsiCloseChannel Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiGetHandReader Lib "rsidll32" ( _
ByVal chnl As Long _
) As Byte

Declare Function rsiInstallChannel Lib "rsidll32" ( _
ByVal ComPort As Long _
) As Long

Declare Function rsiOpenCustomChannel Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiOpenDirectChannel Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal BaudRate As Long _
) As Long

Declare Function rsiOpenModemChannel Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal baud As Long, _
ByVal number As String, _
ByVal speaker As Long _
) As Long

Declare Function rsiSetHandReader Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal addr As Long, _
status As RSI_STATUS _
) As Long

Declare Function rsiSetModemInitString Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal init_string As String _
) As Long

' // Ethernet

Declare Function rsiCleanupWsock Lib "rsidll32" ( _
) As Long

Declare Function rsiCloseWsock Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiInitWsock Lib "rsidll32" ( _
ByVal HostName As String, _
ByVal port As Long _
) As Long

Declare Function rsiReadSocket Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef c As Byte _
) As Long

Declare Function rsiStartupWsock Lib "rsidll32" ( _
) As Long

Declare Function rsiWriteSocket Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal c As Byte _
) As Long

'
///////////////////////////////////////////////////////////////////////////////
' //
' // LEVEL 2
' //
' // Commands to hand reader. See Software Manual for descriptions.
' //
' // Validation is performed on all data and RSI_ERROR_DATA may be returned.
' //
' // Note that the data structures these functions use are not necessarily
the
' // structures that the hand reader uses.
' //
'
///////////////////////////////////////////////////////////////////////////////


Declare Function rsiAbortCommand Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiBeep Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal duration As Byte, _
ByVal count As Byte _
) As Long

Declare Function rsiCalibrate Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiClearUserDataBase Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiDisplayCodedMessage Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal msg As RSI_MESSAGE_CODE, _
ByVal halfsecs As Byte _
) As Long

Declare Function rsiEnrollUser Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal Prompt As RSI_PROMPT _
) As Long

Declare Function rsiEnterIdleMode Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiEnterIdleMode2 Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiHereAreTimeZones Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef tz As RSI_TIME_ZONE_TABLE _
) As Long

Declare Function rsiHereIsBankNumber Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal Bank As Long _
) As Long

Declare Function rsiHereIsBellScheduleTable Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef schedule As RSI_BELL_SCHEDULE _
) As Long

Declare Function rsiHereIsDataBank Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef dbnk As RSI_DATA_BANK _
) As Long

Declare Function rsiHereIsDisplayMessage Lib "rsidll32" ( _
ByVal chnl As Long, _
msg As RSI_DISPLAY_MESSAGE _
) As Long

Declare Function rsiHereIsSetupData Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Setup As RSI_SETUP_DATA _
) As Long

Declare Function rsiHereIsTime Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef time As RSI_TIME_DATE _
) As Long

Declare Function rsiHereIsUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ur As RSI_USER_RECORD _
) As Long

Declare Function rsiHereIsSmartCardRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ur As RSI_USER_RECORD _
) As Long

Declare Function rsiIDToText Lib "rsidll32" ( _
ID As Any, _
ByVal text As String _
) As Long

Declare Function rsiNextMessageIsBellScheduleTable Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiNextMessageIsTimeZone Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiOutputControl Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal OutState As RSI_OUTPUT_STATE _
) As Long

Declare Function rsiPrinterPassThrough Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal Out As String, _
ByVal length As Long _
) As Long

Declare Function rsiRemoveUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ID As RSI_ID _
) As Long

Declare Function rsiResume Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendCalibrationData Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendDataBank Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal bnk As Long _
) As Long

Declare Function rsiSendDataLog Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendLastUserRecord Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendPreviousDataLog Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendResults Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendSetupData Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendStatusCRC Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef status As RSI_STATUS _
) As Long

Declare Function rsiSendTemplate Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiSendUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ID As RSI_ID _
) As Long

Declare Function rsiTextToID Lib "rsidll32" ( _
ByVal text As String, _
ID As RSI_ID _
) As Long

Declare Function rsiUpdateNVRam Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiVerifyOnExternalData Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Prompt As RSI_PROMPT, _
ByRef tmpl As RSI_TEMPLATE _
) As Long

Declare Function rsiVerifyOnInternalData Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ID As RSI_ID _
) As Long

Declare Function rsiHereIsFkeyData Lib "rsidll32" ( _
ByVal chnl As Long, _
fkeyData As RSI_FKEY_DATA _
) As Long

Declare Function rsiHereIsExtSetupData Lib "rsidll32" ( _
ByVal chnl As Long, _
Setup As RSI_EXT_SETUP_DATA _
) As Long

Declare Function rsiSetUserData Lib "rsidll32" ( _
ByVal chnl As Long, _
udf As RSI_USER_DATA, _
cstat As RSI_COMMAND_STATUS _
) As Long

Declare Function rsiSetExtUserData Lib "rsidll32" ( _
ByVal chnl As Long, _
xudf As RSI_EXT_USER_DATA_FIELD, _
cstat As RSI_COMMAND_STATUS _
) As Long

Declare Function rsiAddUserMessage Lib "rsidll32" ( _
ByVal chnl As Long, _
um As RSI_USER_MESSAGE, _
cstat As RSI_COMMAND_STATUS _
) As Long

Declare Function rsiRemoveUserMessage Lib "rsidll32" ( _
ByVal chnl As Long, _
ID As RSI_ID _
) As Long

Declare Function rsiHereIsExtUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
xur As RSI_EXT_USER_RECORD _
) As Long

Declare Function rsiClearUserMessages Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

'
///////////////////////////////////////////////////////////////////////////////
' //
' // LEVEL 3
' //
' // High level functions to perform various hand reader tasks.
' //
'
///////////////////////////////////////////////////////////////////////////////
Declare Function rsiAllocResponseBuffer Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiDeAllocResponseBuffer Lib "rsidll32" ( _
ByVal chnl As Long _
) As Long

Declare Function rsiGetCalibrationData Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef calib As RSI_CALIBRATION_DATA _
) As Long

Declare Function rsiGetDataBank Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal bnk As Long, _
ByRef dbnk As RSI_DATA_BANK _
) As Long

Declare Function rsiGetDataLogElement Lib "rsidll32" ( _
ByVal chnl As Long, _
DataLog As RSI_DATA_LOG_ELEMENT, _
ByVal bPrev As Long _
) As Long

Declare Function rsiGetLastTemplate Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef tmpl As RSI_LAST_TEMPLATE _
) As Long

Declare Function rsiGetLastUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ur As RSI_USER_RECORD _
) As Long

Declare Function rsiGetResults Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Results As RSI_RESULTS _
) As Long

Declare Function rsiGetResponse Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Response As RSI_RESPONSE _
) As Long

Declare Function rsiGetSetupData Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Setup As RSI_SETUP_DATA _
) As Long

Declare Function rsiGetStatus Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef status As RSI_STATUS _
) As Long

Declare Function rsiGetUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef ID As RSI_ID, _
ByRef ur As RSI_USER_RECORD _
) As Long

Declare Function rsiParseResponse Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef Response As RSI_RESPONSE _
) As Long

Declare Function rsiReadResponseBuffer Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef bufptr As Long, _
ByRef buflen As Long _
) As Long

Declare Function rsiSetBellSchedule Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef schedule As RSI_BELL_SCHEDULE _
) As Long

Declare Function rsiSetDataBank Lib "rsidll32" ( _
ByVal chnl As Long, _
ByVal bnk As Long, _
ByRef dbnk As RSI_DATA_BANK _
) As Long

Declare Function rsiSetTimeZoneTable Lib "rsidll32" ( _
ByVal chnl As Long, _
ByRef tz As RSI_TIME_ZONE_TABLE _
) As Long

Declare Function rsiGetReaderInfo Lib "rsidll32" ( _
ByVal chnl As Long, _
ri As RSI_READER_INFO _
) As Long

Declare Function rsiGetOemCode Lib "rsidll32" ( _
ByVal chnl As Long, _
oem As RSI_OEM_CODE _
) As Long

Declare Function rsiGetExtSetupData Lib "rsidll32" ( _
ByVal chnl As Long, _
Setup As RSI_EXT_SETUP_DATA _
) As Long

Declare Function rsiGetExtUserRecord Lib "rsidll32" ( _
ByVal chnl As Long, _
ID As RSI_ID, _
xur As RSI_EXT_USER_RECORD _
) As Long

Declare Sub rsiSetPings Lib "rsidll32" ( _
ByVal cnt As Long _
)

'
' Windows API function declarations
'
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
Dest As Any, _
ByVal Src As Any, _
ByVal length As Long _
)

Declare Sub CopyMemory2 Lib "kernel32" Alias "RtlMoveMemory" ( _
ByVal Dest As Any, _
ByVal Src As Any, _
ByVal length As Long _
)

Declare Sub CopyMemory3 Lib "kernel32" Alias "RtlMoveMemory" ( _
Dest As Any, _
Src As Any, _
ByVal length As Long _
)

Declare Sub FillMemory Lib "kernel32" Alias "RtlFillMemory" ( _
Dest As Any, _
ByVal length As Long, _
ByVal Fill As Byte _
)

Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
Dest As Any, _
Src As Any, _
ByVal length As Long _
)

Public Const GMEM_MOVEABLE = &H2
Public Const GMEM_ZEROINIT = &H40

Public Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long,
ByVal dwBytes As Long) As Long
Public Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As
Long
Public Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As
Long
Public Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As
Long
Posté le 06 avril 2009 - 19:38
Muchas gracias
Posté le 15 novembre 2009 - 12:55
Bonjour,

Je ne sais pas si c'est toujours d'actualité.
Mais j'ai à disposition les sources WinDev12 pour gérer complètement un HandKey II
(Compatible HandPunch)

Cordialement
André
Posté le 25 novembre 2009 - 08:40
Hola,

No se si aun necesitas codigo acerca de leer datos del reloj biometrico,

Saludos,

Edison
Posté le 13 février 2010 - 12:02
si aun necesito leerlos lo que me sucede es que tengo un codigo escrito en c++ con unas funciones que tienen unas declaracion de variable FAR* que son punteros y no se como declararlas en windev o no se si importo este programa a windev el lo va a compilar sin problemas
Posté le 20 avril 2010 - 16:57
Hi all;
I have to develop an access control application. And I have to use handkey 2 devices.

I found you while surfing on the google. I 'm trying to develop an online project with hankey2. If you have any sample code, please help me.
Posté le 15 juin 2010 - 03:13
La DLL se desarrollo para VB. Pero tengo una pregunta y solicitud a la vez, tienes los ejemplos en VB?. Puedes apoyarme compartiendo los mismos. Yo tambien estoy desarrollando la aplicacion pero en Vb6.
De antemano gracias
Posté le 29 juillet 2010 - 16:09
Hola,

Me ha parecido ver en la sección de descargas de PC SOFT, un desarrollo para los handkey y los handpunch...

No sé si os puede servir.

Saludos, Carlos.
Posté le 29 juillet 2010 - 16:10
Había olvidado poner el link:

http://repository.windev.com/resource.awp…
Posté le 25 mars 2011 - 08:25
Puedes enviarme los manuales a pj-83@hotmail.com

por ultimo lo haces en visual y generas un .exe que llamas desde tu lenguaje. He programado dos de esos y puedo decri que ya algo los entiendo


pj-83@hotmail.com
Posté le 13 mars 2012 - 08:28
Hola que tal un saludo, alguien ha intentado programar algo con C#.NET, tengo algunas dudas en cuanto a la programación, no sé si es problema con la API (rsidll32.dll) o con mi código (lo más seguro que sea mi código que está mal), alguien ha intentado obtener la información del Handpunch usando el método rsiGetReaderInfo ?

Un saludo, mi correo y msn es gabio2@gmail.com .

Espero alguien me pueda ayudar gracias.
Posté le 22 janvier 2016 - 19:11
Podrias mandarme la libreria, que estoy necesitando hacer una funcion que lea el handpunch de manera automatica si me podrias ayudar
Posté le 27 octobre 2016 - 17:50
Les comparto los link de descarga esta las dll y ejemplos
http://ul.to/z243nk3r
http://ul.to/z243nk3r
Posté le 27 octobre 2016 - 17:51
Les comparto los link de descarga esta las dll y ejemplos
http://ul.to/z243nk3r
http://ul.to/z243nk3r