C#调用硬件DLL问题。
别人给我一个DLL文件,里面有个方法是读取IC卡信息的,方法如下
extern "C " __declspec(dllexport) BOOL __stdcall ReadCardInformation(int Port,char * Card,char * State,char * Money,char * LimitDegree,char * LimitMoney,char * LimitTime,char * UsedLD,char * UsedLM,char * UserGB)
/* 功能说明:
读卡信息
参数说明:
port:使用的串口号, 例如: "COM1 ", "COM2 "等等
CardNO:卡号,最大99999
Money:金额,最大65535,最小0
LimitDegree:每日限制次数,最大255,最小0
LimitMoney:每日限制金额,最大65535,最小0
LimitTime:自动注销日期.保留’YYYYMMDD’,
UserGB:级别
State:卡状态,8为正常卡,0是不正常
UsedLD:已使用每日限额
UsedLM:已使用每日次数
返回值:
成功为True
使用说明:
*/
我要用C#得到IC卡里面的信息
IC卡的信息如下,CardNo卡号,State状态,Banlance余额,UseNum每日限制次数,LimitTime到期时间,LimitMoney消费限额,UsedNum已使用次数,UserGB用户级别,UsedLD已消费次数。如上信息需要在界面中显示出来,哪位帮个忙。
------解决方案--------------------用Dllimport来引入dll函数,用StringBuilder来替换char*类型
例如:
[DllImport( "yourdll.dll " )]
private extern static bool ReadCardInformation( int Port, StringBuilder Card,
StringBuilder State,StringBuilder Money,StringBuilder LimitDegree,StringBuilder LimitMoney,StringBuilder LimitTime,StringBuilder UsedLD,StringBuilder UsedLM,StringBuilder UserGB);
Caution: 调用的时候,注意初始化StringBuilder空间
StringBuilder Card = new StringBuilder(256);