如何使用Mono和C#在Mac OS上禁用ACR122U蜂鸣器?

时间:2014-06-24 12:01:11

标签: macos mono nfc smartcard pcsc

原谅我可能没有使用正确的术语,因为我是新手。我已经包装了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); 

参数具有以下值:

  • card = 0x1201a(通过调用SCardConnect创建)
  • controlCode = 0x42000DAC(0x42000000 | 3500)但如上所述 尝试了其他几个值
  • data = byte [] {0xFF,0x00,0x52,0x00,0x00}
  • responseBuffer = byte [100]

为了消除controlCode的可能无效值,我还尝试使用SCardTransmit(使用带有SCardConnect的SCARD_PROTOCOL_RAW),但这导致-2146435050(SCARD_E_NOT_TRANSACTED)

更新2

在Raspberry PI上尝试了相同的代码(通过libpcsclite.so),它运行正常。我真的想让它在OS X上运行,但是......

1 个答案:

答案 0 :(得分:0)

我刚刚发现,至少有一些控制命令只有在存在卡时才会起作用。

尝试使用存在的卡片运行代码。

这目前适用于我的设置,即Raspberry Pi和ACS ACR1252U。