⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 publicunitforcall.~pas

📁 关于手持机的LCD显示模块的设计LCD的显示固定为每行16个字符
💻 ~PAS
📖 第 1 页 / 共 2 页
字号:
          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 + -