Я пытаюсь разработать и приложение для чтения и записи в RF-теги.Чтение безупречно, но у меня проблемы с письмом.В частности, ошибка «GetStatus Write RFID_API_UNKNOWN_ERROR data (x) - Поле может принимать только значения Word»
Я попытался выполнить обратный инжиниринг Zebra RFID API Mobile, получив .apk и расшифровав его, но код запутани я не могу расшифровать, почему запись этого приложения работает, а моя - нет.
Я вижу ошибку в https://www.ptsmobile.com/rfd8500/rfd8500-rfid-developer-guide.pdf на странице 185, но я понятия не имею, что ее вызывает.
Я попытался принудительно изменить 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;
}
С
- Пароль - 00
- sourceEPC - идентификатор тега, полученный после чтения
- Банк памятибудучи MEMORY_BANK.MEMORY_BANK_USER
- целевые данные являются "8426017056458"
- смещение равно 0
Он просто продолжает давать мне "GetStatus Записать данные RFID_API_UNKNOWN_ERROR (x) - Поле можетТолько примите значения Word », и я не знаю, почему это так, и я не знаю, что такое« значение Word », и я искал его.Это все в рамках «OperationFailureException», а также.Буду признателен за любую помощь, так как в Интернете почти нет ресурсов для такого рода вещей.