日期:2014-05-19  浏览次数:21031 次

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);