函数原型:

1、端口初始化函数

原    型:int InitComm (int iPort)

说    明:本函数用于打开串口或USB并检测读卡设备是否就绪。

参    数:iPort:设置串口、USB、USB-HID(免驱动)接口

串口

1 – 16(十进制)

例如:

1: 1(COM1)

2:2(COM2)

USB

1001

1001

返 回值:

意义

1

正确

其它

错误

2、端口关闭接口

原    型:int CloseComm(void)

说    明:本函数用于关闭已打开的端口,一般在调用InitComm成功并完成读卡任务后调用。

参    数:无

返 回 值:

意义

1

正确

其它

错误

注意:如果不再使用已打开的端口,必须使用CloseComm函数关闭端口。

3、找IC卡

原    型:int Routon_IC_FindCard();

说    明:本函数用于寻卡。

参    数: 无。

返 回 值:

意义

1

正确

0

错误

 

4、读IC卡序列号高级函数

原    型:int Routon_IC_HL_ReadCardSN(char * SN);

说    明:本函数用于读取IC卡的序列号,自动完成找卡、选卡等过程。

参    数: SN [out] 字符指针,需要在调用时分配内存,字节数不小于16。

返回值:

意义

1

正确

0

错误

5、读IC卡区块高级函数

原    型:int Routon_IC_HL_ReadCard (int SID,int BID,int KeyType,unsigned char * Key,unsigned  char * data);

说    明:本函数用于读取IC卡指定扇区的数据内容,自动完成找卡、选卡、认证等过程。

参    数:

SID为扇区号,0-15之间(对M1S50卡)。

BID为块号,0-3之间。

KeyType为密钥类型,两种:0x60 keyA,0x61 keyB。

Key为密钥。

data为读取到的数据内容,需要在调用时分配内存,字节数不小于16。

PB外部函数定义:

function int InitComm (int iPort) library "sdtapi.dll" alias for "InitComm;ansi"
function int CloseComm() library "sdtapi.dll" alias for "CloseComm;ansi"

function int Routon_IC_FindCard() library "sdtapi.dll" alias for "Routon_IC_FindCard;ansi"
function int Routon_IC_HL_ReadCardSN(ref string SN) library "sdtapi.dll" alias for "Routon_IC_HL_ReadCardSN;ansi"
library "sdtapi.dll" alias for "Routon_IC_HL_ReadCard;ansi"
function long Routon_IC_HL_ReadCard (long SID,long BID,long KeyType, ref longlong Key, ref ulong data[16]) library "sdtapi.dll" alias for "Routon_IC_HL_ReadCard;ansi"

PB调用程序:

long li_Port,ll_rtn
string ls_sn=space(300),ls_key
//初始化通讯口
//打开端口
st_17.text=''
li_Port=1001
ll_rtn=InitComm(li_Port)//端口初始化
if ll_rtn<>1 then
  messagebox('提示','端口初始化失败!')

return -1
end if
//寻卡请求
ll_rtn=Routon_IC_FindCard()
if ll_rtn<>1 then
  messagebox('提示','寻卡请求失败!')
  CloseComm()
  return -1
end if
ll_rtn=Routon_IC_HL_ReadCardSN(ls_sn)
if ll_rtn<>1 then
  messagebox('提示','读IC卡序列号失败!')
  CloseComm()
  return -1
end if
//读IC卡区块高级函数
//ls_key="~hff~hff~hff~hff~hff~hff~h00"
//ls_key="~hff~hff~hff~hff~hff~hff"
//ls_key="0xffffffffffff"
longlong ll_key
ll_key =  281474976710655
ulong ls_data[16] //卡数据缓冲
//ulong key[6]
//key[1] =255
//key[2] =255
//key[3] =255
//key[4] =255
//key[5] =255
//key[6] =255
ll_rtn=Routon_IC_HL_ReadCard(0,0,96,ll_key,ls_data[])
if ll_rtn<>1 then
 messagebox('提示','读IC卡区块失败!')
 CloseComm()
 return -1
end if
CloseComm()

return 1

测试过程:

1、function long Routon_IC_HL_ReadCard (long SID,long BID,long KeyType, ref string Key,ref string data) library "sdtapi.dll" alias for "Routon_IC_HL_ReadCard;ansi"

参数:ls_key="~hff~hff~hff~hff~hff~hff~h00" 或 ls_key="~hff~hff~hff~hff~hff~hff"

ll_rtn=Routon_IC_HL_ReadCard(0,0,96,ls_key,ls_data)

ll_rtn=-3

失败

2、function long Routon_IC_HL_ReadCard (long SID,long BID,long KeyType, ref longlong Key,ref string data) library "sdtapi.dll" alias for "Routon_IC_HL_ReadCard;ansi"

参数:ll_key=281474976710655

ll_rtn=Routon_IC_HL_ReadCard(0,0,96,ls_key,ls_data)

ll_rtn=1成功,ls_data乱码,失败

3、function long Routon_IC_HL_ReadCard (long SID,long BID,long KeyType, ref ulong Key[],ref ulong data[]) library "sdtapi.dll" alias for "Routon_IC_HL_ReadCard;ansi"

参数:ulong ls_data[] //卡数据缓冲

ulong key[6]
key[1] =255
key[2] =255
key[3] =255
key[4] =255
key[5] =255
key[6] =255

ll_rtn=Routon_IC_HL_ReadCard(0,0,96,key[],ls_data[])

ll_rtn=-3,失败

4、function long Routon_IC_HL_ReadCard (long SID,long BID,long KeyType, ref ulong Key[],ref ulong data[]) library "sdtapi.dll" alias for "Routon_IC_HL_ReadCard;ansi"

参数:ulong ls_data[16] //卡数据缓冲

ulong key[6]
key[1] =255
key[2] =255
key[3] =255
key[4] =255
key[5] =255
key[6] =255

ll_rtn=Routon_IC_HL_ReadCard(0,0,96,key[],ls_data[])

ll_rtn=-3,失败

5、function long Routon_IC_HL_ReadCard (long SID,long BID,long KeyType, ref longlong Key,ref ulong data[]) library "sdtapi.dll" alias for "Routon_IC_HL_ReadCard;ansi"

参数:ulong ls_data[] //卡数据缓冲

ll_key=281474976710655

ll_rtn=Routon_IC_HL_ReadCard(0,0,96,ll_key,ls_data[])

ll_rtn=1,ls_data[]只有ls_data[1],失败

6、function long Routon_IC_HL_ReadCard (long SID,long BID,long KeyType, ref longlong Key,ref ulong data[16]) library "sdtapi.dll" alias for "Routon_IC_HL_ReadCard;ansi"

参数:ulong ls_data[16] //卡数据缓冲

ll_key=281474976710655

ll_rtn=Routon_IC_HL_ReadCard(0,0,96,ll_key,ls_data[])

ll_rtn=1,成功。

pb调用精伦电子sdtapi.dll读卡函数的心得相关推荐

  1. pb调用c语言dll,PB调用C#编写的Dll类库

    在c# 中编写com组件,供PB调用实例 前言:c#中写的dll直接是不能被pb调用的,只有写成com组件才可以调用,所以用c#写dll时要注意. c#中新建类库 类库类型为通用类库,项目名为AddC ...

  2. C#调用VC的DLL的接口函数参数类型转换一览表

    handle---------IntPtr hwnd-----------IntPtr char *----------string int * -----------ref int int & ...

  3. 如何查看exe或dll调用了什么dll

    [转载]如何查看exe或dll调用了什么dll呢 已有 19410 次阅读 2014-4-17 21:08|系统分类:科研笔记|文章来源:转载 Dependency Walker使用说明 在Windo ...

  4. java调用sdtapi.dll读取身份证设备信息的一次记录

    前端时间写项目写到了排队项目,需要用到身份证读取功能,但是市面找了很久发现读取身份证的基本没有java版本的,不是c#就是c++等,定下心来,决定自己写一个java读取身份证信息的工具类,技术没有难度 ...

  5. 10.4.4 使用ctypes调用kernel32.dll中的函数

    10.4.4 使用ctypes调用kernel32.dll中的函数 2007-10-17 14:41 孙广磊 人民邮电出版社 字号:T | T 综合评级: 想读(5)  在读(0)  已读(6)   ...

  6. PB调用DLL的常见问题及处理方法

    PB调用DLL的常见问题及处理方法 首先,为方便描述,先假设有一个DLL文件,名称为 test.dll,里面有个函数叫test. 第一类:通用型标准DLL 1.调用约定问题.Windows系统的标准D ...

  7. Java调用海康HCUsbSDK制卡刷卡读卡

    根据HCUsbSDK接口文档和JAVADEMO开发的一个发卡.读卡.刷卡的程序 淘宝买的空白UID卡,卡里需要存入员工工号和卡编号,在web后台来操作制卡.刷卡 简单记录下,方便以后开发相似的功能可以 ...

  8. web调用IC卡读卡器开发第三章--高频卡读卡号

    高频卡介绍 读取ISO14443A卡号 读取ISO14443B卡号 ISO15693标签的寻卡操作 目前的高频智能卡分为3种,分别为ISO14443A, ISO14443B和ISO15693协议的,这 ...

  9. C#调用C++的DLL函数另一则(delegate) z

    使用DLLImport进行导入函数的事. C#调用C++的函数其实不止这一种方法, 还有一种方法是用delegate申明函数委托进行调用,这种方法略显麻烦,但是可以进行回调并应用指针. 在C#中,首先 ...

最新文章

  1. 也许,这是东半球最叼的Java内存模型
  2. matlab参数数目不足lorenz,求指导,MATLAB程序,老是提示这个“未定义与 'double' 类型的输入参数相对应的函数 'genfisl'。”错误,...
  3. 廖雪峰 python_40岁老男人从0开始学python实录(第1天)
  4. python中turtle画酷炫图案-酷炫的动态可视化交互大屏,用Excel就能做!
  5. python能做游戏吗-python能开发游戏吗
  6. ThinkPHP的访问模式分为四种模式
  7. Java架构经验总结
  8. CCF CSP 201403-1 相反数(C++)
  9. 前端学习(2480):接口文档使用2
  10. mysql slowlog中querytime分析_技术分享 | Slow Query Log 使用详解
  11. windows media player 9_openmeetings(开源视频会议系统)的详细安装步骤 (windows版)
  12. 汇编画图题:存储器扩展(重要)
  13. java sftp_JAVA 实现SFTP服务器功能
  14. 阿里巴巴:如何从优秀员工,晋升为合格管理者?
  15. 021.4 IO流——字节、字符桥梁(编码解码)
  16. Oracle_用户管理
  17. MYSQL 索引 主键 外键
  18. 微信公众号选择什么服务器好,微信开发选择订阅号还是服务号好?
  19. callable的使用方法详解
  20. 国内有哪些做得好的企业协同办公软件?这6款你知道吗?

热门文章

  1. 语音教学软件推荐,数字语音教室
  2. CSS Html 导入其它字体
  3. Excel vba开发 合并单元格拆分自动填充功能、在每一条数据后面插入空白行、将地理坐标的经纬度转换成度等功能
  4. 什么是嵌入式软件工程师?需具备哪些能力?
  5. 单片机c语言 王东锋,基于51单片机的输液报警系统设计
  6. 小学二年级上学期计算机教案,二年级信息技术教案
  7. c#+sql语言开发的小区物业管理系统,基于C#环境下的物业管理系统.doc
  8. web端使用腾讯地图
  9. u盘不小心格式化了怎么办?用u盘数据恢复软件
  10. 华为最新鸿蒙消息,华为鸿蒙系统最新消息,华为鸿蒙系统2021