IC卡读写器c++builder源代码续
详细代码
//---------------------------------------------------------------------------
#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);
//在下面设定断点,然后查看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);
}
//---------------------------------------------------------------------------
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);
//在下面设定断点,然后查看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)
//修改单区密码
{
/*
技术支持:
网站:
*/
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);
//返回值处理
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))
{
ShowMessage(IntToStr(devno[0]) + "-" + IntToStr(devno[1]) + "-" + IntToStr(devno[2]) + "-" + IntToStr(devno[3]));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{ //发送字符至读卡器显示
unsigned char (__stdcall *lcddispfull)(LPSTR lcdstr);
//判断动态库是否存在
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());
lcddispfull = (unsigned char (__stdcall *)(LPSTR ))GetProcAddress(hDll,"lcddispfull");
lcddispfull(Edit1->Text.c_str());
}
//---------------------------------------------------------------------------
转载于:https://blog.51cto.com/reader/595391
IC卡读写器c++builder源代码续相关推荐
- IC卡读写器VB源代码
IC卡读写器VB使用界面 详细代码 '广州荣士电子有限公司,联系电话020-82318861,82322852,定制13826029618 网址http://www.icmcu.com '读卡函数声明 ...
- java做的web系统 m1 读卡器 结合_IE浏览器接入IC卡读写器实现M1卡的读写功能
基于ActiveX技术的ocx控件是实现网页上读写 IC卡的一个比较不错的方法,因为ocx是com组件,通过其发布的接口,IE可以实现所有的功能.ActiveX不仅能适应大部分编程语言,做到与编程语言 ...
- 公交IC卡读写器设计指南
采用PHILIPS公司的Mifaue卡作IC卡,设计以射频技术为核心,以单片机为控制器的IC卡读写器在公交自动收费系统中的应用.制作的IC卡读写器可以实现制卡.售卡.自动收费等功能,具有安全.实用.方 ...
- 关于IC卡读写器的应用
IC卡读写器的应用领域 IC卡具有存储容量大,保密性好,体积小,便于携带的性能特点,可以广泛应用于门禁管理.会议签到.车辆管理.一卡通.身份验证识别等相关行业.本文介绍了一种基于射频识别技术的RFID ...
- ic卡读写器有哪些分类?如何使用ic卡读写器?
ic卡读写器是读写器中的一种,通过ic卡读写器可对ic卡的信息进行读取.为增进大家对ic卡读写器的认识,本文将对ic卡读写器的分类.ic卡读写器的使用方法等内容予以介绍.如果你对ic卡读写器具有兴趣, ...
- Windows操作系统下用vmware虚拟ubuntu系统测试USB IC卡读写器的说明
读写器介绍:RFID读写器NFC发卡器WEB可编程NDEF文本/网址/智能海报/电话/启动-淘宝网 (taobao.com) 一.打开windows计算机管理 / 服务 / VMware USB Ar ...
- IC-14W网络IC卡读写器_银河麒麟桌面操作系统V10适配测试报告
银河麒麟操作系统产品NeoCertify 认证测试报告 系统版本:银河麒麟桌面操作系统V10 厂商名称:广州荣士电子有限公司 认证产品:IC-14W网络IC卡读写器 测试日期:2022-11-04 麒 ...
- IC卡读写器技术及应用
前言 IC卡读写器又叫IC卡读写机具,它是遵循一定的协议,与IC卡建立通信关系,对IC卡进行读写操作的工具.随着IC卡在社会各领域的广泛应用,各种各样的IC卡读写机具也应运而生.为了帮助大家对IC卡读 ...
- RS232串口IC卡读写器控制协议
//发卡器介绍: https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-17663462238.26.12fce728BgBT3g&id=1 ...
- 串口IC卡读写器IC-07开发程序包(简单易用)
开发程序包下载http://icmcu.com/download/2009-2-7/ChuanKou-IC-KaDouXieQi-IC-07-KaiFaBao.html
最新文章
- 用SQL语句添加删除修改字段
- 文件描述符fd是什么?
- (转) Android 数字签名
- 看完这篇,你还不能理解 ‘数据库架构’?趁早回家吧
- 48 行代码给 ABAP ALV 报表的数据行增添颜色效果
- Educational Codeforces Round 103 (Rated for Div. 2) D. Journey dp
- 让TFS忽略packages文件夹的更改
- freemarker处理EL表达式
- 大数据产品推荐:神策分析——可私有化部署的用户行为分析平台
- Win10鼠标单击经常变双击
- 【编译原理】自上而下语法分析(C/C++源码+实验报告)
- 伍斯特理工学院计算机科学硕士,美国伍斯特理工学院计算机科学硕士入学要求.pdf...
- Arturia Buchla Easel V for Mac - Buchla音乐画架插件
- 爬虫中使用selenium实现对斗鱼直播的各个房间标题、主播id,直播内容类型和热度信息的爬取
- android局部布局刷新,Android RecyclerView 局部刷新分析
- java_实现公历转农历代码
- ThinkPHP出现 缓存文件写入失败!
- Hbuilder集成微信支付教程(简单流程)
- 鲸探发布点评:8月9日发售《和为贵》数字藏品
- 快手如何提升播放量;快速热门涨粉。丨国仁网络资讯