UNPKG

bankcard-reader

Version:
54 lines (50 loc) 1.49 kB
import { parseDeviceOpts, } from '@waiting/bankcard-reader-base' import { info } from '@waiting/log' import { setPathDirectory, validateDllFile, } from '@waiting/shared-core' import * as ffi from 'ffi' import { dllFuncs, } from './config' import { findDeviceList, readFJ, readJC } from './device' export async function init(options) { const deviceOpts = parseDeviceOpts(options) const { debug } = deviceOpts if (debug) { info(deviceOpts) } await validateDllFile(deviceOpts.dllTxt) if (deviceOpts.dllSearchPath) { setPathDirectory(deviceOpts.dllSearchPath) } const apib = ffi.Library(deviceOpts.dllTxt, dllFuncs) const devices = findDeviceList(deviceOpts, apib) if (devices && devices.length) { return devices } else { throw new Error('未找到读卡设备') } } /** Read card data */ export function read(device) { const ret = { cardno: '', } try { switch (device.deviceOpts.cardType) { case 'fj': ret.cardno = readFJ(device) break case 'jc': ret.cardno = readJC(device) break case 'auto': ret.cardno = readFJ(device) || readJC(device) || '' break default: throw new Error('cardType invalid, Should be auto|fj|jc ') } } catch (_a) { ret.cardno = '' } return Promise.resolve(ret) }