界面图

详细代码如下:

//---------------------------------------------------------------------------

//广州荣士电子有限公司,联系电话020-82318861,82322852,定制13826029618 网址http://www.icmcu.com

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"

//控制字定义
#define BLOCK0_EN  0x01
#define BLOCK1_EN  0x02
#define BLOCK2_EN  0x04
#define NEEDSERIAL 0x08
#define EXTERNKEY  0x10
#define NEEDHALT   0x20

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
//轻松读卡
{
/*
技术支持:
网站:
*/

unsigned char status;//存放返回值
        unsigned char myareano;//区号
        unsigned char authmode;//密码类型,用A密码或B密码
        unsigned char myctrlword;//控制字
 unsigned char mypicckey[6];//密码
        unsigned char mypiccserial[4];//卡序列号
        unsigned char mypiccdata[48]; //卡数据缓冲

unsigned char (__stdcall *piccreadex)(unsigned char ctrlword,unsigned char *serial,unsigned char area,unsigned char keyA1B0,unsigned char *picckey,unsigned char *piccdata0_2);
        //判断动态库是否存在
        AnsiString FileName=ExtractFilePath(Application->ExeName);
        if(FileName.SubString(FileName.Length(),1) != "//")
        {
             FileName += "//";
        }
        FileName += "OUR_MIFARE.dll";
        if(!FileExists(FileName))
        {
                ShowMessage("无法在应用程序的文件夹找到OUR_MIFARE.dll");
                return;
        }
        //提取函数
        HINSTANCE hDll;
        hDll=LoadLibrary(FileName.c_str());
        piccreadex = (unsigned char (__stdcall *)(unsigned char,unsigned char *,unsigned char,unsigned char,unsigned char *,unsigned char *))GetProcAddress(hDll,"piccreadex");

//控制字指定,控制字的含义请查看本公司网站提供的动态库说明
        myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY;

//指定区号
        myareano = 8;//指定为第8区
        //批定密码模式
        authmode = 1;//大于0表示用A密码认证,推荐用A密码认证

//指定密码
        mypicckey[0] = 0xff;
        mypicckey[1] = 0xff;
        mypicckey[2] = 0xff;
        mypicckey[3] = 0xff;
        mypicckey[4] = 0xff;
        mypicckey[5] = 0xff;

status = piccreadex(myctrlword,mypiccserial,myareano,authmode,mypicckey,mypiccdata);

FreeLibrary(hDll);
       
        //在下面设定断点,然后查看mypiccserial、mypiccdata,
        //调用完 piccreadex函数可读出卡序列号到 mypiccserial,读出卡数据到mypiccdata,
        //开发人员根据自己的需要处理mypiccserial、mypiccdata 中的数据了。
        //处理返回函数
        switch(status)
        {
                case 0:
                        ShowMessage("操作成功");
                        break;
                //......
                case 8:
                        ShowMessage("请将卡放在感应区");
                        break;

}

//返回解释
        /*
        #define ERR_REQUEST 8//寻卡错误
        #define ERR_READSERIAL 9//读序列吗错误
        #define ERR_SELECTCARD 10//选卡错误
        #define ERR_LOADKEY 11//装载密码错误
        #define ERR_AUTHKEY 12//密码认证错误
        #define ERR_READ 13//读卡错误
        #define ERR_WRITE 14//写卡错误

#define ERR_NONEDLL 21//没有动态库
        #define ERR_DRIVERORDLL 22//动态库或驱动程序异常
        #define ERR_DRIVERNULL 23//驱动程序错误或尚未安装
        #define ERR_TIMEOUT 24//操作超时,一般是动态库没有反映
        #define ERR_TXSIZE 25//发送字数不够
        #define ERR_TXCRC 26//发送的CRC错
        #define ERR_RXSIZE 27//接收的字数不够
        #define ERR_RXCRC 28//接收的CRC错

*/

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)
//让设备发出声音
{
/*
技术支持:
网站:
*/
        unsigned char (__stdcall *pcdbeep)(unsigned long xms);
        //判断动态库是否存在
        AnsiString FileName=ExtractFilePath(Application->ExeName);
        if(FileName.SubString(FileName.Length(),1) != "//")
        {
             FileName += "//";
        }
        FileName += "OUR_MIFARE.dll";
        if(!FileExists(FileName))
        {
                ShowMessage("无法在应用程序的文件夹找到OUR_MIFARE.dll");
                return;
        }

//提取函数
        HINSTANCE hDll;
        hDll=LoadLibrary(FileName.c_str());
        pcdbeep = (unsigned char (__stdcall *)(unsigned long))GetProcAddress(hDll,"pcdbeep");
        pcdbeep(50);
        FreeLibrary(hDll);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
//轻松写卡
{
/*
技术支持:
网站:
*/
        int i;
        unsigned char status;//存放返回值
        unsigned char myareano;//区号
        unsigned char authmode;//密码类型,用A密码或B密码
        unsigned char myctrlword;//控制字
 unsigned char mypicckey[6];//密码
        unsigned char mypiccserial[4];//卡序列号
        unsigned char mypiccdata[48]; //卡数据缓冲

unsigned char (__stdcall *piccwriteex)(unsigned char ctrlword,unsigned char *serial,unsigned char area,unsigned char keyA1B0,unsigned char *picckey,unsigned char *piccdata0_2);
        //判断动态库是否存在
        AnsiString FileName=ExtractFilePath(Application->ExeName);
        if(FileName.SubString(FileName.Length(),1) != "//")
        {
             FileName += "//";
        }
        FileName += "OUR_MIFARE.dll";
        if(!FileExists(FileName))
        {
                ShowMessage("无法在应用程序的文件夹找到OUR_MIFARE.dll");
                return;
        }
        //提取函数
        HINSTANCE hDll;
        hDll=LoadLibrary(FileName.c_str());
        piccwriteex = (unsigned char (__stdcall *)(unsigned char,unsigned char *,unsigned char,unsigned char,unsigned char *,unsigned char *))GetProcAddress(hDll,"piccwriteex");
        //控制字指定,控制字的含义请查看本公司网站提供的动态库说明
        myctrlword = BLOCK0_EN + BLOCK1_EN + BLOCK2_EN + EXTERNKEY;

//指定区号
        myareano = 8;//指定为第8区
        //批定密码模式
        authmode = 1;//大于0表示用A密码认证,推荐用A密码认证

//指定密码
        mypicckey[0] = 0xff;
        mypicckey[1] = 0xff;
        mypicckey[2] = 0xff;
        mypicckey[3] = 0xff;
        mypicckey[4] = 0xff;
        mypicckey[5] = 0xff;

//指定卡数据
        for(i = 0;i<48;i++)
        {
                mypiccdata[i] = i;
        }
        //写卡
        status = piccwriteex(myctrlword,mypiccserial,myareano,authmode,mypicckey,mypiccdata);

FreeLibrary(hDll);
        //在下面设定断点,然后查看mypiccserial、mypiccdata,
        //调用完 piccreadex函数可读出卡序列号到 mypiccserial,读出卡数据到mypiccdata,
        //开发人员根据自己的需要处理mypiccserial、mypiccdata 中的数据了。
        //处理返回函数
        switch(status)
        {
                case 0:
                        ShowMessage("操作成功");
                        break;
                //......
                case 8:
                        ShowMessage("请将卡放在感应区");
                        break;

}

//返回解释
        /*
        #define ERR_REQUEST 8//寻卡错误
        #define ERR_READSERIAL 9//读序列吗错误
        #define ERR_SELECTCARD 10//选卡错误
        #define ERR_LOADKEY 11//装载密码错误
        #define ERR_AUTHKEY 12//密码认证错误
        #define ERR_READ 13//读卡错误
        #define ERR_WRITE 14//写卡错误

#define ERR_NONEDLL 21//没有动态库
        #define ERR_DRIVERORDLL 22//动态库或驱动程序异常
        #define ERR_DRIVERNULL 23//驱动程序错误或尚未安装
        #define ERR_TIMEOUT 24//操作超时,一般是动态库没有反映
        #define ERR_TXSIZE 25//发送字数不够
        #define ERR_TXCRC 26//发送的CRC错
        #define ERR_RXSIZE 27//接收的字数不够
        #define ERR_RXCRC 28//接收的CRC错
        */

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)
//修改单区密码,只改A或B密码,不能改密码权限访问字,且一次只能改A或B密码中的一个。
{

/*
技术支持:
网站:
*/

unsigned char status;//存放返回值
        unsigned char myareano;//区号
        unsigned char authmode;//密码类型,用A密码或B密码
        unsigned char myctrlword;//控制字

unsigned char mypiccnewkey[6];//新密码
        unsigned char mypiccserial[4];//卡序列号
        unsigned char mypiccoldkey[6];//旧密码

unsigned char (__stdcall *piccchangesinglekey)(unsigned char ctrlword,unsigned char *serial,unsigned char area,unsigned char keyA1B0,unsigned char *piccoldkey,unsigned char *piccnewkey);
        //判断动态库是否存在
        AnsiString FileName=ExtractFilePath(Application->ExeName);
        if(FileName.SubString(FileName.Length(),1) != "//")
        {
             FileName += "//";
        }
        FileName += "OUR_MIFARE.dll";
        if(!FileExists(FileName))
        {
                ShowMessage("无法在应用程序的文件夹找到OUR_MIFARE.dll");
                return;
        }

//提取函数
        HINSTANCE hDll;
        hDll=LoadLibrary(FileName.c_str());
        piccchangesinglekey = (unsigned char (__stdcall *)(unsigned char ,unsigned char *,unsigned char ,unsigned char ,unsigned char *,unsigned char *))GetProcAddress(hDll,"piccchangesinglekey");

//控制字指定,控制字的含义请查看本公司网站提供的动态库说明
        myctrlword = 0;

//指定区号
        myareano = 8;//指定为第8区
        //批定密码模式
        authmode = 1;//大于0表示用A密码认证,推荐用A密码认证

//指定旧密码
        mypiccoldkey[0] = 0xff;
        mypiccoldkey[1] = 0xff;
        mypiccoldkey[2] = 0xff;
        mypiccoldkey[3] = 0xff;
        mypiccoldkey[4] = 0xff;
        mypiccoldkey[5] = 0xff;

//指定新密码,注意:指定新密码时一定要记住,否则有可能找不回密码,导致该卡报废。
        mypiccnewkey[0] = 0xff;
        mypiccnewkey[1] = 0xff;
        mypiccnewkey[2] = 0xff;
        mypiccnewkey[3] = 0xff;
        mypiccnewkey[4] = 0xff;
        mypiccnewkey[5] = 0xff;

status = piccchangesinglekey(myctrlword,mypiccserial,myareano,authmode,mypiccoldkey,mypiccnewkey);

FreeLibrary(hDll);
        //返回值处理
        switch(status)
        {
                case 0:
                        ShowMessage("操作成功");
                        break;
                //......
                case 8:
                        ShowMessage("请将卡放在感应区");
                        break;

}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)
//读取设备编号,可做为软件加密狗用,也可以根据此编号在公司网站上查询保修期限
{
/*
技术支持:
网站:
*/

unsigned char devno[4];//设备编号
        unsigned char (__stdcall *pcdgetdevicenumber)(unsigned char *devicenumber);
        //判断动态库是否存在
        AnsiString FileName=ExtractFilePath(Application->ExeName);
        if(FileName.SubString(FileName.Length(),1) != "//")
        {
             FileName += "//";
        }
        FileName += "OUR_MIFARE.dll";
        if(!FileExists(FileName))
        {
                ShowMessage("无法在应用程序的文件夹找到OUR_MIFARE.dll");
                return;
        }

//提取函数
        HINSTANCE hDll;
        hDll=LoadLibrary(FileName.c_str());
        pcdgetdevicenumber = (unsigned char (__stdcall *)(unsigned char *))GetProcAddress(hDll,"pcdgetdevicenumber");

if(!pcdgetdevicenumber(devno))
        {
                FreeLibrary(hDll);
                ShowMessage(IntToStr(devno[0]) + "-" + IntToStr(devno[1]) + "-" + IntToStr(devno[2]) + "-" + IntToStr(devno[3]));
        }
        else
        {
                FreeLibrary(hDll);
        }

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)
{//修改单区密码,可同时改A、B密码、密码权限访问字

unsigned char status;//存放返回值
        unsigned char myareano;//区号
        unsigned char authmode;//密码类型,用A密码或B密码
        unsigned char myctrlword;//控制字
 unsigned char mypiccoldkey[6];//旧密码
        unsigned char mypiccserial[4];//卡序列号
        unsigned char mypiccdata[17]; //其中新A密码6个字节;密码权限访问字4个字节;新B密码6个字节;指定更改项目的标志为1个字节,
                                      //这个字节为3是表示同时更改A、B、 密码权限访问字,为2表示密码权限访问字不更改,只改A、B密码,为0表示只改A密码

unsigned char (__stdcall *piccchangesinglekeyex)(unsigned char ctrlword,unsigned char *serial,unsigned char area,unsigned char keyA1B0,unsigned char *piccoldkey,unsigned char *piccnewkey);

AnsiString FileName=ExtractFilePath(Application->ExeName);
        if(FileName.SubString(FileName.Length(),1) != "//")
        {
             FileName += "//";
        }
        FileName += "OUR_MIFARE.dll";
        if(!FileExists(FileName))
        {
                ShowMessage("无法在应用程序的文件夹找到OUR_MIFARE.dll");
                return;
        }

HINSTANCE hDll;
        hDll=LoadLibrary(FileName.c_str());
        piccchangesinglekeyex = (unsigned char (__stdcall *)(unsigned char ,unsigned char *,unsigned char ,unsigned char ,unsigned char *,unsigned char *))GetProcAddress(hDll,"piccchangesinglekeyex");

myctrlword =EXTERNKEY;//用函数中输入的密码认证
        myareano = 8;//改第8区的密码
        authmode = 0xaa;//用A密码认证

//旧密码
        mypiccoldkey[0] = 0xff;
        mypiccoldkey[1] = 0xff;
        mypiccoldkey[2] = 0xff;
        mypiccoldkey[3] = 0xff;
        mypiccoldkey[4] = 0xff;
        mypiccoldkey[5] = 0xff;

//新A密码
        mypiccdata[0] = 0xff;
        mypiccdata[1] = 0xff;
        mypiccdata[2] = 0xff;
        mypiccdata[3] = 0xff;
        mypiccdata[4] = 0xff;
        mypiccdata[5] = 0xff;

//密码权限访问字,出厂卡为 FF 07 80 69
        mypiccdata[6] = 0xff;
        mypiccdata[7] = 0x07;
        mypiccdata[8] = 0x80;
        mypiccdata[9] = 0x69;

//新B密码
        mypiccdata[10] = 0xff;
        mypiccdata[11] = 0xff;
        mypiccdata[12] = 0xff;
        mypiccdata[13] = 0xff;
        mypiccdata[14] = 0xff;
        mypiccdata[15] = 0xff;

//指定更改项目的标志
        mypiccdata[16] = 0x2;//只改A密码和B密码,暂时不改密码权限访问字

status = piccchangesinglekeyex(myctrlword,mypiccserial,myareano,authmode,mypiccoldkey,mypiccdata);
        FreeLibrary(hDll);
        switch(status)
        {
                case 0:
                        ShowMessage("操作成功");
                        break;
                //......
                case 8:
                        ShowMessage("请将卡放在感应区");
                        break;

case 30:
                        ShowMessage("密码权限访问字错误");
                        break;
        }

}
//---------------------------------------------------------------------------

USB接口IC读写器oem软件_AB密码完整解决方案/读写卡测试程序及源代码/c++builder源代码(2)相关推荐

  1. USB HID读卡器 M1卡读卡器 Mifare 读写器 NFC方案 NFC读写器方案 usb 接口NFC读写器 ISO14444 TypeA 协议读写器 S50/S70 usb读写器 提供Demo

    [产品简介]     USB Mifare卡系列读写设备是一款简单.实用的13.56MHz非接触式IC卡读写器 可读写银行卡.公交卡.校园卡.燃气卡.MifareS50卡,S70卡(ISO14443A ...

  2. IC读写器银河麒麟操作系统适配认证测试报告

    银河麒麟操作系统产品NeoCertify 认证测试报告 系统版本:银河麒麟桌面操作系统V10 厂商名称: 广州荣士电子有限公司 认证产品:IC-02免驱动IC读写器 测试日期: 2022-08-23 ...

  3. EtherNet IP以太网IO接口工业读写器|读卡器CK-FR12-E01性能与PLC组网攻略

    EtherNet IP以太网IO接口工业读写器|读卡器CK-FR12-E01是一款基于射频识别技术的高频RFID标签读卡器,读卡器工作频率为13.56MHZ,支持对I-CODE 2.I-CODE SL ...

  4. IC-14W网络IC卡读写器_银河麒麟桌面操作系统V10适配测试报告

    银河麒麟操作系统产品NeoCertify 认证测试报告 系统版本:银河麒麟桌面操作系统V10 厂商名称:广州荣士电子有限公司 认证产品:IC-14W网络IC卡读写器 测试日期:2022-11-04 麒 ...

  5. 安卓Android下如何开发USB NFC读写器APP

    荣士第二代USB免驱动IC读写器IC-02支持Windows.安卓(Android).Linux系统,为方便IC-02读写器能快速的接入安卓(Android)系统,我们提供了各种安卓版本的So库及示例 ...

  6. EMID|FDX-B格式134.2KHZ低频RFID标签编码器读写器CK-A05性能与写卡操作说明

    EMID|FDX-B格式134.2KHZ低频RFID标签编码器读写器CK-A05是基于USB2.0技术开发的低频读写器,可支持对RFID地感标签的读写操作,同时支持EMID,FDX-B两种数据格式.读 ...

  7. requestPermissions读写手机存储权限_单片机实例分享,RFID卡读写器的设计

    RFID(Radio Frequency Identification,射频识别)技术是一种非接触自动识别技术,利用射频信号通过空间耦合(电感或电磁耦合)实现无接触信息传递,并通过所传递的信息达到识别 ...

  8. Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

    前面学习了SDIO接口的WiFi驱动,现在我们来学习一下USB接口的WiFi驱动,二者的区别在于接口不同.而USB接口的设备驱动,我们前面也有学习,比如USB摄像头驱动.USB鼠标驱动,同样都符合Li ...

  9. linux wifi设置端口号,Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析

    前面学习了SDIO接口的WiFi驱动,现在我们来学习一下USB接口的WiFi驱动,二者的区别在于接口不同.而USB接口的设备驱动,我们前面也有学习,比如USB摄像头驱动.USB鼠标驱动,同样都符合Li ...

  10. RFID技术、RFID电子标签、读写器

    先说下,在目前这家公司做的中间件系统中,我负责设备套件开发,这里简称DK. 本文章的目的,只是介绍下物联网中RFID无线射频技术中相关概念,让初入该行业的,有个基础的认识. 整个完整的RFID集成应用 ...

最新文章

  1. java script console_JS调试之console.log()作用与用法
  2. 云南林业职业技术学院计算机考试试题,云南林业职业技术学院单招模拟题(含解析)9.docx...
  3. 分布式转码初步方案(hadoop+ffmpeg)
  4. 【渝粤教育】国家开放大学2018年春季 0703-21T经济学基础 参考试题
  5. python pd Series 添加行_Python数据分析与挖掘的常用工具
  6. 使用标准库函数对象的例子
  7. Swift 3.0 使用Core Data
  8. dedecms后台上传图片附件返回302的问题
  9. Web项目实战(购物商城项目简单的实现)
  10. MCGS7.7嵌入版软件安装方法
  11. 国产CAM究竟水平如何?看完测试我震惊了
  12. 应用统计学学什么科目_统计学考研初试都要考哪些科目?
  13. 什么是事实表和维度表?什么是维度和度量?
  14. 每次遇到浏览器主页被篡改的问题,就特别气愤加头疼
  15. matlab由滤波的系数得到传输函数 设计带通滤波器 design fdatool设计IIR带通滤波器
  16. YTU OJ 2476 C++习题 继承与组合
  17. 【深度学习框架体系的学习】pytorch
  18. 信用社考试计算机试题及答案,2016黑龙江省农村信用社考试题库-计算机试题及答案六...
  19. win10虚拟机dhcp服务器,怎么解决win10系统关闭虚拟机开机停在dhcp无法启动的问题...
  20. 中软国际赴黔参加大数据国际年会,规划产业布局

热门文章

  1. 【原创】微信最新表情js代码
  2. 简单的Dos攻击-死亡之Ping
  3. 如何给页面加能够临时会话的QQ
  4. python爬取某鱼的直播间信息
  5. ROS 教程之navigation: 用程序设定导航目标点
  6. 最新emoji表情代码大全_三十而已表情包下载-三十而已表情包大全最新下载
  7. 统计学 常用的数据分析方法大总结,推荐收藏
  8. IT英语4-计算机英语缩写术语
  9. Consul注册中心删除某个服务
  10. ONVIF协议--ONVIF协议简介