ACR1222L和Ruby智能卡宝石

时间:2014-05-15 15:57:37

标签: ruby rubygems nfc smartcard smartcard-reader

我试图与ACR1222L一起使用我在github上找到的this ruby script。 该脚本是针对较旧的ACR122U而制作的,但在我的研究中,我发现它们都应该非常相似。

我的问题是在尝试运行脚本时,我收到此错误:

C:\Users\Emil\Desktop>driver.rb
Calibration Time!

Place and leave a tag on the device
C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/smartcard-0.5.5/lib/smartcard/pcsc/conte
xt.rb:112:in `wait_for_status_change':  (0x100000006) (Smartcard::PCSC::Exception)
        from C:/Users/Emil/Desktop/driver.rb:24:in `<main>'

可能是&#34;智能卡&#34;脚本使用的gem不支持ACR1222L,或者我只是遗漏了什么?

希望有人可以提供帮助!

1 个答案:

答案 0 :(得分:1)

您获得的Smartcard::PCSC::Exception错误代码(0x100000006)转换为Windows API错误代码INVALID_HANDLE_EXCEPTION(0x00000006)。这通常表示API调用中使用的上下文句柄无效。使用智能卡gem,PS / SC上下文(SCardEstablishContext)通过Smartcard::PCSC::Context的初始化程序建立。此操作似乎是成功的,否则您将在第13行获得例外。INVALID_HANDLE_EXCEPTION的来源似乎是SCardGetStatusChange(由context.wait_for_status_change调用)。

使用INVALID_HANDLE_EXCEPTION调用失败的可能原因可能是句柄格式不匹配,例如由32位/ 64位不匹配引起的。因此,我假设智能卡gem仅设计为32位(而您的路径表明您使用的是64位版本的Ruby)。