/*引數
COMID 串口號
CardID IC卡號;
CardGas 卡內剩余氣量 ;
IcNum 為發卡次數
IcMark 為卡片備注
passbuf 為加密資訊,128位
*/
int __stdcall Bank_Read(int COMID,char * cardid,int *cardgas,int * icnum,int *icmark,char *passBuff);
int __stdcall Bank_Write(int COMID,char * cardid,int cardgas,char * passbuf);
**********以上是廠家給的C代碼,動態庫函式的呼叫方法**********
//以下 是我嘗試寫的Delphi7呼叫的代碼。
function HYYTReadCard(COMID: Integer; CardID: PAnsiChar; var CardGas: Integer; var IcNum, IcMark: Integer; password: PAnsiChar): Integer; stdcall;
function HYYTWriteCard(COMID: Integer; CardID: PAnsiChar; var CardGas: Integer; password: PAnsiChar): Integer; stdcall;
function HYYTReadCard; external 'HYYT_Card.dll' name 'Bank_Read';
function HYYTWriteCard; external 'HYYT_Card.dll' name 'Bank_Write';
procedure TYzqtMainForm.btn2Click(Sender: TObject); //---讀卡
var
gStat1:integer;
COMID: integer; //串口號,1送0
CardID: array[1..10] of char; // 卡號
CardGas: integer; // 卡內余量
IcNum: integer; //發卡次數
IcMark: integer; //備注資訊
password: array[1..128] of char; //卡密
begin
gStat1:=HYYTReadCard(COMID,@CardID,CardGas,IcNum,IcMark,@password);
if gStat1=0 then
begin
showmessage('讀卡成功!');
//showmessage(inttostr(ICErroy)+':'+trim(ErroyMsg)) ;
showmessage('@串口號comm:@'+inttostr(COMID)+'@');
showmessage('@用戶卡編號@'+CardID+'@');
showmessage('@卡內余量@'+inttostr(CardGas)+'@@');
showmessage('@發卡次數@'+inttostr(IcNum)+'@@');
showmessage('@發卡備注@'+inttostr(IcMark)+'@@');
edt1.Text:= trim(password);
end;
end;
出現的問題是,除了 password: array[1..128] of char; //卡密 這一項獲取了資料,其他欄位都沒資料,都為0或者為空。CardID這個引數的用法應該是和卡密的一樣,但是也沒有資料。 CardGas, IcNum,IcMark的定義是不是有問題。不太清楚指標的準確定義。希望得到指教。如何翻譯一下廠家的兩行代碼。
uj5u.com熱心網友回復:
function HYYTReadCard(COMID: Integer; CardID: PAnsiChar; var CardGas, IcNum, IcMark: Integer; password: PAnsiChar): Integer; stdcall; external 'HYYT_Card.dll' name 'Bank_Read';function HYYTWriteCard(COMID: Integer; CardID: PAnsiChar; CardGas: Integer; password: PAnsiChar): Integer; stdcall; external 'HYYT_Card.dll' name 'Bank_Write';
uj5u.com熱心網友回復:
procedure TYzqtMainForm.btn2Click(Sender: TObject); //---讀卡
var
gStat1:integer;
COMID: integer; //串口號,1送0
CardID: array[0..9] of char; // 卡號
CardGas: integer; // 卡內余量
IcNum: integer; //發卡次數
IcMark: integer; //備注資訊
password: array[0..127] of char; //卡密
begin
gStat1:=HYYTReadCard(COMID,CardID,CardGas,IcNum,IcMark,password);
if gStat1=0 then
begin
showmessage('讀卡成功!');
//showmessage(inttostr(ICErroy)+':'+trim(ErroyMsg)) ;
showmessage('@串口號comm:@'+inttostr(COMID)+'@');
showmessage('@用戶卡編號@'+CardID+'@');
showmessage('@卡內余量@'+inttostr(CardGas)+'@@');
showmessage('@發卡次數@'+inttostr(IcNum)+'@@');
showmessage('@發卡備注@'+inttostr(IcMark)+'@@');
edt1.Text:= trim(password);
end;
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24134.html
標籤:語言基礎/算法/系統設計
上一篇:請大師指點迷津
