回 帖 发 新 帖 刷新版面

主题:有关一个动态连接库函数调用的问题

大家好。我是个新手,由于要写论文,想自已动手做,现在碰到一个问题:
一个硬件设备的动态库不知道怎么调用!

1.    初始化端口
Delphi:
    Function InitComm(iPort:integer):integer; stdcall;far; External 'termb.dll';
VC++
        int InitComm(int iPort);
说明:
        iPort :串口号,取值 1~16
                USB口 取值 1001~1016
   返回值:1    成功
              其他  失败
2.    关闭端口
Delphi:
    Function CloseComm:integer; stdcall;far; External 'termb.dll';
VC++
        int CloseComm (void);
说明:
   返回值:1    成功
              其他  失败

3.    卡认证
Delphi:
    Function Authenticate:integer; stdcall;far; External 'termb.dll';
VC++
        int Authenticate (void);
说明:
   返回值:1    成功
              其他  失败

4.    读卡内信息
Delphi:
    Function Delphi:
    Function Read_Content(Act:integer):integer; stdcall;far; External 'termb.dll';
VC++
    int Read_Content (Act:integer):integer; stdcall;far; External 'termb.dll';
说明:
        Act :读取的信息类型:
        //1 : 读基本信息
            生成wz.txt身份信息文本文件unicode编码
            生成zp.bmp图像文件
-1    相片解码错误
-2    wlt文件后缀错误
-3    wlt文件打开错误
-4    wlt文件格式错误
-5    软件未授权
-6    设备连接错误
-8    文件存储失败
-10    端口操作失败
-11    解码失败
2    接收数据超时

    //2 : 只读文字信息
            生成wz.txt身份信息文本文件unicode编码
    //3 : 读最新住址信息
            生成NewAdd.txt文件
    
返回值:1    成功
          其他  失败

文字信息采用GB 13000的UCS-2进行存储,各项目分配如下:
项目    长度(字节)    说明
姓名    30    汉字
性别    2    代码
民族    4    代码
出生    16    年月日:YYYYMMDD
住址    70    汉字和数字
公民身份号码    36    数字
签发机关    30    汉字
有效期起始日期    16    年月日:YYYYMMDD
有效期截止日期    16    年月日:YYYYMMDD有效期为长期时存储“长期”
最新住址    70(每个住址70字节,最多4块,即280字节)    汉字和数字


错误信息详细见下表
类   别    返回值(16进制)    意   义
与ID卡相关     80    找卡不成功
     81    选卡不成功
     31    卡认证机具失败
     32    机具认证卡失败
     33    信息验证错误
     34    尚未找卡,不能进行对卡的操作
     40    无法识别的卡类型
     41    读卡操作失败
     50    写卡操作失败
     61    用户登录失败


注意:1.端口初始化后,再退出程序时必须关闭端口。
      2.要读取卡内信息,必须先认证卡,成功后才能够读取。
说明一下:这个是个读二代身份证机具的动态库'termb.dll'的函数
请各位大侠帮我写一段怎么样调用这个的代码给我。在这里谢谢了EMAIL:ghs_hfxgy@tom.com

回复列表 (共2个回复)

沙发


再注一下要DELPHI的代码。再次谢谢了。担搁你们时间了!

板凳

unit CardUnit;

interface

Function InitComm(iPort:integer):integer; stdcall;far; External 'termb.dll';
Function CloseComm:integer; stdcall;far; External 'termb.dll';
Function Authenticate:integer; stdcall;far; External 'termb.dll';
Function Read_Content(Act:integer):integer; stdcall;far; External 'termb.dll';

implementation

end.

在你的程序中uses CardUnit即可调用相应函数,DLL没有与主程序直接进行数据传递,而是生成外部文件,应该好处理多了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册