Не отображать повторный вывод данных на последовательный монитор Arduino - PullRequest
0 голосов
/ 05 июля 2018

В этом коде я беру данные TID (20 байт по 160 битов) в виде массива в соответствии с документацией sparkfun (изготовление) и кодом обнаружения RFID-меток и работает правильно, получая выходные данные RFID-меток.

Теперь мне просто нужно ваше руководство, чтобы я мог перестать отображать идентификатор RFID-метки, который уже отображается на последовательном мониторе Arduino. Что я должен сделать!

Код Arduino:

/*Reading multiple RFID tags, simultaneously!
TIDs are 20 bytes, 160 bits*/

#include <SoftwareSerial.h> //Used for transmitting
SoftwareSerial softSerial(2, 3); //RX, TX

#include "SparkFun_UHF_RFID_Reader.h" //Library for controlling the M6E Nano module
RFID nano; //Create instance

void setup()
{
  Serial.begin(115200);

  while (!Serial);
  Serial.println();
  Serial.println("Initializing...");

  if (setupNano(38400) == false) //Configure nano to run at 38400bps
  {
    Serial.println("Module failed to respond. Please check wiring.");
    while (1); //Freeze!
  }

  nano.setRegion(REGION_NORTHAMERICA); //Set to North America

  nano.setReadPower(1000); //10.00 dBm. 

  nano.enableDebugging(); //Turns on commands sent to and heard from RFID module
}

void loop()
{
  /*Serial.println(F("Get one tag near the reader. Press a key to read unique tag ID."));
  while (!Serial.available()); //Wait for user to send a character*/
  Serial.read(); //Throw away the user's character

  byte response;
  byte myTID[20]; //TIDs are 20 bytes
  byte tidLength = sizeof(myTID);

  //Read unique ID of tag
  response = nano.readTID(myTID, tidLength);
  if (response == RESPONSE_SUCCESS)
  {
    Serial.println("TID read!");
    Serial.print("TID: [");
    for(byte x = 0 ; x < tidLength ; x++)
    {
      if(myTID[x] < 0x10) Serial.print("0");
      Serial.print(myTID[x], HEX);
      Serial.print(" ");
    }
    Serial.println("]");
  }
  else
    Serial.println("Failed read");

}

//Gracefully handles a reader that is already configured and already reading continuously
//Because Stream does not have a .begin() we have to do this outside the library
boolean setupNano(long baudRate)
{
  nano.begin(softSerial); //Tell the library to communicate over software serial port

  softSerial.begin(baudRate); //For this test, assume module is already at our desired baud rate
  while(!softSerial); //Wait for port to open
  while(softSerial.available()) softSerial.read();
  nano.getVersion();
  if (nano.msg[0] == ERROR_WRONG_OPCODE_RESPONSE)
  {
    //This happens if the baud rate is correct but the module is doing a ccontinuous read
    nano.stopReading();

    Serial.println(F("Module continuously reading. Asking it to stop..."));

    delay(1500);
  }
  else
  {
    //The module did not respond so assume it's just been powered on and communicating at 115200bps
    softSerial.begin(115200); //Start software serial at 115200

    nano.setBaud(baudRate); //Tell the module to go to the chosen baud rate. Ignore the response msg

    softSerial.begin(baudRate); //Start the software serial port, this time at user's chosen baud rate
  }

  //Test the connection
  nano.getVersion();
  if (nano.msg[0] != ALL_GOOD) return (false); //Something is not right

  //The M6E has these settings no matter what
  nano.setTagProtocol(); //Set protocol to GEN2

  nano.setAntennaPort(); //Set TX/RX antenna ports to 1

  return (true); //We are ready to rock
}

1 Ответ

0 голосов
/ 06 июля 2018

Это то, что вы должны делать в своей прикладной программе.

Основные характеристики считывателя RFID и метки RFID должны уведомлять все метки в пределах диапазона считывания при запросе считывания.

Пожалуйста, включите в приложение следующие процедуры / функции.

  1. Данные метки, извещенные от считывателя RFID, сохраняются для каждого чтения.
  2. При следующем чтении данные тега, уведомленные на этот раз, сравниваются с ранее уведомленными данными.
  3. Данные тега, которые уже были получены, не отображаются.

Пожалуйста, определите интервал и количество раз, чтобы вести учет данных тегов и сравните их в соответствии с вашими спецификациями и требованиями.

В случае тегов, соответствующих ИСО / МЭК 18000-63, уведомление о дублировании не может быть сделано в течение определенного периода путем указания параметра, называемого флагом S, во время запроса на чтение.
Однако, поскольку подробное поведение зависит от спецификаций отдельных тегов и операционной среды, использование флага S не рекомендуется.

...