У меня "ошибка" с моим кодом

Следующий код выдает мне ошибку:

// RFIDunio.h is from http://learn.robotgeek.com/getting-started-guides/39-robot-kits/151-rfiduino.html
#include <RFIDuino.h> 

byte    keyTag[5] = {0,0,0,0,0};
boolean noise = false;
byte    masterTag[5] = {37,0,0,127,24};
byte    tagData[5];
byte    tagDatas[5];
boolean verifyKey = false;
boolean mastaKey = false;

void setup()
{
  Serial.begin(9600);
  Serial.println("Welcome to my system!");
}

RFIDuino myRFIDuino(1.2);

void loop()
{
  if(myRFIDunio.scanForTag(tagData == true)
  {
    verifyKey = myRFIDunio.compareTagData(tagData, keyTag);
    mastaKey = myRFIDunio.compareTagData(tagData, masterTag);
    if(verifyKey == true)
    {
      digitalWrite(myRFIDunio.led2,HIGH);
      if(noise == true)
      {
        myRFIDunio.successSound();
      }
      Serial.println("Correct Key!" + " UID = " + tagData[5]);
      delay(250);
      digitalWrite(myRFIDunio.led2,LOW);
    }
    else if(mastaKey == true)
    {
      Serial.println("Programming mode activated!");
      delay(500);
      Serial.println("Please scan a card.");
      myRFIDunio.scanForTag(tagDatas == true)
      delay(1000);
      tagDatas[5] = tagData[5];
      Serial.println("Card has been programmed!");
    }
    else
    {
      digitalWrite(myRFIDuno.led1,HIGH);
      if(noise == true)
         {
            myRFIDuino.errorSound();        
         }
      Serial.println("Wrong! " + "UID = " + tagData[5]);
      delay(250);
      digitalWrite(myRFIDunio.led1,LOW);
    }
  }

Ошибка заключается в следующем:

C:\Program Files (x86)\Arduino\hardware\tools\avr\bin\avr-g++ -c -g -Os -Wall -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -MMD -DUSB_VID=null -DUSB_PID=null -DARDUINO=106 -IC:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\variants\standard -IC:\Users\*****\Documents\Arduino\libraries\RFIDuino C:\Users\*****\AppData\Local\Temp\build6101268048586666869.tmp\sketch_jul24a.cpp -o C:\Users\*****\AppData\Local\Temp\build6101268048586666869.tmp\sketch_jul24a.cpp.o 
sketch_jul24a.ino: In function 'void loop()':
sketch_jul24a:20: error: 'myRFIDunio' was not declared in this scope
sketch_jul24a:20: error: ISO C++ forbids comparison between pointer and integer
sketch_jul24a:21: error: expected `)' before '{' token
sketch_jul24a:55: error: expected statement at end of input
sketch_jul24a:55: error: expected `}' at end of input

, 👍-2

Обсуждение

Вы вообще читали ошибки?! Это точно говорит вам, что не так. ошибка: "myRFIDunio" не было объявлено " - потому что вы написали его неправильно. На самом деле, вам удалось написать это тремя разными способами в своем коде: "миРФИДуино"; " миРФИДунио; миРФИДуно. Читайте, читайте и читайте снова., @CharlieHanson


2 ответа


0

C++ чувствителен к орфографии; идентификаторы должны быть написаны одинаково каждый раз, когда они используются.

,

0
if(myRFIDunio.scanForTag(tagData == true)

Я думаю, что у вас там не хватает кронштейна.

if(myRFIDunio.scanForTag(tagData) == true)

Также я думаю, что вы неправильно написали миРФИДуино. ni <-> в<->

if(myRFIDuino.scanForTag(tagData) == true)

И вам нужно } в конце вашей программы.

Кроме того, вы не можете складывать строки вместе, как это делается в ваших серийных отпечатках. Разбейте их на несколько отпечатков:

Serial.print("Correct Key!  UID = ");
Serial.println(tagData[5]);

У вас также есть другие биты, которые вообще не имеют смысла, такие как:

myRFIDuino.scanForTag(tagDatas == true)

Еще одна вещь - эта библиотека никогда не будет работать в Linux или в MAC OS/X, где в файловой системе включена чувствительность к регистру. Файл .cpp содержит файл с неправильным именем .h.

,

myRFIDunio.scanForTag(tagDatas == true) предназначен для получения информации о карте, чтобы вы могли ее запрограммировать, я нахожусь в Windows. Я изменю серийные отпечатки. http://pastebin.com/RMrE8aD0, @I an Oxy Moron

Эта строка-тарабарщина, если только вы не хотите передать логическое значение функции scanForTag, которая указывает, является ли tagDatas истинным, чего не может быть, поскольку это массив. Почему " = = истинно` даже там?!, @Majenko

Я просто пытаюсь это понять. Есть ли тогда какой-нибудь способ получить данные тега. и поместите его в байт., @I an Oxy Moron

Я понятия не имею. Я не знаю, что такое "данные тегов", только то, что в вашей программе есть синтаксические ошибки, которые я определил. Я не знаю, что должна делать программа - и даже что такое "RFIDuino" или что она делает., @Majenko

Данные тегов-это то, что содержат rfid-метки, все они имеют уникальные идентификаторы. Это их читает. Я могу показать тебе библиотеку, если хочешь., @I an Oxy Moron

Я видел библиотеку. Я даже отправил ему запрос на вывод, чтобы исправить их ошибку в капитализации. Я никогда не видел RFID-метку, у которой был бы только один байт для идентификатора. Если вам нужна помощь в разработке того, как использовать библиотеку, посмотрите на примеры. Сначала исправьте синтаксические ошибки, как я вам уже говорил., @Majenko

@IanOxyMoron: Если у вас есть дополнительные вопросы, то вам будет лучше всего открыть дополнительные вопросы., @Ignacio Vazquez-Abrams