最近学校要上一卡通项目了,中标单位是广东智慧电子的智慧一卡通信息管理系统,由于要和原有的各种应用系统进行无缝对接,故必须针对一卡通进行接 口进行二次开发。
因为原有的很多应用系统是用Delphi开发的,因此,为了方便开发我把一卡通的VC++接口封装为Delphi的模 式。在封装的过程中有几个细节需要特别注意:
1.接口函数必须采用stdcall调用模式;
2.必须把C++中的 char *类型转换为pchar;
3.int &转换为pointer类型,在调用时先定义一个Integer类型的变量如iMoney,用@iMoney取得返回的整型数值;
4. 返回值很多都是定长的字符串数据,应注意删除不必要的前后空格。
unit
u999CardIntf;
//三九智慧一卡通接口的Delphi封装 by xieyunc 2010.5.27
interface
//1) 打开串口
function IniCom(ComPort,BaudRate:Integer):Integer;stdcall;
external 'SmartCom411SFJ.dll' name 'IniCom';
//2) 关闭串口
function CloseCom(ComPort:Integer):Integer;stdcall;
external 'SmartCom411SFJ.dll' name 'CloseCom';
//3) 读取个人基本信息
function
ReadPersonalInfo(ComPort:Integer;Name,buffer:PChar):Integer;stdcall;
external 'SmartCom411SFJ.dll' name 'ReadPersonalInfo';
//4) 读取卡基本信息
function ReadCardInfo(ComPort:Integer;CarNum,CarNum1,CardID:PChar;
CardType:Pointer;ExpireDay:PChar):Integer;stdcall;
external 'SmartCom411SFJ.dll' name 'ReadCardInfo';
//5) 读电子钱包信息
function
ReadCard(ComPort:Integer;CarNum,CarNum1,Password,CardID,Name:PChar;
Money:Pointer):Integer;stdcall;
external 'SmartCom411SFJ.dll' name 'ReadCard';
//6) 读电子钱包信息并声音提示刷卡
function
ReadCardBeep(ComPort:Integer;CarNum,CarNum1,Password,CardID,Name:PChar;
Money:Pointer):Integer;stdcall;
external 'SmartCom411SFJ.dll' name 'ReadCardBeep';
//7) 扣卡金额
function DecCard
(ComPort:Integer;CardNum:PChar;DecMoney:Pointer):Integer;stdcall;
external 'SmartCom411SFJ.dll' name 'DecCard';
//8) 显示字符串
function
Display(ComPort:Integer;XSbuffer:PChar;DelayTime:Integer):Integer;stdcall;
external
'SmartCom411SFJ.dll' name 'Display';
//9) 用户显示金额
function DisplayMoney(ComPort:Integer;Money:Pointer):Integer;stdcall;
external 'SmartCom411SFJ.dll' name 'DisplayMoney';
//10) 读用户自定义信息(如借书证号)
function ReadLiberyNum(ComPort:Integer;ThirdInfo:PChar):Integer;stdcall;
external 'SmartCom411SFJ.dll' name 'ReadLiberyNum';
implementation
end.
测试界面:
全 部文档:
点击这里下载文件: POS_Demo.rar