爲RFID單片機程序添加連續多塊讀取的功能

客戶在RFID實際應用時,由於數據量較大,需要佔據多個扇區和塊,而之前我提供的接口,一次交互只能讀取一個塊;當數據量較大時,交互的時間就很長。基於這個需求,我爲RFID單片機程序添加了連續多塊讀的功能。

 

實現之前,確定傳輸的數據包還是採用之前的格式,一方面是方便,不用更改java接收部分的解析;一方面是,搞一個新的數據格式沒有必要,單片機的資源是有限的,一個數據包不能包含太多的數據。因此,即便是會多一些冗餘,這種方法依然是最有效的。

 

然後,就是參數;是用塊號爲單位,還是用扇區爲單位,還是用扇區和塊號作爲參數;本着怎麼簡單怎麼弄的原則,決定用扇區爲單位。因爲塊號範圍;S50卡的塊號範圍爲0-63,就要用8位來表示;而扇區爲0-15,用4位表示就行了。從這一點上看,以後要用更大容量的卡,這部分還要改。

 

本來還想實現塊寫,但是,單片機RAM容量是有限的,不能使用大的數據包。那就採用現有的方式不變。對於實際的應用來說,卡在第一次發行時,會寫入全部的資料,而最頻繁的使用過程,一般都是讀卡,以及,修改其中極小的一部分數據。

 

由於每個扇區的密碼都是不一樣的,在讀取連續的扇區時,可能會出現中途認證或者讀卡失敗的情況,因此,在Java端,提供了一個連續讀的接口;只有要讀取的所有的塊都讀取正確時,才認爲這一次連續讀取是成功的。

 

也想在java端提供一個連寫的接口,和黃討論了一下,沒有必要;因爲,這個寫的時間是比較長的,在調用這個方法時,阻塞時間長就不好了;讓客戶去做這並搞一個進度條,不是更好?

 

調試過程中遇到的問題:

for{}的前面那個括號忘寫了;而後面部分又剛好少了一個括號;於是,逃過了編譯器的檢查;花了一個小時時間,才解決;花這麼長時間的主要原因是調試工具,因爲簡單,懶得找人去飛線了。

 

發佈了145 篇原創文章 · 獲贊 4 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章