#ifndef VIRTUAL_DEVICE_CLASS_HEADER_ #define VIRTUAL_DEVICE_CLASS_HEADER_ #include "CardIssuerClass.h" class VirtualDeviceClassImpl : public CardIssuerClass { public: VirtualDeviceClassImpl(); ~VirtualDeviceClassImpl(); //DeviceBaseClass ErrorCodeEnum GetDevCategory(DevCategoryInfo& devCategory); ErrorCodeEnum Reset(); ErrorCodeEnum DevClose(); ErrorCodeEnum GetLastErr(DevErrorInfo& devErrInfo); //SubDeviceClass ErrorCodeEnum DevOpen(DWORD dwPort, DWORD dwBaudRate); ErrorCodeEnum GetDevStatus(CardIssuerStatus& devStatus); ErrorCodeEnum GetDeviceSN(char*& pDevSN); ErrorCodeEnum MoveCard(CardPosEnum eCardPos, int hopperNo = 1); ErrorCodeEnum SetCardInType(CardInEnum eCardIn); ErrorCodeEnum MagRead(MagTracks& magTracks); ErrorCodeEnum MagWrite(MagTracks magTracks, MagWriteModeEnum eWriteMode); ErrorCodeEnum SetRetractCounter(DWORD dwCount); ErrorCodeEnum SetIssuerCounter(DWORD dwCount, int hopperNo = 1); ErrorCodeEnum ActiveICCard(); ErrorCodeEnum ContactIC(); ErrorCodeEnum ReleaseIC(); ErrorCodeEnum WarmReset(); ErrorCodeEnum ICCommand(CmdInfo sendBuf, CmdInfo& recvBuf); //////////////////SAM 卡操作部分//////////////////// ErrorCodeEnum SAMActive(BYTE vcc = 0x30);; ErrorCodeEnum SAMDeactivate();; ErrorCodeEnum SAMWarmReset();; ErrorCodeEnum SAMQueryStatus(SAMStatus& samStatus);; ErrorCodeEnum SAMSelect(const int sn);; //即时制卡卡库需要实现SAMCommand,用来执行apdu指令 ErrorCodeEnum SAMCommand(CmdInfo sendBuf, CmdInfo& recvBuf);; //即时制卡卡库需要实现ActiveICCardATR,用来激活卡片,返回ATR ErrorCodeEnum ActiveICCardATR(CmdInfo& atrBuf); ////////////////卡面打印部分(非即时制卡的卡面印刷,即时制卡的卡面打印接口为PrintCardFaceRightNow),部分机型(例如合肥分行大机)有此功能////////////////// ErrorCodeEnum Print(BYTE*& data, const int dataSize, const int side);; ErrorCodeEnum QueryPrinterStatus();; //////////////////////////////////////////////////////////////////////////// ////////非接(IC)部分 start,没有此部分,在接口实现中直接返回Error_NotImpl/////////////// //////////////////////////////////////////////////////////////////////////// ErrorCodeEnum ActiveContactlessICCard(char fstType, char scdType, char thdType, char& outType); // // Deactivate contact IC card // ErrorCodeEnum DeactivateICCard(); // // Deactivate contactless IC card // ErrorCodeEnum DeactContactlessICCard(); // // RF Mifare Classic protocol operation // Arguments: // - eFunType:function type as load key,authentication and so on // - sendBuf:[parameter][data] // - recvBuf:[status(1byte)][return data] // ErrorCodeEnum MifareCommand(MifareFuctionEnum eFunType, CmdInfo sendBuf, CmdInfo& recvBuf); // // RF Type A,B command. // APDU:Application Protocol Data Unit // Arguments: // - CmdSend.lpCmd:Command-APDU // - CmdRecv.lpData:Response-APDU // ErrorCodeEnum RFTypeABCommand(CmdInfo sendBuf, CmdInfo& recvBuf); ////////非接(IC)部分 end///////////////////////////////////////////////////////// ErrorCodeEnum DevOpenEx(DWORD dwPort, DWORD dwBaudRate, BYTE btOpenType, const char* pDevSN, BYTE& btType); ///////////////////////////////////////////////////////////////////////// ///以下是便携式卡机特有API,接口实现中其他机型直接返回Error_NotImpl即可// ///////////////////////////////////////////////////////////////////////// ErrorCodeEnum TransferEnInit(int& iStatus, BYTE*& Cr1, int& lenR1, BYTE*& Cr3, int& lenR3, BYTE*& dKey, int& lenKey); ErrorCodeEnum SetR2(int& iStatus, BYTE* pCr2, int lenR2); ErrorCodeEnum SendWorkingKey(const char* pWorkingKey); //安全锁接口部分 begin ErrorCodeEnum SLLoadKey(const SCIKeyInfo key); ErrorCodeEnum SLSetParam(SCIParamType eType, int value); ErrorCodeEnum SLLock(); ErrorCodeEnum SLUnLock(const SCICheckCode checkCode, bool bTemp = true); ErrorCodeEnum SLGetTempData(SCITempData& ksnData, SCITempData& ramData); ErrorCodeEnum SLOpenDoor(const SCITempData data); //安全锁接口部分 end //蓝牙控制部分 start //蓝牙指令控制,命令参看SCIBluetoothCMD说明 ErrorCodeEnum BluetoothControl(SCIBluetoothCMD eCmd); //修改配对密码 ErrorCodeEnum BluetoothModifyKey(unsigned char* key); //修改蓝牙设备名称 ErrorCodeEnum BluetoothModifyName(unsigned char* name); //获取版本信息 ErrorCodeEnum BluetoothGetVersion(char*& version); //获取连接设备名称 ErrorCodeEnum BluetoothGetConnectName(unsigned char*& name); //获取连接设备信号强度 ErrorCodeEnum BluetoothGetSignalStrength(unsigned char*& signal); //蓝牙控制部分 end ErrorCodeEnum LightControl(SCILightType eLight, bool bOnOff); ErrorCodeEnum QueryBatteryPower(int& bat); ErrorCodeEnum MoveCardToSlot(int slot); //把卡片从指定卡槽位移动到读卡器 ErrorCodeEnum MoveCardFromSlot(int slot); //读取卡号 //优先从IC卡解析卡号,如果纯磁条卡,则返回磁道解析的卡号 ErrorCodeEnum ReadAccount(CardNo& cardNo); //获取总卡槽数 ErrorCodeEnum GetSlotSum(int& sum); //获取卡槽状态 ErrorCodeEnum QuerySlotsStatus(SlotStatus& slots, const int slot, bool bFull = false); //即时制卡卡库专用接口 ErrorCodeEnum PrintCardFaceRightNow(const KakuPrintInfo printInfo); }; #endif //VIRTUAL_DEVICE_CLASS_HEADER_