/// <summary> /// Z9读卡器 /// </summary> public class carderZ9 { /// <summary> /// 说明:初始化设备通讯口 /// 该函数对计算机的端口进行初始化。 /// 返回:小于等于 0 错误,没有初始化成功; 大于 0 初始化成功,返回串口标识符 /// </summary> /// <param name="Port">0、1、2表示串口1、2、3; 100 USB接口</param> /// <param name="baud">传输速率;使用19200</param> [DllImport("dcic32.dll")] public static extern int IC_InitComm_Baud(int Port, int baud); [DllImport("dcic32.dll")] //关闭端口 public static extern short IC_ExitComm(int icdev); /// <summary> /// 说明:蜂鸣 /// 返回:0 成功;非0 失败 /// </summary> /// <param name="icdev">通讯设备标识符</param> /// <param name="intime">蜂鸣时间,值范围0~255(单位50ms)</param> [DllImport("dcic32.dll")] public static extern short IC_PosBeep(int icdev, int intime); [DllImport("dcic32.dll")] // public static extern short IC_Request(int icdev, int mode); /// <summary> /// 说明:判断连接是否成功,小于0 ,连接不成功.0可以读写,1连接成功,但是没插卡. /// </summary> /// <param name="icdev">通讯设备标识符</param> [DllImport("dcic32.dll")] public static extern short IC_Status(int icdev); /// <summary> /// 说明:寻卡函数,能返回在工作区域内某张卡的序列号(相当于执行IC_Request IC_Anticoll IC_Select) /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="mode">设置卡的模式,0在对卡进行操作完毕后,执行dc_halt();则该卡进入HALT模式,则必须把卡移开感应区再进来才能寻得这张卡</param> /// <returns> /// <param name="snr">存放找到的卡的序列号的地址</param> /// </returns> [DllImport("dcic32.dll")] public static extern short IC_Card(int icdev, int mode, ref ulong snr); /// <summary> /// 说明:装入密码函数,成功则返回 0.密码装入读卡器中 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="mode">验证密码的方法;0: 用KEYSET0和KEYA验证; 4: 用KEYSET0和KEYB验证</param> /// <param name="secnr">要验证密码的扇区号</param> /// <param name="nkey">密码是16进制字符串,长度12字节。ffffffffffff</param> [DllImport("dcic32.dll")] public static extern short IC_Load_Keyhex(int icdev, int mode, int secnr, string nkey); /// <summary> /// 说明:验证某一扇区密码的函数,成功则返回 0 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="mode">验证密码的方法;0: 用KEYSET0和KEYA验证; 4: 用KEYSET0和KEYB验证</param> /// <param name="secnr">要验证密码的扇区号</param> [DllImport("dcic32.dll")] public static extern short IC_Authentication(int icdev, int mode, int secnr); /// <summary> /// 说明:核对密码函数,成功则返回 0.密码装入读卡器中 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="mode">验证密码的方法;0: 用KEYSET0和KEYA验证; 4: 用KEYSET0和KEYB验证</param> /// <param name="Addr">要验证密码的绝对地址号码,一般是扇区的最后一个地址块,比如0扇区就是3,15扇区就是63等等 如果对于新的4K卡计算方式可以根据公式来计算,密码Addr=扇区号×4+3</param> /// <param name="nkey">密码是16进制字符串,长度12字节。ffffffffffff</param> [DllImport("dcic32.dll")] public static extern short IC_Authentication_Passaddrhex(int icdev, int mode, int Addr, string nkey); [DllImport("dcic32.dll")] //在固定的位置写入固定长度的数据 public static extern short IC_Write(int icdev, int offset, int Length, string Databuffer); /// <summary> /// 说明:读函数,一次必须读一个块,成功则返回 0 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="adr">所读数据的地址,0 - 63</param> /// <returns> /// <param name="sdata">存放被读数据的地址</param> /// </returns> [DllImport("dcic32.dll")] public static extern short IC_ReadMifare_Hex(int icdev, int adr, [MarshalAs(UnmanagedType.LPStr)] StringBuilder sdata); /// <summary> /// 说明:写函数,一次必须写一个块,成功则返回 0 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="adr">所写数据的地址,0 - 63</param> /// <returns> /// <param name="sdata">要写入的数据 32位 </param> /// </returns> [DllImport("dcic32.dll")] public static extern short IC_WriteMifare_Hex(int icdev, int adr, string sdata); /// <summary> /// 说明:获得用户键盘密码的输入,该函数会一直等待用户输入直到超时 /// type = 0x0, 成功取得密码,rlen = 密码位数(1-8之间,根据客户输入而定)cpass就是密码 /// type = 0xa1,用户取消密码输入,rlen =0,无data段; /// type = 0xa2,用户密码输入操作超时,rlen =0,无data段; /// </summary> /// <param name="icdev">设备描述符</param> /// /// <param name="ctime">是用户按键输入的超时时间,以second为单位;最大255s,最小1s</param> /// <param name="rlen">密码位数(1-8之间,根据客户输入而定)</param> /// <param name="cpass">密码</param> [DllImport("dcic32.dll")] public static extern short IC_GetInputPass(int icdev, int ctime, ref int rlen, [MarshalAs(UnmanagedType.LPStr)] StringBuilder cpass); /// <summary> /// 说明:按指定的类型显示系统内置的操作提示,成功则返回 0 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="type"> /// type=0x01,:显示“请插上卡!” /// type=0x02,:显示“请插下卡!” /// type=0x03,:显示“请刷卡!”, /// type=0x04,:显示“读卡错误!” /// type=0x05,:显示“请输入密码!” /// type=0x06,:显示“密码错误!”, /// type=0x07,:显示“操作成功!”, /// type=0x08,:显示“操作失败!”, /// type=0x09,:显示“操作超时!”, /// </param> [DllImport("dcic32.dll")] public static extern short IC_DispLcd(int icdev, int type); /// <summary> /// 说明:显示主菜单,成功则返回 0 /// </summary> /// <param name="icdev">设备描述符</param> [DllImport("dcic32.dll")] public static extern short IC_DispMainMenu(int icdev); /// <summary> /// 说明:显示信息,成功则返回 0 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="line">行号 范围为0~1</param> /// <param name="offset">偏移 范围为0~7</param> /// <param name="data">以空标志结束的字符串,'字'长度+偏移不能超过8,即每行最多可能显示8个'字'</param> [DllImport("dcic32.dll")] public static extern short IC_DispInfo(int icdev, int line, int offset, string data); /// <summary> /// 说明:清除LCD屏幕,成功则返回 0 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="cLine">0表示清第一行,1表示清第二行,2表示两行全清</param> [DllImport("dcic32.dll")] public static extern short IC_LcdClrScrn(int icdev, int cLine); } /// <summary> /// HCE-201读卡器 4442芯片 /// <para>调用Mwic_32.dll</para> /// </summary> /// <summary> /// D3读卡器 /// </summary> public class carderD3 { /// <summary> /// 说明:初始化设备通讯口 /// 该函数对计算机的端口进行初始化。 /// 返回:小于等于 0 错误,没有初始化成功; 大于 0 初始化成功,返回串口标识符 /// </summary> /// <param name="Port">0、1、2表示串口1、2、3; 100 USB接口</param> /// <param name="baud">传输速率;使用19200</param> [DllImport("dcrf32.dll")] public static extern int dc_init(int Port, int baud); [DllImport("dcrf32.dll")] //关闭端口 public static extern short dc_exit(int icdev); /// <summary> /// 说明:蜂鸣 /// 返回:0 成功;非0 失败 /// </summary> /// <param name="icdev">通讯设备标识符</param> /// <param name="intime">蜂鸣时间,值范围0~255(单位50ms)</param> [DllImport("dcrf32.dll")] public static extern short dc_beep(int icdev, int intime); [DllImport("dcrf32.dll")] // public static extern short dc_request(int icdev, int mode); / <summary> / 说明:判断连接是否成功,小于0 ,连接不成功.0可以读写,1连接成功,但是没插卡. / </summary> / <param name="icdev">通讯设备标识符</param> //[DllImport("dcrf32.dll")] //public static extern short IC_Status(int icdev); /// <summary> /// 说明:寻卡函数,能返回在工作区域内某张卡的序列号(相当于执行IC_Request IC_Anticoll IC_Select) /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="mode">设置卡的模式,0在对卡进行操作完毕后,执行dc_halt();则该卡进入HALT模式,则必须把卡移开感应区再进来才能寻得这张卡</param> /// <returns> /// <param name="snr">存放找到的卡的序列号的地址</param> /// </returns> [DllImport("dcrf32.dll")] public static extern short dc_card(int icdev, int mode, ref ulong snr); /// <summary> /// 说明:装入密码函数,成功则返回 0.密码装入读卡器中 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="mode">验证密码的方法;0: 用KEYSET0和KEYA验证; 4: 用KEYSET0和KEYB验证</param> /// <param name="secnr">要验证密码的扇区号</param> /// <param name="nkey">密码是16进制字符串,长度12字节。ffffffffffff</param> [DllImport("dcrf32.dll")] public static extern short dc_load_key(int icdev, int mode, int secnr, string nkey); /// <summary> /// 说明:验证某一扇区密码的函数,成功则返回 0 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="mode">验证密码的方法;0: 用KEYSET0和KEYA验证; 4: 用KEYSET0和KEYB验证</param> /// <param name="secnr">要验证密码的扇区号</param> [DllImport("dcrf32.dll")] public static extern short dc_authentication(int icdev, int mode, int secnr); /// <summary> /// 说明:核对密码函数,成功则返回 0.密码装入读卡器中 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="mode">验证密码的方法;0: 用KEYSET0和KEYA验证; 4: 用KEYSET0和KEYB验证</param> /// <param name="Addr">要验证密码的绝对地址号码,一般是扇区的最后一个地址块,比如0扇区就是3,15扇区就是63等等 如果对于新的4K卡计算方式可以根据公式来计算,密码Addr=扇区号×4+3</param> /// <param name="nkey">密码是16进制字符串,长度12字节。ffffffffffff</param> [DllImport("dcrf32.dll")] public static extern short dc_authentication_passaddr_hex(int icdev, int mode, int Addr, string nkey); [DllImport("dcrf32.dll")] //在固定的位置写入固定长度的数据 public static extern short dc_write(int icdev, int offset, int Length, string Databuffer); /// <summary> /// 说明:读函数,一次必须读一个块,成功则返回 0 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="adr">所读数据的地址,0 - 63</param> /// <returns> /// <param name="sdata">存放被读数据的地址</param> /// </returns> [DllImport("dcrf32.dll")] public static extern short dc_read_hex(int icdev, int adr, [MarshalAs(UnmanagedType.LPStr)] StringBuilder sdata); /// <summary> /// 说明:写函数,一次必须写一个块,成功则返回 0 /// </summary> /// <param name="icdev">设备描述符</param> /// <param name="adr">所写数据的地址,0 - 63</param> /// <returns> /// <param name="sdata">要写入的数据 32位 </param> /// </returns> [DllImport("dcrf32.dll")] public static extern short dc_write_hex(int icdev, int adr, string sdata); }