[英]How to fix "GetStatus Write RFID_API_UNKNOWN_ERROR data(x)- Field can Only Take Word values" Android RFID 8500 Zebra
我正在嘗試開發和應用程序來讀取和寫入 RF 標簽。 閱讀是完美的,但我有寫作的問題。 特別是錯誤“GetStatus Write RFID_API_UNKNOWN_ERROR data(x)- Field can Only Take Word values”
我已經嘗試通過獲取 .apk 並對其進行解碼來對 Zebra RFID API Mobile 進行逆向工程,但代碼被混淆了,我無法破譯為什么該應用程序的 Write 有效而我的無效。
我在第 185 頁的https://www.ptsmobile.com/rfd8500/rfd8500-rfid-developer-guide.pdf中看到了錯誤,但我不知道是什么原因造成的。
我已經嘗試將 writeData 強制更改為 Hex,在我意識到 API 自己執行此操作之前,我也嘗試更改 writeData 的長度,但它只是得到一個空值。 我迷路了。
public boolean WriteTag(String sourceEPC, long Password, MEMORY_BANK memory_bank, String targetData, int offset) {
Log.d(TAG, "WriteTag " + targetData);
try {
TagData tagData = null;
String tagId = sourceEPC;
TagAccess tagAccess = new TagAccess();
tagAccess.getClass();
TagAccess.WriteAccessParams writeAccessParams = tagAccess.new WriteAccessParams();
String writeData = targetData; //write data in string
writeAccessParams.setAccessPassword(Password);
writeAccessParams.setMemoryBank(MEMORY_BANK.MEMORY_BANK_USER);
writeAccessParams.setOffset(offset); // start writing from word offset 0
writeAccessParams.setWriteData(writeData);
// set retries in case of partial write happens
writeAccessParams.setWriteRetries(3);
// data length in words
System.out.println("length: " + writeData.length()/4);
System.out.println("length: " + writeData.length());
writeAccessParams.setWriteDataLength(writeData.length()/4);
// 5th parameter bPrefilter flag is true which means API will apply pre filter internally
// 6th parameter should be true in case of changing EPC ID it self i.e. source and target both is EPC
boolean useTIDfilter = memory_bank == MEMORY_BANK.MEMORY_BANK_EPC;
reader.Actions.TagAccess.writeWait(tagId, writeAccessParams, null, tagData, true, useTIDfilter);
} catch (InvalidUsageException e) {
System.out.println("INVALID USAGE EXCEPTION: " + e.getInfo());
e.printStackTrace();
return false;
} catch (OperationFailureException e) {
//System.out.println("OPERATION FAILURE EXCEPTION");
System.out.println("OPERATION FAILURE EXCEPTION: " + e.getResults().toString());
e.printStackTrace();
return false;
}
return true;
}
和
它只是不斷給我“GetStatus Write RFID_API_UNKNOWN_ERROR data(x)- Field can Only Take Word values”,我不知道為什么會這樣,也不知道什么是“Word value”,我已經搜索過了. 這也都在“OperationFailureException”之下。 任何幫助將不勝感激,因為這種事情幾乎沒有在線資源。
即使這個問題有點老了,據我所知,我也遇到了同樣的問題,這應該是答案。
您的目標數據“8426017056458”長度為 13,在writeAccessParams.setWriteDataLength(writeData.length()/4)
你用四個來分開它。 現在,如果您嘗試寫入目標數據,則它比確定的WriteDataLength
長。 這會引發錯誤。
一個“字”是 4 Hex => 16 位長。 因此,您的數據必須先填寫並將其轉換為十六進制。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.