📄 publicunitforcall.~pas
字号:
Th:= LoadLibrary('MF500_HY60.dll'); //动态载入DLL,并返回其句柄
if Th > 0 then //如果载入成功则获取ShowCalendar函数的地址
try
Tp:=GetProcAddress(Th,pchar('StrCommandForSendToComPort'));
if Tp<>nil
then begin
Tf:=TReadDataFromComFunc(Tp);
end
else
ShowMessage('StrCommandForSendToComPort函数没有找到');
finally
// FreeLibrary(Th); {释放DLL}
end
else
ShowMessage('MF500_HY60.dll没有找到');
end;
end;
procedure IniReadCommandDataArrayString;
begin
//初始化串口 端口和传输速率
ComPortNumberStr:='COM3';
ComBaudrateSet:=19200;
//给命令变量数组赋值
CommandForSendToCard[0]:='0210'; //读固件版本号
CommandForReturnStateDataTrue[0]:='0610'; //4个字节版本号
CommandForReturnStateDataFalse[0]:='';
CommandForReturnStateDataOperator[0]:='读固件版本号';
CommandForSendToCard[1]:='031101'; // 天线开启操作
CommandForReturnStateDataTrue[1]:='0211';
CommandForReturnStateDataFalse[1]:='02EE';
CommandForReturnStateDataOperator[1]:='天线开启操作';
CommandForSendToCard[2]:='031110'; //天线关闭操作
CommandForReturnStateDataTrue[2]:='0211';
CommandForReturnStateDataFalse[2]:='02EE';
CommandForReturnStateDataOperator[2]:='天线开启操作';
CommandForSendToCard[3]:='0212'; //无数据卡休眠操作
CommandForReturnStateDataTrue[3]:='0212';
CommandForReturnStateDataFalse[3]:='02ED';
CommandForReturnStateDataOperator[3]:='无数据卡休眠操作';
CommandForSendToCard[4]:='0313F0'; //开启自动寻卡
CommandForReturnStateDataTrue[4]:='0213';
CommandForReturnStateDataFalse[4]:='02EC';
CommandForReturnStateDataOperator[4]:='开启自动寻卡';
CommandForSendToCard[5]:='03130F'; //关闭自动寻卡
CommandForReturnStateDataTrue[5]:='0213';
CommandForReturnStateDataFalse[5]:='02EC';
CommandForReturnStateDataOperator[5]:='关闭自动寻卡';
CommandForSendToCard[6]:='031413'; //蜂鸣器操作 --开启
CommandForReturnStateDataTrue[6]:='0214';
CommandForReturnStateDataFalse[6]:='';
CommandForReturnStateDataOperator[6]:=' 开启蜂鸣器操作';
CommandForSendToCard[7]:='03140F'; //蜂鸣器操作 --关闭
CommandForReturnStateDataTrue[7]:='0214';
CommandForReturnStateDataFalse[7]:='';
CommandForReturnStateDataOperator[7]:='关闭蜂鸣器操作';
CommandForSendToCard[8]:='0219'; //读卡类型
CommandForReturnStateDataTrue[8]:='0419'; // 加 2字节数据:卡类型 04表示MIFARE1 S50
CommandForReturnStateDataFalse[8]:='02E6';
CommandForReturnStateDataOperator[8]:='读卡类型';
CommandForSendToCard[9]:='0220'; //寻卡操作
CommandForReturnStateDataTrue[9]:='0620'; // 加 4字节数据:4 字节卡系列号
CommandForReturnStateDataFalse[9]:='02DF';
CommandForReturnStateDataOperator[9]:='寻卡操作';
CommandForSendToCard[10]:='0A21'; //下载密码 数据内容8字节:"1 字节密钥标识+1字节扇区号+6 字节密钥";密钥标识:60为PICC_AUTHENT1A,61为PICC_AUTHENT1B
CommandForReturnStateDataTrue[10]:='0221'; //
CommandForReturnStateDataFalse[10]:='02DE';
CommandForReturnStateDataOperator[10]:='下载密码';
CommandForSendToCard[11]:='0822'; //校验密码 数据内容6字节:"1 字节密钥标识+4字节序列号+1字节扇区号";
CommandForReturnStateDataTrue[11]:='0222'; //
CommandForReturnStateDataFalse[11]:='02DD';
CommandForReturnStateDataOperator[11]:='校验密码';
CommandForSendToCard[12]:='0323'; //读块 1字节块号
CommandForReturnStateDataTrue[12]:='1223'; // 加 16字节数据
CommandForReturnStateDataFalse[12]:='02DC';
CommandForReturnStateDataOperator[12]:='读块: ';
CommandForSendToCard[13]:='1324'; //写块 1字节块号+16字节数据
CommandForReturnStateDataTrue[13]:='0224'; //
CommandForReturnStateDataFalse[13]:='02DB';
CommandForReturnStateDataOperator[13]:='写块: ';
CommandForSendToCard[14]:='0725'; //初始化钱包 1字节块号+4 字节数据; 初始值(低字节在前)
CommandForReturnStateDataTrue[14]:='0225'; //
CommandForReturnStateDataFalse[14]:='02DA';
CommandForReturnStateDataOperator[14]:='初始化钱包: ';
CommandForSendToCard[15]:='0326'; //读钱包 1字节块号
CommandForReturnStateDataTrue[15]:='0626'; // 加 4 字节 钱包值(低字节在前)
CommandForReturnStateDataFalse[15]:='02D9';
CommandForReturnStateDataOperator[15]:='读钱包: ';
CommandForSendToCard[16]:='0727'; //充值 1字节块号+4字节增加值(低字节在前)
CommandForReturnStateDataTrue[16]:='0227'; //
CommandForReturnStateDataFalse[16]:='02D8';
CommandForReturnStateDataOperator[16]:='充值: ';
CommandForSendToCard[17]:='0728'; //扣款 1字节块号+4 字节扣款值(低字节在前)
CommandForReturnStateDataTrue[17]:='0228'; //
CommandForReturnStateDataFalse[17]:='02D7';
CommandForReturnStateDataOperator[17]:='扣款: ';
CommandForSendToCard[18]:='0A313132333435363738'; //LED显示 8字节显示数据
CommandForReturnStateDataTrue[18]:='0231'; //
CommandForReturnStateDataFalse[18]:='';
CommandForReturnStateDataOperator[18]:='LED显示';
CommandForSendToCard[19]:='03320f'; //LED消隐 1字节消隐控制
CommandForReturnStateDataTrue[19]:='0232'; //
CommandForReturnStateDataFalse[19]:='';
CommandForReturnStateDataOperator[19]:='LED消隐';
CommandForSendToCard[20]:='0230'; //LED 复位 1字节消隐控制
CommandForReturnStateDataTrue[20]:='0230'; //
CommandForReturnStateDataFalse[20]:='';
CommandForReturnStateDataOperator[20]:='LED 复位';
CommandForSendToCard[21]:='0333'; //LED闪烁 1字节闪烁控制
CommandForReturnStateDataTrue[21]:='0233'; //
CommandForReturnStateDataFalse[21]:='';
CommandForReturnStateDataOperator[21]:='LED闪烁';
CommandForSendToCard[22]:='033411'; //--禁止 LED自动寻卡模式 设置自动寻卡模式,自动显示卡号。1字节控制字:0x00为显示,0x11为禁止
CommandForReturnStateDataTrue[22]:='0234'; //
CommandForReturnStateDataFalse[22]:='';
CommandForReturnStateDataOperator[22]:='禁止LED自动寻卡模式';
CommandForSendToCard[23]:='033300'; //--启动 LED自动寻卡模式 设置自动寻卡模式,自动显示卡号。1字节控制字:0x00为显示,0x11为禁止
CommandForReturnStateDataTrue[23]:='0234'; //
CommandForReturnStateDataFalse[23]:='';
CommandForReturnStateDataOperator[23]:='启动LED自动寻卡模式';
CommandForSendToCard[24]:='04350810'; //LED循环左移 2字节数据:1字节循环次数+1字节延时时间(*10ms)
CommandForReturnStateDataTrue[24]:='0235';
CommandForReturnStateDataFalse[24]:='';
CommandForReturnStateDataOperator[24]:='LED循环左移';
CommandForSendToCard[25]:='04360810'; //-LED循环右移 2字节数据:1字节循环次数+1字节延时时间(*10ms)
CommandForReturnStateDataTrue[25]:='0236';
CommandForReturnStateDataFalse[25]:='';
CommandForReturnStateDataOperator[25]:='LED循环右移';
CommandForSendToCard[26]:='04370710'; //-LED不循环左移 2字节数据:1字节循环次数(小于等于8)+1字节延时时间(*10ms)
CommandForReturnStateDataTrue[26]:='0237';
CommandForReturnStateDataFalse[26]:='';
CommandForReturnStateDataOperator[26]:='LED不循环左移';
CommandForSendToCard[27]:='04380710'; //-LED不循环右移 2字节数据:1字节循环次数(小于等于8)+1字节延时时间(*10ms)
CommandForReturnStateDataTrue[27]:='0238';
CommandForReturnStateDataFalse[27]:='';
CommandForReturnStateDataOperator[27]:='LED不循环右移';
CommandForSendToCard[28]:='0240'; //LCD清屏
CommandForReturnStateDataTrue[28]:='0240'; //
CommandForReturnStateDataFalse[28]:='02BF';
CommandForReturnStateDataOperator[28]:='LCD清屏';
CommandForSendToCard[29]:='0641'; //LCD显示 1字节x+1字节y+n字节显示数据
CommandForReturnStateDataTrue[29]:='0241'; //
CommandForReturnStateDataFalse[29]:='02BE';
CommandForReturnStateDataOperator[29]:='LCD显示';
CommandForSendToCard[30]:='034200'; //---启动 LCD背光 1字节数据:0x00为开,0x11为关
CommandForReturnStateDataTrue[30]:='0242'; //
CommandForReturnStateDataFalse[30]:='';
CommandForReturnStateDataOperator[30]:='启动LCD背光';
CommandForSendToCard[31]:='034211'; //--关闭 LCD背光 1字节数据:0x00为开,0x11为关
CommandForReturnStateDataTrue[31]:='0242'; //
CommandForReturnStateDataFalse[31]:='';
CommandForReturnStateDataOperator[31]:='关闭LCD背光';
CommandForSendToCard[32]:='034300'; //--启动 LCD自动寻卡模式 设置自动寻卡模式,自动显示卡号。1字节控制字:0x00为显示,0x11为禁止
CommandForReturnStateDataTrue[32]:='0243'; //
CommandForReturnStateDataFalse[32]:='02BC';
CommandForReturnStateDataOperator[32]:='启动LCD自动寻卡模式';
CommandForSendToCard[33]:='034311'; //--关闭 LCD自动寻卡模式 设置自动寻卡模式,自动显示卡号。1字节控制字:0x00为显示,0x11为禁止
CommandForReturnStateDataTrue[33]:='0243'; //
CommandForReturnStateDataFalse[33]:='02BC';
CommandForReturnStateDataOperator[33]:='关闭LCD自动寻卡模式';
CommandForSendToCard[34]:='0444'; //LCD循环左移 2字节数据:1字节循环次数(小于等于8)+1字节延时时间(*10ms)
CommandForReturnStateDataTrue[34]:='0244';
CommandForReturnStateDataFalse[34]:='02BB';
CommandForReturnStateDataOperator[34]:='LCD循环左移';
CommandForSendToCard[35]:='0445'; //-LCD循环右移 2字节数据:1字节循环次数(小于等于8)+1字节延时时间(*10ms)
CommandForReturnStateDataTrue[35]:='0245';
CommandForReturnStateDataFalse[35]:='02BA';
CommandForReturnStateDataOperator[35]:='LCD循环右移';
CommandForSendToCard[36]:='0346'; //-LCD字符闪烁 1字节闪烁次数
CommandForReturnStateDataTrue[36]:='0246';
CommandForReturnStateDataFalse[36]:='02B9';
CommandForReturnStateDataOperator[36]:='LCD字符闪烁';
CommandForSendToCard[37]:='0201'; //读设备型号
CommandForReturnStateDataTrue[37]:='0A01'; //8个字节设备号
CommandForReturnStateDataFalse[37]:='';
CommandForReturnStateDataOperator[37]:='读设备型号';
end;
function ReadDataFromCardForShow(SendCommandIndex:integer;SelSectorAndBlockIndexStr:string):string;
var
ReceiveOrignalString:string;
begin
if SetComPortStateBool=true then
begin
ReceiveOrignalString:= SendDataAndReturnData(CommandForSendToCard[SendCommandIndex]+SelSectorAndBlockIndexStr);
result:=ReceiveComDataFromCard(ReceiveOrignalString,CommandForReturnStateDataTrue[SendCommandIndex],CommandForReturnStateDataFalse[SendCommandIndex]);
end
else
showmessage('串口没有打开,请打开后操作');
end;
procedure ReadDataFromCardForState(SendCommandIndex:integer;OperatorTpyeForSend:string);
var
ReceiveOrignalString:string;
begin
if SetComPortStateBool=true then
begin
ReceiveOrignalString:= SendDataAndReturnData(CommandForSendToCard[SendCommandIndex]);
WriteDataReturnStatusBool(OperatorTpyeForSend,ReceiveOrignalString,CommandForReturnStateDataTrue[SendCommandIndex],CommandForReturnStateDataFalse[SendCommandIndex]);
end
else
showmessage('串口没有打开,请打开后操作');
end;
procedure WriteDadaToCardFunction(OperatorType:string;SendCommandIndex:integer;WriteOtherData:string;WriteDataStr:string;WriteDataLen:integer);
var
WriteStringDataToCard:string;
TempDefineDataStrOK:string;
ReceiveOrignalString:string;
begin
if SetComPortStateBool=true then
begin
TempDefineDataStrOK:=SendWriteDataToCard(WriteDataStr,WriteDataLen);
WriteStringDataToCard:=CommandForSendToCard[SendCommandIndex]+WriteOtherData+TempDefineDataStrOK;
ReceiveOrignalString:= SendDataAndReturnData(WriteStringDataToCard);
WriteDataReturnStatusBool(OperatorType,ReceiveOrignalString,CommandForReturnStateDataTrue[SendCommandIndex],CommandForReturnStateDataFalse[SendCommandIndex]);
end
else
showmessage('串口没有打开,请打开后操作');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -