@luoxiao123/bankcard-reader-start
Version:
49 lines (45 loc) • 1.24 kB
JavaScript
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 { disconnectDevice, findDeviceList, readIC, readMC } from './device'
export async function init(options) {
const deviceOpts = parseDeviceOpts(options)
const { debug } = deviceOpts
info('开始实达设备')
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 {
ret.cardno = readIC(device) || readMC(device) || ''
}
catch (err) {
ret.cardno = ''
}
try {
disconnectDevice(device)
}
catch (ex) {
throw ex
}
return Promise.resolve(ret)
}