2015-10-21 19 views
0

RFID名稱:YHY502CTG 13.56MHz的RFID的Mifare讀/寫模塊試圖將命令寫入到它後讀取RFID讀者的反應,而是得到一個空的響應

我試圖寫該命令「AA BB 02 20 22 「到RFID,作爲迴應我會得到

1) if no card is swiped == "AA BB 02 DF DD" . 
Where "AA BB" == Head of this DATA , 
02 == Length of this DATA, 
"DF" == One's complement of COMMAND, 
02⊕DF(XOR) == "DD" 

2) if there is card swipe == "AA BB 06 20 A0 8C 92 54 CC" 
where "AA BB" == Head of this DATA , 
06 == Length of this DATA, 
20 == COMMAND, 
"A0 8C 92 54" == Card Serial Number, 
06⊕20⊕A0⊕8C⊕92⊕54(XOR) == "CC". 

CODE:- 
byte[] bytesToSend = new byte[10] { 0x41, 0x41, 0x42, 0x42, 0x30, 0x32, 0x32, 0x30, 0x32, 0x32 }; 
_comport.Write(bytesToSend,0,10);// dont know whether ----correct way to write , but working properly// 
System.Threading.Thread.Sleep(1000); 
var data1 = _comport.ReadExisting();//getting an empty response 
MessageBox.Show(data1); 
+0

您可能沒有足夠長時間回覆。您可以訂閱「SerialPort.DataReceived」事件以確保您獲取數據並等待響應時間足夠長。 – KDecker

+0

嗨@KDecker,我試過寫System.Threading.Thread.Sleep(5000);在閱讀使用ReadExisting()之前,我也嘗試過var data1 =「」; (data1.Length <4) { data1 = _comport.ReadExisting(); } --- //但它進入無限循環,因爲響應是空的。 –

+0

您需要掛鉤到DataReceived事件本身並編寫適當的處理程序。就像'RFIDDataReceivded + = MySerialPortObj.DataReceived'。然後執行'RFIDDataReceived'並讀取緩衝區中現有的字節/字符串。 //如果這個處理程序沒有被調用,那麼最有可能與您的設備連接有問題。 – KDecker

回答

0

我有同樣的問題。我假設你通過串口與你的讀者通信?

嘗試安裝free serial analyzer工具,使用此工具可以查看發送的數據和接收的內容以排除編碼錯誤。

是否有任何軟件隨讀者一起提供以訪問它?對我來說,它首先幫助我通過發貨軟件連接到我的閱讀器並斷開連接,然後在通過我自己的代碼發送命令時,我收到了來自閱讀器的響應。不幸的是,我不知道爲什麼,我還在尋找更好的方法。

+0

Hello @croxy,我正在使用Docklight V2.1來查看發送和接收的數據,應用程序正常使用它。而且我也沒有爲讀者提供任何軟件。 –

+0

謝謝@croxy,它的幫助,免費的序列分析工具,實際上是顯示數據,我試圖發送。以前我使用Docklight V2.1來查看實際要進入的端口,它也在工作,但是這種特殊的RFID需要的數據實際上是由免費的串行分析工具顯示的。再次感謝.. :) –

+0

@TapanTripathi尼斯,我可以幫助:) – croxy

相關問題