精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 论坛浏览速度太慢? 教你赚取精币 - 每日签到

谋生 求职/招聘- 论坛接单- 资源出售

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

搜索
订阅<精易模块>源码若快打码 快速★准确★稳定★便宜
2017年好项目,每月多挣好多钱
██【免费网络验证】无需服务器███打码兔秒杀一切验证码██
斗鱼最便宜人气招代理QQ910222910
全国PPTP秒换IP 动态VPN仅35元/月
若快打码 快速★准确★稳定★便宜2017年好项目,每月多挣好多钱
██【易卡发卡平台】无需服务器█
█打码兔答题 速度快 极稳定█
斗鱼经济公司接口招代理910222910
★滴滴答题★8元万码★分成任加★█火眼答题-超速-极稳-高质量█
免费打码
云速打码全天50%分成★稳定★快速
██免费网络验证 收款即时到帐█
██防护██网站防360微信QQ拦截
收购一切流量☞QQ:503830000☜全自动手机APP引流脚本,日1000+出直播平台主播关注量Q:977322367
提供稳定微信支付渠道Q:3237546076
代 加 微 信 女 粉
收各种运营商量
┏------高薪招PHP有经验的来------┓
大量收上传空间说说号q:352509500
┎高价回收各类流量Q1634469555┓
高价收微信精准引流Q2258555555
┎---收各种渠道引流流量---┓
收各种棋牌引流渠道
║  长期高价收各种量:Q群量   ║
大量收上传空间说说号q:352509500
┆  承包各类引流,找软件制作者  ┆
高价收微信人头引流Q2258555555
║   大量收活人加Q群量   ║
收各种棋牌引流渠道
║  长期高价收各种量:转发量   ║
大量收上传空间说说号q:352509500
┆         百万诚聘站群优化者       ┆
正规项目收终端联系Q2258555555
║   大量收活人加Q群量   ║
收各种棋牌引流渠道
║  长期高价收各种量:转发量   ║
大量收上传空间说说号q:352509500
┆      高价收网吧,空间转发量    ┆
出男粉加微信Q群联系7785559
║   长期大量收Q好友量   ║
收安卓预装或静默安装量
┗---------收各种渠道引流量---------┛大量收上传空间说说号q:352509500
┗┈┈ 收购物各类资料,短信群发 ┈┈┛
出男粉加微信Q群联系7785559
┗----长期收空间转发量-----┛
大量出售QQ加群量Q2478829311
丫发卡 - 专注用户体验的发卡网
--百万引流/微信/QQ/营销首先--
代加各行各业微信好友
大量收购一切流量  995799457
QQ分享引流裂变源码▇日引上万▇
收网吧转发空间QQ:1513888885
收网吧转发空间QQ:1379111111
█长期高价收加Q量软件思路q917273
┏---收-微信流量--wap站 裂变量---┓高价收壮阳补肾精准男科流量 ↓ 
█代采集筛选各种Q目标号 群█
收网吧转发空间QQ:1513888885
收QQ微信新闻转发:1379111111
█长期高价收加Q量软件思路q917273
║收QQ流量,引导添加微信,量大║
高价收壮阳补肾精准男科流量 ↓ 
█各行各业各种类型流量定制█
收网吧转发空间QQ:1513888885
你有量,我有钱QQ:1379111111
█长期高价收加Q量软件思路q917273
┗--有货的请加微信:41752088谈--┛
高价收壮阳补肾精准男科流量 ↓ 
█详情请点击此处进入官网█
收网吧转发空间QQ:1513888885
0.4收活粉进群量,量大来谈Q807015
-----代加微信/QQ及群好友-----
██ CPS产品官方寻求合作 ██
支持测试联系,全网最高价
实力收购网赚粉长期合作加Q834138
王者点卷24=300 长期供货
0.4收活粉进群量,量大来谈Q807015
>单价0.8-5元/个<
██   QQ:1962499473     ██
长期合作 联系Q1762777777 
实力收购网赚粉长期合作加Q834138
█精准推广 1天百万展示 可测试█
长期收各种引流渠道,各种量
收网吧转发空间qq:709240833网吧好友加群引流项目qq:771112实力收购网赚粉长期合作加Q834138
高价收WAP量/站群量/网吧运营商量
批发零售6.7.8.9.10位太阳号出租5.6
长期收各种引流渠道,各种量
直播弹幕广告工具 QQ:2231614269
收网络订单详细联系QQ2756455090 
实力收购网赚粉长期合作加Q834138
短信接码平台 高提成 Q3404393049
██给力引流脚本日引2000+
长期收各种引流渠道,各种量
安卓APP★CPS长期稳定转化牛日付
 ██男粉,全天出,Q6826026██
实力收购网赚粉长期合作加Q834138
收微信粉 QQ推广联系QQ2286852884
★★★长期大量收微信男粉★★★
 收500人微信群加QQ2820301656
出全新男性活人加群量qq:83099971
█欧美长短效S5.HTTP.API代理ip█
手机号转wxid扫街暴粉无限制
高价收流量各种粉QQ328581005
高价大量收女粉联系QQ267804
收空间量 微信扫街软件 各种展现量
急出10万家庭静默安装量Q725010949
收加QQ群(精准粉)QQ:503635555
吃鸡项目招总代,QQ1832020204
大量出纯活人加Q群量联系Q432711
滑块码极速验证,作者一万码提40元
出微信通讯录粉/拉群Q12346717
大量出QQ随机群,QQ:892393979
█拨号VPS服务器4元/天免费测试█
收加QQ群(精准粉)QQ:1679842133
高价收流量(另流量出售可测试) 我要租此广告位
查看: 140|回复: 2
收起左侧

[易求助] 有关智能卡函数操作相关问题

[复制链接]
结帖率:63% (5/8)
发表于 2017-9-14 13:55:48 | 显示全部楼层 |阅读模式
300精币
最近没什么事,就想做一个用智能卡的会员管理系统,于是上网买了个读卡器,和几张智能卡,用来测试,acr22u比较便宜就买的它,可惜官方的开发包实在看不懂,但是发现这个支持windos的pc/sc,于是就去找智能卡函数的资料,可惜资料是英文的而且是c++的,看不懂,只能边百度翻译,边尝试理解,这个是第一步,百度翻译的是建立资源管理器句柄,我也不明白为什么这么叫,
SCardEstablishContext函数官方介绍
https://technet.microsoft.com/zh-cn/library/aa379479
  
DLL命令名返回值类型公开备 注
SCardEstablishContext长整数型 返回资源管理器上下文的句柄
DLL库文件名:
WinSCard.dll
在DLL库中对应命令名:
SCardEstablishContext
参数名类 型传址数组备 注
dwScope整数型  :SCARD_SCOPE_USER   0
pvReserved1整数型  null
pvReserved2整数型  null
phContext整数型 



上面的函数已经没问题了改写成易语言就是下面这个样子
  
子程序名返回值类型公开备 注
建立管理器整数型 
参数名类 型参考可空数组备 注
b  
c  
变量名类 型静态数组备 注
局资源管理器句柄整数型  
SCARD_S_SUCCESS整数型  
SCARD_S_SUCCESS = SCardEstablishContext ( #SCARD_SCOPE_SYSTEM, b, c, 局资源管理器句柄)
调试输出 (SCARD_S_SUCCESS)
返回 (局资源管理器句柄)


i支持库列表   支持库注释   
spec特殊功能支持库
这个已经正常因为整数型的null不知道如何表达,就就建了两个参数然后不填写,
获得资源管理器的句柄,下面会用到
第二步获取系统中读卡器的列表SCardListReaders
函数介绍https://msdn.microsoft.com/en-us/library/windows/desktop/aa379793(v=vs.85).aspx
了解这个的时候发现有两个一个SCardListReadersA一个SCardListReadersW,百度了一下才是到分别是A=ansi然后w=unicode
好像原来听说过易不支持unicode所以最后用了SCardListReadersA
  
DLL命令名返回值类型公开备 注
SCardListReaders整数型 获得系统中安装的读卡器列表
DLL库文件名:
WinSCard.dll
在DLL库中对应命令名:
SCardListReadersA
参数名类 型传址数组备 注
hContex整数型  资源管理器上下文的句柄
mszGroups文本型  mszGroups:输入类型;读卡器组名,为NULL时,表示列出所有读卡器。
mszReaders文本型 mszReaders:输出类型;系统中安装的读卡器的名字
pcchReaders整数型 pcchReaders:输入输出类型;mszReaders的长度。

到这步已经开始出现问题了,
  
子程序名返回值类型公开备 注
获得列表  
变量名类 型静态数组备 注
啊啊整数型  
SCARD_S_SUCCESS整数型  
长度整数型  
SCARD_READERSTATE文本型  
列表文本型  
调试输出 (SCardListReaders (建立管理器 (), “”, SCARD_READERSTATE, 长度))
调试输出 (“----”)
调试输出 (SCARD_READERSTATE)
调试输出 (长度)


i支持库列表   支持库注释   
spec特殊功能支持库
看函数介绍翻译SCARD_READERSTATE就应该是返回的读卡器名字,“长度”返回名字字节数,但是调试后返回SCARD_READERSTATE返回空,字节数返回14
我怕错所以把读卡器拔了又重新获取了一次,长度变为0,SCARD_READERSTATE依然是空,我就感觉这个参数错了,可能是个结构数据,但是我不知道具体什么样,也不知道成员有什么,成员是文本型还是整数型,没有读卡器名字就无法发送数据,数据结构第一次解决不了,下面的问题还是另一个数据结构搞不懂,
获取不到读卡器名字怎么办呢,我想到了一个办法,从别人已经写好的程序里获取名字,
http://bbs.eyuyan.com/read.php?tid=395095这个帖子里的dome程序,是可以操作我的读卡器的,于是直接从他这里复制读卡器名字获得“ACS ACR122 0”这个名字,下面会用到。
第三步,建立连接,获取智能卡的句柄SCardConnect
官方函数介绍https://msdn.microsoft.com/en-us/library/windows/desktop/aa379473(v=vs.85).aspx

  
DLL命令名返回值类型公开备 注
SCardConnectA长整数型建立与智能卡的连接
DLL库文件名:
WinSCard.dll
在DLL库中对应命令名:
SCardConnectA
参数名类 型传址数组备 注
hContext整数型  输入类型;ScardEstablishContext()建立的资源管理器上下文的句柄。
szReader文本型  ,输入类型;包含智能卡的读卡器名称(读卡器名称由ScardListReaders()给出)
dwShareMode整数型  ,dwShareMode:输入类型;应用程序对智能卡的操作方式,SCARD_SHARE_SHARED(多个应用共享同一个智能卡)、SCARD_SHARE_EXCLUSIVE(应用独占智能卡)、SCARD_SHARE_DIRECT(应用将智能卡作为私有用途,直接操纵智能卡,不允许其它应用访问智能卡)。
dwPreferredProtocols整数型  ,dwPreferredProtocols:输入类型;连接使用的协yi,SCARD_PROTOCOL_T0(使用T=0协yi)、SCARD_PROTOCOL_T1(使用T=1协yi)。
phCard整数型 phCard:输出类型;与智能卡连接的句柄。
PdwActiveProtocol整数型 PdwActiveProtocol:输出类型;实际使用的协yi。


易语言调用这个是为一个比较顺利的函数了,第二个参数读卡器名称,我获取不到,直接填入从别人那里获取的,
  
子程序名返回值类型公开备 注
建立连接1整数型 
变量名类 型静态数组备 注
管理器句柄整数型  
智能卡句柄整数型  
协yi整数型  
管理器句柄 = 建立管理器 ()
调试输出 (SCardConnectA (读卡器句柄, “ACS ACR122 0”, #SCARD_SHARE_SHARED, #SCARD_PROTOCOL_T1, 智能卡句柄, 协yi))
返回 (智能卡句柄)


i支持库列表   支持库注释   
spec特殊功能支持库

获得智能卡句柄,下面函数会用到
第四步,发送数据并接受返回数据SCardTransmit
官方函数介绍
https://msdn.microsoft.com/en-us/library/windows/desktop/aa379804(v=vs.85).aspx
  
DLL命令名返回值类型公开备 注
SCardTransmit整数型 向智能卡发送指令,并接受返回的数据。
DLL库文件名:
WinSCard.dll
在DLL库中对应命令名:
SCardTransmit
参数名类 型传址数组备 注
hCard整数型  ,hCard:输入类型;与智能卡连接的句柄。
pioSendPci整数型  ,pioSendPci:输入类型;指令的协yi头结构的指针,由SCARD_IO_REQUEST结构定义。后面是使用的协yi的协yi控制信息。一般使用系统定义的结构,SCARD_PCI_T0(T=0协yi)、 SCARD_PCI_T1(T=1协yi)、SCARD_PCI_RAW(原始协yi)。
pbSendBuffer文本型 ,pbSendBuffer:输入类型;要发送到智能卡的数据的指针。(
cbSendLength整数型  ,cbSendLength:输入类型;pbSendBuffer的字节数目。
pioRecvPci文本型 pioRecvPci:输入输出类型;指令协yi头结构的指针,后面是使用的协yi的协yi控制信息,如果不返回协yi控制信息,可以为NULL。
pbRecvBuffer文本型 pbRecvBuffer:输入输出类型;从智能卡返回的数据的指针。
pcbRecvLength整数型 pcbRecvLength:输入输出类型;pbRecvBuffer的大小和实际大小。


易语言调用
  
子程序名返回值类型公开备 注
_按钮1_被单击  
变量名类 型静态数组备 注
数据APDU  
数据.CLA = 到字节 (十六进制 (“ff”))
数据.ins = 到字节 (十六进制 (“00”))
数据.p1 = 到字节 (十六进制 (“40”))
数据.p2 = 到字节 (十六进制 (“06”))
数据.le = 到字节 (十六进制 (“04”))
数据.p3 = 到字节 (十六进制 (“05050801”))
' 上面数据结构自己编 的感觉不对就没有那个
智能卡发送指令 (集智能卡句柄, “FF 00 40 0F 04 00 00 00 00h”)
子程序名返回值类型公开备 注
智能卡发送指令  
参数名类 型参考可空数组备 注
智能卡句柄整数型   
APDU内容文本型   APDU = “FF 00 40 50 04 05 05 03 01h”   红灯闪烁
啊啊整数型  
变量名类 型静态数组备 注
a文本型  
b文本型  
c整数型  
调试输出 (SCardTransmit (智能卡句柄, 2, APDU内容, 取文本长度 (APDU内容) - 1, a, b, c))
' 如果返回“6”,则是智能卡句柄错误
调试输出 (a, b, c, 取文本长度 (APDU内容), 智能卡句柄)


i支持库列表   支持库注释   
spec特殊功能支持库
到这又遇到一个数据结构问题,就是第3个参数,“APDU”看翻译应该也是一个数据结构,但是我还是看不懂c++的那种翻译到易语言什么样子,。
我翻过的资料地址

这个是偶尔返回错误代码的解释,比如6句柄错误,1734,数据边界错误
http://www.cnblogs.com/braver/articles/2563157.html
函数错误代码介绍,易语言需要用计算器算一下返回的代码十进制转十六进制再到下面去找错误代码介绍,比如“-2146435068”=“0x80100004”:一个或多个参数错误
https://msdn.microsoft.com/en-us/library/windows/desktop/aa374738(v=vs.85).aspx#smart_card_return_values

以上内容主要参考这两个,但是这个是vb的,唉,易语言这方面资料太少了
http://blog.sina.com.cn/s/blog_a20257d80102uy9u.html
http://www.cnblogs.com/android-html5/archive/2010/09/01/2533989.html


现在想问问有谁研究过这方面的资料源码,能不能分享一下,或者能知道获取列表的数据结构和发送数据的数据结构在易语言里什么样子,,如果看到我上面有什么错误麻烦指出来,我好继续改。
下面是我用到的资料文件以及我暂时写的源码。









回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 帖子申请荣誉值,获得 1点 荣誉值,荣誉值可兑换终身vip用户组哦。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:63% (5/8)
 楼主| 发表于 2017-9-14 14:01:05 | 显示全部楼层
这里是资料附件 资读卡器料.zip (2.89 MB, 下载次数: 4)

您可以选择打赏方式支持他

打赏
回复

使用道具 举报

签到天数: 1 天

结帖率:100% (3/3)
发表于 2017-9-14 14:25:15 | 显示全部楼层
哇 感觉像是在看定制单

您可以选择打赏方式支持他

打赏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

关闭

精易论坛 - 有你更精彩上一条 /1 下一条

快速回复 收藏帖子 返回列表

sitemap|易语言源码|易语言教程|易语言论坛|诚聘英才|易语言模块|Archiver|手机版|联系我们|精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
揭阳精易科技有限公司申明:我公司所有的培训课程版权归精易所有,任何人以任何方式翻录、盗版、破解本站培训课程,我们必将通过法律途径解决!
公司简介:揭阳市揭东区精易科技有限公司致力于易语言教学培训/易语言学习交流社区的建设与软件开发,多年来为中小企业编写过许许多多各式软件,并把多年积累的开发经验逐步录制成视频课程供学员学习,让学员全面系统化学习易语言编程,少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 8000736861120671429,邮箱:800073686@b.qq.com
Powered by Discuz! X3.2 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125

快速回复 返回顶部 返回列表