0

我有一个包含 13 个页面的标签,每个页面有 4 个块,标签总共有 52 个块。由于我尝试使用 ISO 15693 命令登录标签,添加,保存或保护里面的数据,我想使用“获取多块状态保护”,看看标签的块是如何受到保护的(有4种保护状态类型)。结果检查该函数输出一个字符串以显示该命令是否可以正确使用(“_0”为假或“_1”为真)。当我预先选择要保护的页面并使用“获取多个块状态保护”进行检查时,它确实会在输出中显示该块具有哪种保护。但它总是给出“_0”而不是“_1”

我添加了命令信息的屏幕截图以及需要哪些参数:
[1]:https ://i.stack.imgur.com/oJ76e.png

但是我在函数中找不到错误..

对于每一个帮助或提示,我都会很高兴!非常感谢提前

void TAG_MSP_GET_PAGE (uint8_t ui8ReqFlag, uint8_t ui8_getPage)
{   uint8_t ui8Offset = 0;

   #ifdef ENABLE_HOST
       uint8_t ui8LoopCount = 1;
       uint8_t ui8RxLength = 0;
   #endif
   g_pui8TrfBuffer[ui8Offset++] = 0x8F;                        // Reset FIFO
   g_pui8TrfBuffer[ui8Offset++] = 0x91;                        // Send with CRC
   g_pui8TrfBuffer[ui8Offset++] = 0x3D;                        // Write Continuous
   g_pui8TrfBuffer[ui8Offset++] = 0x00;                         // length
   g_pui8TrfBuffer[ui8Offset++] = 0xF0;                         // length


   if (ui8ReqFlag & 0x20)
   {
       g_pui8TrfBuffer[ui8Offset++] = 0xC0;                    // Length of packet in bytes - lower and broken nibbles of transmit byte length
   }
   else
   {
       g_pui8TrfBuffer[ui8Offset++] = 0x40;                    // Length of packet in bytes - lower and broken nibbles of transmit byte length
   }
//    if (ui8ReqFlag & 0x20)
//    {
//        g_pui8TrfBuffer[ui8Offset++] = 0xB0;                    // Length of packet in bytes - lower and broken nibbles of transmit byte length
//    }
//    else
//    {
//        g_pui8TrfBuffer[ui8Offset++] = 0x30;                    // Length of packet in bytes - lower and broken nibbles of transmit byte length
//    }


   g_pui8TrfBuffer[ui8Offset++] = ui8ReqFlag;                  // ISO15693 flags
   g_pui8TrfBuffer[ui8Offset++] = 0x2C;                        // GET COMMAND CODE
   g_pui8TrfBuffer[ui8Offset++] = 0x16;                        //IC Mfg Code

   if (ui8ReqFlag & 0x20)
   {
       g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[0];    // Tag UID
       g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[1];    // Tag UID
       g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[2];    // Tag UID
       g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[3];    // Tag UID
       g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[4];    // Tag UID
       g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[5];    // Tag UID
       g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[6];    // Tag UID
       g_pui8TrfBuffer[ui8Offset++] = g_pui8Iso15693UId[7];    // Tag UID
   }

   g_pui8TrfBuffer[ui8Offset++] = ui8_getBlock;
   g_pui8TrfBuffer[ui8Offset++] = ui8_Protection_Status;

   TRF79xxA_writeRaw(&g_pui8TrfBuffer[0], ui8Offset);

   g_sTrfStatus = TRF79xxA_waitRxData(5,15);                   // 5 millisecond TX timeout, 15 millisecond RX timeout

   if (g_sTrfStatus == RX_COMPLETE)                            // If data has been received
   {
       if (g_pui8TrfBuffer[0] == 0x00)                         // Confirm "no error" in response flags byte
       {
           #ifdef ENABLE_HOST
               UART_sendCString("START:AW_GET_PRO_PAGE_");
               UART_putByteDecimalValue(ui8_getBlock);
               UART_sendCString("_");
               UART_putByte(ui8_Protection_Status);
               UART_sendCString("_1:END");
               ui8RxLength = TRF79xxA_getRxBytesReceived();

               if (ui8ReqFlag & BIT6)
               {
                   ui8Offset = 2;
               }
               else
               {
                   ui8Offset = 1;
               }

               for (ui8LoopCount = ui8Offset; ui8LoopCount < ui8RxLength; ui8LoopCount++)
               {
                   UART_putByte(g_pui8TrfBuffer[ui8LoopCount]);
               }


           #endif

       }
       else
       {
           UART_sendCString("START:AW_GET_PRO_PAGE_");
           UART_putByteDecimalValue(ui8_getBlock);
           UART_sendCString("_");
           UART_putByte(ui8_Protection_Status);
           UART_sendCString("_0:END");
       }
   }
   else
   {
       UART_sendCString("START:AW_GET_PRO_PAGE_");
       UART_putByteDecimalValue(ui8_getBlock);
       UART_sendCString("_");
       UART_putByte(ui8_Protection_Status);
       UART_sendCString("_0:END");
   }

}
4

0 回答 0