原谅我可能没有使用正确的术语,因为我是新手。我已经包装了PCSC API,现在应用程序检测卡(使用SCardGetStatusChange)没有任何问题。
现在我希望能够做一些像关闭蜂鸣器一样简单的事情。据我所知,我首先需要使用ShareMode.SCARD_SHARE_DIRECT调用SCardConnect。这个电话回复确定。之后我使用SCardControl发送以下字节: FF 00 52 00 00 (如http://www.acs.com.hk/download-manual/419/API-ACR122U-2.02.pdf)第6.7节所述
但是,此调用将返回-2146435064。 我正在使用0x42000001作为SCardControl的第二个参数。我已经尝试了其他几个“有根据的猜测”,但都有相同的结果。
有没有人得到这个工作?
更新
无论我尝试什么,SCardControl都会继续返回-2146435064(SCARD_E_INSUFFICIENT_BUFFER)。正在进行的调用定义如下:
WinSCard.SCardControl (card, controlCode, ref data[0], data.Length, ref responseBuffer[0], responseBuffer.Length, ref responseLength);
参数具有以下值:
为了消除controlCode的可能无效值,我还尝试使用SCardTransmit(使用带有SCardConnect的SCARD_PROTOCOL_RAW),但这导致-2146435050(SCARD_E_NOT_TRANSACTED)
更新2
在Raspberry PI上尝试了相同的代码(通过libpcsclite.so),它运行正常。我真的想让它在OS X上运行,但是......
答案 0 :(得分:0)
我刚刚发现,至少有一些控制命令只有在存在卡时才会起作用。
尝试使用存在的卡片运行代码。
这目前适用于我的设置,即Raspberry Pi和ACS ACR1252U。