pb调用精伦电子sdtapi.dll读卡函数的心得
函数原型:
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读卡函数的心得相关推荐
- pb调用c语言dll,PB调用C#编写的Dll类库
在c# 中编写com组件,供PB调用实例 前言:c#中写的dll直接是不能被pb调用的,只有写成com组件才可以调用,所以用c#写dll时要注意. c#中新建类库 类库类型为通用类库,项目名为AddC ...
- C#调用VC的DLL的接口函数参数类型转换一览表
handle---------IntPtr hwnd-----------IntPtr char *----------string int * -----------ref int int & ...
- 如何查看exe或dll调用了什么dll
[转载]如何查看exe或dll调用了什么dll呢 已有 19410 次阅读 2014-4-17 21:08|系统分类:科研笔记|文章来源:转载 Dependency Walker使用说明 在Windo ...
- java调用sdtapi.dll读取身份证设备信息的一次记录
前端时间写项目写到了排队项目,需要用到身份证读取功能,但是市面找了很久发现读取身份证的基本没有java版本的,不是c#就是c++等,定下心来,决定自己写一个java读取身份证信息的工具类,技术没有难度 ...
- 10.4.4 使用ctypes调用kernel32.dll中的函数
10.4.4 使用ctypes调用kernel32.dll中的函数 2007-10-17 14:41 孙广磊 人民邮电出版社 字号:T | T 综合评级: 想读(5) 在读(0) 已读(6) ...
- PB调用DLL的常见问题及处理方法
PB调用DLL的常见问题及处理方法 首先,为方便描述,先假设有一个DLL文件,名称为 test.dll,里面有个函数叫test. 第一类:通用型标准DLL 1.调用约定问题.Windows系统的标准D ...
- Java调用海康HCUsbSDK制卡刷卡读卡
根据HCUsbSDK接口文档和JAVADEMO开发的一个发卡.读卡.刷卡的程序 淘宝买的空白UID卡,卡里需要存入员工工号和卡编号,在web后台来操作制卡.刷卡 简单记录下,方便以后开发相似的功能可以 ...
- web调用IC卡读卡器开发第三章--高频卡读卡号
高频卡介绍 读取ISO14443A卡号 读取ISO14443B卡号 ISO15693标签的寻卡操作 目前的高频智能卡分为3种,分别为ISO14443A, ISO14443B和ISO15693协议的,这 ...
- C#调用C++的DLL函数另一则(delegate) z
使用DLLImport进行导入函数的事. C#调用C++的函数其实不止这一种方法, 还有一种方法是用delegate申明函数委托进行调用,这种方法略显麻烦,但是可以进行回调并应用指针. 在C#中,首先 ...
最新文章
- 也许,这是东半球最叼的Java内存模型
- matlab参数数目不足lorenz,求指导,MATLAB程序,老是提示这个“未定义与 'double' 类型的输入参数相对应的函数 'genfisl'。”错误,...
- 廖雪峰 python_40岁老男人从0开始学python实录(第1天)
- python中turtle画酷炫图案-酷炫的动态可视化交互大屏,用Excel就能做!
- python能做游戏吗-python能开发游戏吗
- ThinkPHP的访问模式分为四种模式
- Java架构经验总结
- CCF CSP 201403-1 相反数(C++)
- 前端学习(2480):接口文档使用2
- mysql slowlog中querytime分析_技术分享 | Slow Query Log 使用详解
- windows media player 9_openmeetings(开源视频会议系统)的详细安装步骤 (windows版)
- 汇编画图题:存储器扩展(重要)
- java sftp_JAVA 实现SFTP服务器功能
- 阿里巴巴:如何从优秀员工,晋升为合格管理者?
- 021.4 IO流——字节、字符桥梁(编码解码)
- Oracle_用户管理
- MYSQL 索引 主键 外键
- 微信公众号选择什么服务器好,微信开发选择订阅号还是服务号好?
- callable的使用方法详解
- 国内有哪些做得好的企业协同办公软件?这6款你知道吗?
热门文章
- 语音教学软件推荐,数字语音教室
- CSS Html 导入其它字体
- Excel vba开发 合并单元格拆分自动填充功能、在每一条数据后面插入空白行、将地理坐标的经纬度转换成度等功能
- 什么是嵌入式软件工程师?需具备哪些能力?
- 单片机c语言 王东锋,基于51单片机的输液报警系统设计
- 小学二年级上学期计算机教案,二年级信息技术教案
- c#+sql语言开发的小区物业管理系统,基于C#环境下的物业管理系统.doc
- web端使用腾讯地图
- u盘不小心格式化了怎么办?用u盘数据恢复软件
- 华为最新鸿蒙消息,华为鸿蒙系统最新消息,华为鸿蒙系统2021