Arduino leonardo invalid suffix "B9FD4" umgehen

OP #4394799
Lesenswert?

Halo, ich habe einen Arduino Leonardo und möchte damit per rfid meinen 
pc entsperren. Im code funktioniert auch alles außer wenn ich dann die 
kartennummer in einer if Bedingung abfrage, wie dann folgender error 
kommt:
1
invalid suffix "B9FD4" on integer constant

wie kann man den error umgehen? Ich dachte mir daß man evtl.. die 
kartennummer (B9FD4) durch eine zahlenrehnfolge (bsp: 123456) ersetzt, 
also daß wenn ich in der if Bedingung statt der richtigen kartennummer 
B9FD4 die zahlen 123456 einsetze es die zahlen 123456 zu der 
kartennummer "verlinkt".
Angehängte Dateien:
#4394870
Lesenswert?

Hallo,

ich bin kein C-Präprozessor-Spezi, ich würde aber mal vermuten, daß
#define uchar unsigned char

uchar = unsigned setzt und dann nichts mehr mit char anzufangen weiß.
Letztlich wird ja nur Text ersetzt.

Man kann auch genausogut byte statt unsgned char nehmen, das ist 8Bit 
und unsigned.
Man kann auch die Standardtypen includen und dann uint8_t nehmen.

Die ArduinoIDE ist mit Sicherheit nicht der Weisheut letzter Schluß, 
aber sie macht eigentlich durchaus was man ihr sagt. ;)

Gruß aus Berlin
Michael
Gast #4394918
Lesenswert?

Also der Teil

http://smart-prototyping.com/image/data/2_components/Arduino/100985%20Mifare%20RC522%20RFID%20Reader%20IC%20Card%20Proximity%20Module/code.txt

sollte funktionieren - es liegt also wahrscheinlich rein an Deinen 
Ergänzungen:
1
...
2
#include <MFRC522.h>
3
...
4
if(ShowCardID(uchar *id))== 0x861B9FD4){
5
     //Send the message
6
          Keyboard.press(ctrlKey);
7
    Keyboard.release(ctrlKey);
8
     Keyboard.print("0152");
9
          Keyboard.press(ctrlKey);
10
    Keyboard.release(ctrlKey);
11
   }

Ob der Einbau der Lib so ohne Initialisierung Werte liefern kann - und 
ob das dann auch alles korrekt zusammenspielt kann ich so nicht 
überblicken ...
OP #4394967
Lesenswert?

Okey, erstmal danke für die vielen schnellen antworten ;) leider 
funktioniert es immer noch nicht. Hat vielleicht jemand noch einen 
anderen Leonardo kompatiblen code mit dem man die rfid kartennummer 
auslesen und später in der if abfrage verwenden kann?
Gast #4394976
Lesenswert?

Tom F. schrieb:
> Okey, erstmal danke für die vielen schnellen antworten ;) leider
> funktioniert es immer noch nicht. Hat vielleicht jemand noch einen
> anderen Leonardo kompatiblen code mit dem man die rfid kartennummer
> auslesen und später in der if abfrage verwenden kann?

Möchtest du nicht lieber erstmal die Sprache lernen, die du da 
verwendest?

Denn das
> ShowCardID(uchar *id)
in
> if( ShowCardID(uchar *id) == 0x861b9fd4UL )
sieht mir eher wie eine Funktionssignatur aus. Das ist kein 
Funktionsaufruf.
Und wie schon gesagt, diese Funktion hat keinen Rückgabewert.

Mit einem anderen Code wirst du die selben Probleme bekommen.
Gast #4395131
Lesenswert?

Tom F. schrieb:
> Hat vielleicht jemand noch einen
> anderen Leonardo kompatiblen code mit dem man die rfid kartennummer
> auslesen und später in der if abfrage verwenden kann?

Äh, hier
1
  // str[0..3]: serial number of the card
2
    // str[4]: XOR checksum of the SN.
3
    if (status == MI_OK)
4
    {
5
        Serial.print("The card's number is: ");
6
        memcpy(serNum, str, 5);
7
        ShowCardID(serNum);
8
    
9
        // Check people associated with card ID
10
        uchar* id = serNum;
11
        if( id[0]==0x23 && id[1]==0x4B && id[2]==0x54 && id[3]==0xB6 ) {
12
            Serial.println("Hello Mary!");
13
        } else if(id[0]==0x87 && id[1]==0x05 && id[2]==0x6C && id[3]==0x55) {
14
            Serial.println("Hello Greg!");
15
        }else{
16
            Serial.println("Hello unkown guy!");
17
        }
18
    }

wird die Kartennummer "in einer IF-Abfrage" abgefragt - oder?

Dort Deine paar Keyboard-Befehle unterzubringen sollte eigentlich nicht 
schwer sein ...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren