URGENTE errore ethernet shield+sql

Ragazzi scusate il titolo ma sto facendo un progetto per l'esame di stato e mi trovo abbastanza indietro rispetto ciò che voglio fare, questo errore mi sta bloccando da giorni e non riesco a trovare soluzione

  This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: "Arduino Uno"
sketch_may28b.ino: In function 'boolean isAuthorized(char*)':
sketch_may28b:93: error: 'class Connector' has no member named 'get_columns'
sketch_may28b:94: error: 'row_values' was not declared in this scope
sketch_may28b:94: error: 'row' was not declared in this scope
sketch_may28b:96: error: 'class Connector' has no member named 'get_next_row'
sketch_may28b:98: error: 'class Connector' has no member named 'free_row_buffer'
sketch_may28b:102: error: 'class Connector' has no member named 'free_columns_buffer'

Per favore se avete soluzione aiutatemi! Grazie mille a tutti.

Ecco il codice.

/*
Questo programma permette di collegarsi ad un DB MySQL per verificare se il codice della tessera magnetica è corretto
PINOUT:
  
RC522 MODULE    Uno/Nano    
SDA             D10
SCK             D13
MOSI            D11
MISO            D12
IRQ             N/A
GND             GND
RST             D9
3.3V            3.3V
Autore Giacomo Bellazzi
Versione 1.0
*/
#include "SPI.h"
#include "Ethernet.h"
#include "sha1.h"
#include "mysql.h"
#include "RFID.h"
/* Vengono definiti PIN del RFID reader*/
#define SDA_DIO 10  // 53 per Mega
#define RESET_DIO 9
#define delayRead 1000 // Time of delay 
#define LEDGREEN 13
#define LEDRED 12
  
/* Viene creata una istanza della RFID libreria */
RFID RC522(SDA_DIO, RESET_DIO); 
byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress server_addr(192, 168, 0, 2);
Connector my_conn;
char user[] = "username";
char password[] = "password";
char QUERY_POP[50] = "Select * From Auth.Codes as AK Where AK.Code='%s'";
char query[65];
  
void setup() {
 Ethernet.begin(mac_addr);
 Serial.begin(9600);
 /* Abilita SPI*/
 SPI.begin(); 
 /* Viene inizilizzato RFID reader */
 RC522.init();
 pinMode(13,OUTPUT);
 while (!Serial);
 delay(1000);
 Serial.println("Connecting...");
 if (my_conn.mysql_connect(server_addr, 3306, user, password)){
Serial.println("Connected!");
 } else {
 Serial.println("Connection failed.");
 }
}
void loop() {
   /* Temporary loop counter */
  byte i;
  // Se viene letta una tessera
  if (RC522.isCard())
  {
    // Viene letto il suo codice 
    RC522.readCardSerial();
    String codiceLetto ="";
    Serial.println("Codice delle tessera letto:");
  
    // Viene caricato il codice della tessera, all'interno di una Stringa
    for(i = 0; i <= 4; i++)
    {
      codiceLetto+= String (RC522.serNum[i],HEX);
      codiceLetto.toUpperCase();
    }
    char charBuf[12];
    codiceLetto.toCharArray(charBuf, 12); 
    Serial.println(codiceLetto);
    if(isAuthorized(charBuf)){
      Serial.println("Tessera autorizzata");
      accendiLed(LEDGREEN);
    }else{
      Serial.println("Tessera non autorizzata");
      accendiLed(LEDRED);
    }
  delay(delayRead);  
  }
 }
  
// Controlla se un codice è autorizzato
boolean isAuthorized(char code[]){
   
sprintf(query, QUERY_POP,code);
  
my_conn.cmd_query(query);
my_conn.get_columns();
row_values *row = NULL;
 int number = 0;
 while (row = my_conn.get_next_row()) {
number++;
 my_conn.free_row_buffer();
   
 }
   
 my_conn.free_columns_buffer();
 if(number==0){
   return false;
 }else{
  return true; 
 }
}
 
// Questa funzione permette di accendere un LED per un determinato periodo
void accendiLed(int ledPin){
  digitalWrite(ledPin,HIGH);
  delay(delayRead);
  digitalWrite(ledPin,LOW);
}

1) dacci i link alle librerie che usi 2) i pin

define LEDGREEN 13

define LEDRED 12

define SDA_DIO 10

sono usati dalla scheda ethernet nella inerfaccia SPI; non puoi usarli per altre cose. 3) nella while while (row = my_conn.get_next_row()) { non fai un confronto ma un assegnazione che é sempre vera.

Ciao Uwe

https://launchpad.net/mysql-arduino

PS:ho provato a cambiare le versioni di arduino, dall'ultima alla 1.0.6 e 1.0.5

Grazie mille per la risposta!

Aspetto risposte urgente..

GiovaT18: Aspetto risposte urgente..

... guarda, se continui con questi "URGENTE" ... otterrai solo l'effetto contrario.

Qui tutti dedicano [u]il loro tempo libero, volontariamente, ad aiutare[/u] ... quindi, il termine "urgente" NON esiste !!!

Se hai tutta questa URGENZA, paghi un consulente e ti fai fare una consulenza privata dove puoi pretendere tutta l'urgenza che ti serve.

Alla prossima URGENZA chiudo il therad.

Guglielmo

gpb01:
… guarda, se continui con questi “URGENTE” … otterrai solo l’effetto contrario.

Qui tutti dedicano il loro tempo libero, volontariamente, ad aiutare … quindi, il termine “urgente” NON esiste !!!

Se hai tutta questa URGENZA, paghi un consulente e ti fai fare una consulenza privata dove puoi pretendere tutta l’urgenza che ti serve.

Alla prossima URGENZA chiudo il therad.

Guglielmo

Non era mia intenzione “offendere” nessuno… Chiedevo soltanto aiuto dato il tempo ristretto e se magari qualcuno avesse avuto lo stesso mio problema come ha risolto.

Analizzare staticamente il codice e capire cosa non va è un lavoro ambizioso... Qualcosa può emergere per esperienza ma non puoi chiedere che ti venga fatto.... anche perchè mica tutti hanno un mysql attaccato ad arduino attaccato ad un lettore pronto sottomano per fare le prove... oltretutto per un esame di Stato: a te piacerebbe che l'ingeniere che ha fatto il calcoli del cemento di casa tua avesse trovato la soluzione al suo esame di stato su internet? Io no.

Per il programma: divide et impera. Ovverosia devi dividere il programma in parti e poi unirle per capire cosa c'è che non va. Ovverosia in ulteriori altre parole prima devi far andare la scheda ethernet, poi aggiungi la classe mysql e provi il collegamento, poi fai un programma che parla con il lettore o quel che è e poi prendi tutti i mattoncini e li metti assieme. Ad esempio... che ip viene assegnato all'arduino che stai programmando? perchè vedo che assegni la "carne morta" come mac ma non setti un ip... per quel che vedo potrebbe non essere in grado di comunicare con il server mysql perchè magari ha un ip del piffero.

Comunque: l'errore è a livello ancora di compilazione, non trova il metodo/funzione... class Connector' has no member named 'get_columns nella classe mysql c'è? Maiuscole? minuscole? se si come sono messi i parametri?

qsecofr: a te piacerebbe che l'ingeniere che ha fatto il calcoli del cemento di casa tua avesse trovato la soluzione al suo esame di stato su internet?

Purtroppo in Italia si vede pure di peggio. :)

qsecofr: Analizzare staticamente il codice e capire cosa non va è un lavoro ambizioso... Qualcosa può emergere per esperienza ma non puoi chiedere che ti venga fatto.... anche perchè mica tutti hanno un mysql attaccato ad arduino attaccato ad un lettore pronto sottomano per fare le prove... oltretutto per un esame di Stato: a te piacerebbe che l'ingeniere che ha fatto il calcoli del cemento di casa tua avesse trovato la soluzione al suo esame di stato su internet? Io no.

Per il programma: divide et impera. Ovverosia devi dividere il programma in parti e poi unirle per capire cosa c'è che non va. Ovverosia in ulteriori altre parole prima devi far andare la scheda ethernet, poi aggiungi la classe mysql e provi il collegamento, poi fai un programma che parla con il lettore o quel che è e poi prendi tutti i mattoncini e li metti assieme. Ad esempio... che ip viene assegnato all'arduino che stai programmando? perchè vedo che assegni la "carne morta" come mac ma non setti un ip... per quel che vedo potrebbe non essere in grado di comunicare con il server mysql perchè magari ha un ip del piffero.

Comunque: l'errore è a livello ancora di compilazione, non trova il metodo/funzione... class Connector' has no member named 'get_columns nella classe mysql c'è? Maiuscole? minuscole? se si come sono messi i parametri?

Non è un compito a cui sto cercando di "copiare" è un progetto che ho intenzione di portare all'orale in cui ho trovato un problema per la quale mi scervello da giorni e che non mi fa andare avanti.. nella classe mysql c'è..

class Connector
{
  public:
    Connector();
    boolean mysql_connect(IPAddress server, int port, char *user, char *password);
    void disconnect();
    boolean cmd_query(const char *query);
    boolean cmd_query_P(const char *query);
    int is_connected () { return client.connected(); }
    const char *version() { return VERSION_STR; }
#if defined WITH_SELECT
    column_names *get_columns();
    row_values *get_next_row();
    void free_columns_buffer();
    void free_row_buffer();
    void show_results();
    bool clear_ok_packet();
#endif
  private:
    byte *buffer;
    char *server_version;
    byte seed[20];
    int packet_len;
#if defined WITH_SELECT
    column_names columns;
    boolean columns_read;
    int num_cols;
    row_values row;
#endif

Grazie per la risposta

Risolto, grazie a tutti

:o :confused: Si va be… risolto grazie a tutti: netiquette vorrebbe che si indicasse almeno per sommi capi cosa era e si chiudesse l’argomento riportando nel titolo del thread la scritta [risolto].
Questo perchè così chi cerca una soluzione dall’esperienza passata sa che in questo thread c’è una soluzione e chi vuole offrirsi volontario nella risoluzione non perde tempo a leggere di un argomento risolto.

GiovaT18:
Non era mia intenzione “offendere” nessuno… Chiedevo soltanto aiuto dato il tempo ristretto e se magari qualcuno avesse avuto lo stesso mio problema come ha risolto.

Non offendi nessuno ma metti sotto pressione e stressi.
Non sono cose simpatiche che aiutano a pensare a una risposta per risolverti il Tuo problema.

Ciao Uwe

GiovaT18: Risolto, grazie a tutti

Se vuoi in futuro un aiuto é meglio che ci sopieghi cosa é la soluzione del Tuo problema. Ciao Uwe