📄 main.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <StrUtils.hpp>
#pragma hdrstop
#include "Main.h"
#include "RegIC.h"
#include "test.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SUIButton"
#pragma link "SUIComboBox"
#pragma link "SUIEdit"
#pragma link "SUIGroupBox"
#pragma link "SUIImagePanel"
#pragma resource "*.dfm"
TFrmMain *FrmMain;
HINSTANCE m_hDLL;
unsigned long snr;
unsigned short type;
unsigned char size;
unsigned char data[16];
unsigned char szpwd[6]={0xff,0xff,0xff,0xff,0xff,0xff};
//---------------------------------------------------------------------------
__fastcall TFrmMain::TFrmMain(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::FormCreate(TObject *Sender)
{
m_hDLL = LoadLibrary("RC500USB.dll");//打开动态库
//取得函数地址
(FARPROC &)RC500USB_init = GetProcAddress(m_hDLL,"RC500USB_init");
(FARPROC &)RC500USB_exit = GetProcAddress(m_hDLL,"RC500USB_exit");
(FARPROC &)RC500USB_request = GetProcAddress(m_hDLL,"RC500USB_request");
(FARPROC &)RC500USB_anticoll = GetProcAddress(m_hDLL,"RC500USB_anticoll");
(FARPROC &)RC500USB_anticoll2 = GetProcAddress(m_hDLL,"RC500USB_anticoll2");
(FARPROC &)RC500USB_select = GetProcAddress(m_hDLL,"RC500USB_select");
(FARPROC &)RC500USB_authentication = GetProcAddress(m_hDLL,"RC500USB_authentication");
(FARPROC &)RC500USB_authentication2 = GetProcAddress(m_hDLL,"RC500USB_authentication2");
(FARPROC &)RC500USB_authkey = GetProcAddress(m_hDLL,"RC500USB_authkey");
(FARPROC &)RC500USB_halt = GetProcAddress(m_hDLL,"RC500USB_halt");
(FARPROC &)RC500USB_read = GetProcAddress(m_hDLL,"RC500USB_read");
(FARPROC &)RC500USB_write = GetProcAddress(m_hDLL,"RC500USB_write");
(FARPROC &)RC500USB_writeval = GetProcAddress(m_hDLL,"RC500USB_writeval");
(FARPROC &)RC500USB_readval = GetProcAddress(m_hDLL,"RC500USB_readval");
(FARPROC &)RC500USB_value = GetProcAddress(m_hDLL,"RC500USB_value");
(FARPROC &)RC500USB_load_key = GetProcAddress(m_hDLL,"RC500USB_load_key");
(FARPROC &)RC500USB_reset = GetProcAddress(m_hDLL,"RC500USB_reset");
(FARPROC &)RC500USB_close = GetProcAddress(m_hDLL,"RC500USB_close");
(FARPROC &)RC500USB_config = GetProcAddress(m_hDLL,"RC500USB_config");
(FARPROC &)RC500USB_get_info = GetProcAddress(m_hDLL,"RC500USB_get_info");
(FARPROC &)RC500USB_set_control_bit = GetProcAddress(m_hDLL,"RC500USB_set_control_bit");
(FARPROC &)RC500USB_clr_control_bit = GetProcAddress(m_hDLL,"RC500USB_clr_control_bit");
(FARPROC &)RC500USB_buzzer = GetProcAddress(m_hDLL,"RC500USB_buzzer");
(FARPROC &)RC500USB_read_E2 = GetProcAddress(m_hDLL,"RC500USB_read_E2");
(FARPROC &)RC500USB_write_E2 = GetProcAddress(m_hDLL,"RC500USB_write_E2");
StatusBar->Panels->Items[0]->Text = "未连接...";
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
RC500USB_exit();
FreeLibrary(m_hDLL);//释放动态库句柄
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::BtnReadClick(TObject *Sender)
{
// unsigned long snr;
// unsigned short type;
// unsigned char size;
// unsigned char data[16];
// unsigned char szpwd[6]={0xff,0xff,0xff,0xff,0xff,0xff};
//
// if(RC500USB_request (1,type)!=0) //对读卡器进行操作
// {
// ShowMessage("感应区内没有卡");
// return;
// }
//
// if(RC500USB_anticoll(0,snr)!=0) //进行防碰撞选择,成功则返回卡号
// {
// ShowMessage("防碰撞错误");
// return;
// }
//
// if(RC500USB_select(snr,size)!=0) //选择卡
// {
// ShowMessage("选择卡错误");
// return;
// }
if (CmbFan->Text.Trim()=="")
{
ShowMessage("请选择扇区!");
return;
}
if (CmbBlock->Text.Trim()=="")
{
ShowMessage("请选择区块!");
return;
}
if (!QueryCard()) return;
int iFan(0),iBlock(0);
AnsiString s;
iFan = CmbFan->ItemIndex ;
iBlock = CmbBlock->ItemIndex ;
MemResult->Clear();
if(RC500USB_authkey(0,szpwd,iFan)!=0)
{
ShowMessage("验证错误");
return;
}
if (iBlock == 4)
{
for (int x=0;x!=4;++x)
{
if(RC500USB_read(iFan*4+x,data)!=0)
{
ShowMessage("读取数据错误");
return;
}
s="";
for(int i=0;i!=16;++i)
{
s=s+IntToHex((int)data[i],2)+" ";
}
MemResult->Lines->Add("读出 扇区:" + IntToStr(iFan) + " 块:" + IntToStr(x) + " 数据如下:");
MemResult->Lines->Add(s);
}
}
else
{
if(RC500USB_read(iFan*4+iBlock,data)!=0)
{
ShowMessage("读取数据错误");
return;
}
s="";
for(int i=0;i!=16;++i)
{
s=s+IntToHex((int)data[i],2)+" ";
}
MemResult->Lines->Add("读出 扇区:" + IntToStr(iFan) + " 块:" + IntToStr(iBlock) + " 数据如下:");
MemResult->Lines->Add(s);
}
RC500USB_halt(); //挂起
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::BtnWriteClick(TObject *Sender)
{
// unsigned long snr;
// unsigned short type;
// unsigned char size;
// unsigned char data[16];
// unsigned char szpwd[6]={0xff,0xff,0xff,0xff,0xff,0xff};
if (CmbWriteFan->Text.Trim()=="")
{
ShowMessage("请选择扇区!");
return;
}
if (CmbWriteBlock->Text.Trim()=="")
{
ShowMessage("请选择区块!");
return;
}
AnsiString s;
int j=0;
s=Edit16->Text.Trim();
setmem(data,16,0);
if (s.Length()!=47)
{
ShowMessage("格式不对!");
return;
}
for (int i=0;i!=48;i+=3)
{
if (s.c_str()[i]==NULL ||
s.c_str()[i+1]==NULL)
{
ShowMessage("格式不对!");
return;
}
data[j]=StrToInt("0x"+s.SubString(i+1,2));
j++;
if ((i+2) >=47) break;
if (s.c_str()[i+2]!=' ')
{
ShowMessage("格式不对!");
return;
}
}
if (CmbWriteBlock->Text.Trim() == "3")
{
int iBox;
iBox=Application->MessageBox("此块为密钥块,确认进行修改吗?","询问",MB_YESNO+MB_ICONQUESTION);
if (iBox == IDNO) return;
}
if (!QueryCard()) return;
// TEdit *p;
// AnsiString s,Str;
// int j(0),x(0);
// for (int i=0;i!=GroupBox1->ControlCount;++i)
// {
// if(GroupBox1->Controls[i]->ClassNameIs("TEdit"))
// {
// p=dynamic_cast<TEdit *>(GroupBox1->Controls[i]);
// s=s+p->Text+" ";
// Str = "0x"+p->Text;
// x = Str.ToInt();
// data[j] = x;
// j++;
// }
// }
// for(int i=0;i<16;i++)
// {
// data[i]=i;
// }
// if(RC500USB_request (1,type)!=0) //对读卡器进行操作
// {
// ShowMessage("感应区内没有卡");
// return;
// }
//
//
// if(RC500USB_anticoll(0,snr)!=0) //进行防碰撞选择,成功则返回卡号
// {
// ShowMessage("防碰撞错误");
// return;
// }
//
// if(RC500USB_select(snr,size)!=0) //选择卡
// {
// ShowMessage("选择卡错误");
// return;
// }
int iFan(0),iBlock(0);
iFan = CmbWriteFan->ItemIndex ;
iBlock = StrToInt(CmbWriteBlock->Text) ;
if(RC500USB_authkey(0,szpwd,iFan)!=0)
{
ShowMessage("验证错误");
return;
}
MemResult->Clear();
if(RC500USB_write(iFan*4+iBlock,data)!=0)
{
ShowMessage("写入数据错误");
return;
}
MemResult->Lines->Add("写入 扇区:" + IntToStr(iFan) + " 块:" + IntToStr(iBlock) + " 数据如下:");
MemResult->Lines->Add(s);
RC500USB_halt(); //挂起
}
//---------------------------------------------------------------------------
void __fastcall TFrmMain::FormShow(TObject *Sender)
{
CmbFan->Items->Clear();
CmbWriteFan->Items->Clear();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -