Я новичок в Xamarin и Android. У меня есть тег NFC, в частности ST M24LR64E, с данными по нему. Я вижу блоки данных с помощью приложения ST в Google Play. В моем приложении Xamarin я не могу отправить сообщение тегу, не получая исключение TagLostException. Я могу запросить идентификатор тега без проблем, но, пытаясь прочитать один блок данных, я получаю исключение. Любое направление было бы признательным.NFC-V «Tag Lost» исключение с тегом Xamarin и ST M24LR
byte[] response = new byte[] { 0x0A };
byte[] cmd = new byte[]
{
(byte) 0x26,
(byte) 0x01,
0x00
};
response = nfcv.Transceive(cmd);
byte[] single = new byte[]
{
(byte) 0x40, // FLAGS
(byte) 0x20, // READ_SINGLE_BLOCK
0, 0, 0, 0, 0, 0, 0, 0,
(byte) (0 & 0x0ff)
};
Array.Copy(id, 0, single, 2, 8);
response = nfcv.Transceive(single);
Transceive()
Первый нормально, и я вижу 10 байт возвращается. Как только я попытаюсь прочитать блок данных, я получаю исключение TagLostException.
Вы, кажется, скопировали команду READ_SINGLE_BLOCK из моего ответа (см. [Здесь] (http://stackoverflow.com/a/38783006/2425802)). К сожалению, байт байта, используемый в этом ответе, был неправильным. Вы должны использовать 0x20 (вместо 0x40), чтобы указать адресную версию. Я предполагаю, что 'id' содержит идентификатор UID, полученный из' tag.GetId() '(или' nfcv.GetTag(). GetId() '). –
Также Android уже выполняет запрос INVENTORY, поэтому нет необходимости переиздавать его. Вы можете получить всю информацию, полученную Android через запрос инвентаризации от объекта 'NfcV'. –
Спасибо @MichaelRoland - но изменение флага на 0x20 все еще вызывает исключение тега. – AndySousa