2014-06-24 76 views
2

原諒我可能沒有使用正確的術語,因爲我是新手。我已經包裝了PCSC API,現在應用程序檢測到卡(使用SCardGetStatusChange)而沒有任何問題。如何在Mac OS上使用Mono和C#禁用ACR122U蜂鳴器?

現在我希望能夠做到像關閉蜂鳴器一樣簡單的事情。據我所知,我首先需要與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的第二個參數。我嘗試過其他幾項「受過教育的猜測」,但都有相同的結果。

有沒有人得到這個工作?

UPDATE

無論我怎麼努力,SCardControl不斷返回-2146435064(SCARD_E_INSUFFICIENT_BUFFER)。正在進行的呼叫被定義如下:

WinSCard.SCardControl (card, controlCode, ref data[0], data.Length, ref responseBuffer[0], responseBuffer.Length, ref responseLength); 

用具有下列值的參數:

  • 卡= 0x1201a
  • controlCode = 0x42000DAC(通過調用SCardConnect創建)(0x42000000 | 3500),但如所提到的我有 試過其他幾個值
  • 數據=字節[] {0xFF時,0×00,0×52,0x00時,0×00}
  • responseBuffer =字節[100]

在試圖消除controlCode我還試圖使用SCardTransmit(使用SCardConnect SCARD_PROTOCOL_RAW)的可能的無效值,但是這導致-2146435050(SCARD_E_NOT_TRANSACTED)

UPDATE 2

剛剛嘗試了Raspberry PI上的相同代碼(通過libpcsclite.so),它工作正常。我真的很想讓它在OS X上運行,儘管...

回答

0

我剛剛發現,至少有一些控制命令只有在存在卡時才起作用。

嘗試用存在的卡片運行您的代碼。

這是目前正在爲我的設置工作,這是一個樹莓派和ACS ACR1252U。

相關問題