Ciao a tutti,
vi scrivo perché non riesco a trovare soluzioni in nessuna maniera per il mio progetto.
È molto semplice: ho un arduino Uno, una ethernet shield, un lettore rfid.
Ho collegato il tutto e tramite una pagina ASP.classic a cui passo il seriale delle card che vengono lette, eseguo varie operazioni su un database access.
Tutto funziona a dovere.
Il grosso problema sorge sul response che vorrei avere. Una volta letta la card la pagina sul server controlla se l'utente esiste nel database, se esiste controlla dal database se ha crediti e se ha crediti viene inserito in una tabella di prenotazione mensa.
Non riesco in nessuna maniera ad ottenere una risposta in arduino dal server per far accendere un led verde se l'inserimento va a buon fine perche l'utente ha credito. A far accendere un led rosso se l'utente non esiste o non ha credito.
C'è un modo per farlo?
Nel codice della pagina web ho dei response.write ma purtroppo non so come "importare" questi responde.write in arduino per poi far accendere i led.
Ringrazio chiunque riesca a districare questa mia insormontabile (almeno per me) difficoltà.
PS: non voglio che il led si accenda se arduino si connette correttamente al server, ma vorrei poter avere le risposte del server in una o più variabili di arduino per poi poter gestire i led.
Ottenere variabili da web
10 messaggi
• Pagina 1 di 1
0
voti
Grazie per la risposta.
Però non credo di aver capito gran che.
sotto metto il mio codice.
Inserisco nella sezione Sending_To_DB(); ?
devo mettere qualcosa del genere?
client.find("mioParametro=");
mioParametro = client.parseXXX();
o
mioParametro = client.read();
Serial.print(c);
?
scusa ma come avrai capito non sono molto esperto!
Grazie.
Però non credo di aver capito gran che.
sotto metto il mio codice.
Inserisco nella sezione Sending_To_DB(); ?
devo mettere qualcosa del genere?
client.find("mioParametro=");
mioParametro = client.parseXXX();
o
mioParametro = client.read();
Serial.print(c);
?
scusa ma come avrai capito non sono molto esperto!
Grazie.
- Codice: Seleziona tutto
#include<SPI.h>
#include<MFRC522.h>
#include<SoftwareSerial.h>
#include <Ethernet.h>
#define SS_PIN 4 //FOR RFID SS PIN BECASUSE WE ARE USING BOTH ETHERNET SHIELD AND RS-522
#define RST_PIN 9
#define No_Of_Card 3
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "www.sitosito.it"; //YOUR SERVER
IPAddress ip(192, 168, 1, 177);
EthernetClient client;
SoftwareSerial mySerial(8,9);
MFRC522 rfid(SS_PIN,RST_PIN);
MFRC522::MIFARE_Key key;
byte i;
byte id_temp[3][3];
String codice;
void setup()
{
pinMode(2, OUTPUT); //led verde
pinMode(6, OUTPUT); //buzzer
Serial.begin(9600);
mySerial.begin(9600);
SPI.begin();
rfid.PCD_Init();
for(byte i=0;i<6;i++)
{
key.keyByte[i]=0xFF;
}
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
Ethernet.begin(mac, ip);
}
delay(1000);
Serial.println("connecting...");
}
void loop()
{
codice="";
int m=0;
if(!rfid.PICC_IsNewCardPresent())
return;
if(!rfid.PICC_ReadCardSerial())
return;
for(i=0;i<4;i++)
{
id_temp[0][i]=rfid.uid.uidByte[i];
codice=codice+rfid.uid.uidByte[i];
Serial.print(rfid.uid.uidByte[i]);
Serial.print(" ");
delay(50);
}
Sending_To_DB();
// Halt PICC
rfid.PICC_HaltA();
// Stop encryption on PCD
rfid.PCD_StopCrypto1();
//Serial.println(" \nil codice è: "+codice);
}
void Sending_To_DB() //CONNECTING WITH MYSQL
{
if (client.connect(server, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.print("GET /index.asp?allow="+codice); //YOUR URL
client.print(" "); //SPACE BEFORE HTTP/1.1
client.print("HTTP/1.1");
client.println();
client.println("Host: www.sitosito.it");
client.println("Connection: close");
client.println();
client.stop();
digitalWrite(2, HIGH);//led verde
digitalWrite(6, HIGH); //buzzer
delay(50);
digitalWrite(2, LOW);
digitalWrite(6, LOW);
delay(150);
digitalWrite(2, HIGH);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(6, LOW);
delay(10);
} else {
// if you didn't get a connection to the server:
Serial.println("connection failed");
}
}
0
voti
ci sei quasi
intendo
il tuo codice inoltra p.es richiesta
a http://www.tuosito.it/controllatessera?num=0123456789 (GET o POST non importa)
tuosito.it risponde
(a parte gli header http)
credito=1.56
nel tuo codice per avere quel 1.56
1. client.find("credito=");
2. credito = client.parseFloat();
a questo punto la variabile credito conterra' 1.56
e si puo' procedere in modo analogo se anche la risposta fosse XML
intendo
il tuo codice inoltra p.es richiesta
a http://www.tuosito.it/controllatessera?num=0123456789 (GET o POST non importa)
tuosito.it risponde
(a parte gli header http)
credito=1.56
nel tuo codice per avere quel 1.56
1. client.find("credito=");
2. credito = client.parseFloat();
a questo punto la variabile credito conterra' 1.56
e si puo' procedere in modo analogo se anche la risposta fosse XML
-

biget
1.155 3 7 - CRU - Account cancellato su Richiesta utente
- Messaggi: 464
- Iscritto il: 16 dic 2016, 19:47
0
voti
grazie davvero per l'ulteriore aiuto.
Allora sono arrivato a questo punto.
Ho cercato di studiare un po' le informazioni che mi hai dato e sono arrivato a questo codice.
Ancora non funziona a dovere, non mi restituisce ancora niente.
La pagina asp fa una query al db, controlla se il codice esiste e se esiste e ha credito esegue una INSERT INTO e a seguire ho messo
Il codice arduino invece è questo.
Spero di non aver scritto cretinate.
La variabile credito l'ho dichiarata come int credito prima del void setup()
Grazie.
Allora sono arrivato a questo punto.
Ho cercato di studiare un po' le informazioni che mi hai dato e sono arrivato a questo codice.
Ancora non funziona a dovere, non mi restituisce ancora niente.
La pagina asp fa una query al db, controlla se il codice esiste e se esiste e ha credito esegue una INSERT INTO e a seguire ho messo
- Codice: Seleziona tutto
response.write("credito=1")
Il codice arduino invece è questo.
Spero di non aver scritto cretinate.
La variabile credito l'ho dichiarata come int credito prima del void setup()
- Codice: Seleziona tutto
void Sending_To_DB() //CONNECTING WITH MYSQL
{
if (client.connect(server, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.print("GET /index.asp?allow="+codice); //YOUR URL
client.print(" "); //SPACE BEFORE HTTP/1.1
client.print("HTTP/1.1");
client.println();
client.println("Host: www.sitosito.it");
if(client.find("credito=")) { // se trovo la variabile credito=
credito= client.parseInt();
Serial.print("credito: ");
Serial.print(credito);
if (credito== 1) { // se credito=1 accendo l'uscita digitale 5 e scrivo in seriale
digitalWrite(5, HIGH);
Serial.println("L'utente ha credito");
}
else { // altrimenti l'uscita digitale 5 rimane spenta
digitalWrite(5, LOW);
Serial.println("Non hai credito");
}
}
else {
Serial.println("non trovo credito");
}
client.println("Connection: close");
client.println();
client.stop();
} else {
// if you didn't get a connection to the server:
Serial.println("connessione fallita");
}
}
Grazie.
0
voti
1. void Sending_To_DB() dovrebbe ricevere codice come parametro (consigliato)
2. probabilmente cerchi il response prima ancora di averlo ricevuto
comunque segui http://www.giannifavilli.it/blog/arduino-parser/
2. probabilmente cerchi il response prima ancora di averlo ricevuto
comunque segui http://www.giannifavilli.it/blog/arduino-parser/
-

biget
1.155 3 7 - CRU - Account cancellato su Richiesta utente
- Messaggi: 464
- Iscritto il: 16 dic 2016, 19:47
0
voti
grazie egbit per la risposta!!!
L'esempio l'ho letto e pensavo di averlo compreso. ma all'atto pratico ovviamente non funziona.
cosa intedi per void Sending_To_DB() dovrebbe ricevere codice come parametro (consigliato)?
ho provato con questo codice e funziona benissimo
mentre il codice del mio progetto è questo e non funziona il find. mi restituisce sempre zero anche se il testo da cercare, per prova, è 1 e 2. (e nell'esempio di prima funziona).
in cosa sbaglio? forse a metterlo nel void Sending_To_DB() ??? però la funzione all'interno della quale avviene il response è lì...
se potete aiutarmi ve ne sarei grato.
L'esempio l'ho letto e pensavo di averlo compreso. ma all'atto pratico ovviamente non funziona.
cosa intedi per void Sending_To_DB() dovrebbe ricevere codice come parametro (consigliato)?
ho provato con questo codice e funziona benissimo
- Codice: Seleziona tutto
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "www.miosito.it"; // name address for Google (using DNS)
// Set the static IP address to use if the DHCP fails to assign
IPAddress ip(192, 168, 1, 177);
EthernetClient client;
void setup() {
Serial.begin(9600);
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// try to congifure using IP address instead of DHCP:
Ethernet.begin(mac, ip);
}
delay(1000);
Serial.println("connecting...");
// if you get a connection, report back via serial:
if (client.connect(server, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.println("GET /index.asp?allow=18955521773 HTTP/1.1");
client.println("Host: www.miosito.it");
client.println("Connection: close");
client.println();
} else {
// if you didn't get a connection to the server:
Serial.println("connection failed");
}
}
void loop() {
// if there are incoming bytes available
// from the server, read them and print them:
if (client.available()) {
char c = client.read();
client.find("inserito=");
int credito= client.parseInt();
Serial.print("inserito: ");
Serial.println (credito);
}
// if the server's disconnected, stop the client:
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
// do nothing forevermore:
while (true);
}
}
mentre il codice del mio progetto è questo e non funziona il find. mi restituisce sempre zero anche se il testo da cercare, per prova, è 1 e 2. (e nell'esempio di prima funziona).
in cosa sbaglio? forse a metterlo nel void Sending_To_DB() ??? però la funzione all'interno della quale avviene il response è lì...
se potete aiutarmi ve ne sarei grato.
- Codice: Seleziona tutto
/*
#include <Wire.h> //lcd
#include <LiquidCrystal_I2C.h> //lcd
LiquidCrystal_I2C lcd(0x3f,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display
#include<SPI.h>
#include<MFRC522.h>
#include<SoftwareSerial.h>
#include <Ethernet.h>
#define SS_PIN 4 //FOR RFID SS PIN BECASUSE WE ARE USING BOTH ETHERNET SHIELD AND RS-522
#define RST_PIN 9
#define No_Of_Card 3
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
char server[] = "www.miosito"; //YOUR SERVER
IPAddress ip(192, 168, 1, 177);
EthernetClient client;
SoftwareSerial mySerial(8,9);
MFRC522 rfid(SS_PIN,RST_PIN);
MFRC522::MIFARE_Key key;
byte i;
byte id_temp[3][3];
String codice;
void setup()
{
//LCD
lcd.init(); // initialize the lcd
lcd.init();
// Print a message to the LCD.
lcd.backlight();
/////////fine LCD
pinMode(2, OUTPUT); //led verde
pinMode(6, OUTPUT); //buzzer
Serial.begin(9600);
mySerial.begin(9600);
SPI.begin();
rfid.PCD_Init();
for(byte i=0;i<6;i++)
{
key.keyByte[i]=0xFF;
}
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
Ethernet.begin(mac, ip);
}
delay(1000);
Serial.println("connecting...");
}
void loop()
{
codice="";
int m=0;
if(!rfid.PICC_IsNewCardPresent())
return;
if(!rfid.PICC_ReadCardSerial())
return;
for(i=0;i<4;i++)
{
id_temp[0][i]=rfid.uid.uidByte[i];
codice=codice+rfid.uid.uidByte[i];
Serial.print(rfid.uid.uidByte[i]);
Serial.print(" ");
delay(50);
}
Sending_To_DB();
// Halt PICC
rfid.PICC_HaltA();
// Stop encryption on PCD
rfid.PCD_StopCrypto1();
//Serial.println(" \nil codice è: "+codice); //test
}
void Sending_To_DB() { //CONNECTING WITH MYSQL
if (client.connect(server, 80)) {
Serial.println("connected");
// Make a HTTP request:
client.println("GET /index.asp?allow="+codice); //YOUR URL
//client.print(" "); //SPACE BEFORE HTTP/1.1
client.print("HTTP/1.1");
client.println("Host: www.miosito.it");
client.println();
char c = client.read();
client.find("inserito=");
int credito= client.parseInt();
Serial.print("inserito: ");
Serial.println (credito);
Serial.print(c);
Serial.println ("credito: " +credito);
// client.println("Connection: close");
// client.println();
//
// client.stop();
lcd.backlight();
lcd.setCursor(3,0);
lcd.print(codice);
digitalWrite(2, HIGH);//led verde
digitalWrite(6, HIGH); //buzzer
delay(50);
digitalWrite(2, LOW);
digitalWrite(6, LOW);
delay(150);
digitalWrite(2, HIGH);
digitalWrite(6, HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(6, LOW);
delay(10);
} else {
// if you didn't get a connection to the server:
Serial.println("connection failed");
}
}
0
voti
piccolo up...non ne vengo proprio a capo.
il response mi dà solo un ⸮ (punto interrogativo alla rovescia)
il response mi dà solo un ⸮ (punto interrogativo alla rovescia)
0
voti
.read non ti serve e poi dimentichi quello che ho detto prima
in breve se vuoi che funzioni
connect-> connected -> find -> parse
ovvero ti colleghi, invii la richiesta aspetti la risposta ed elabori
altrimenti funzionerà per sbaglio piuttosto che perché deve
in breve se vuoi che funzioni
connect-> connected -> find -> parse
ovvero ti colleghi, invii la richiesta aspetti la risposta ed elabori
altrimenti funzionerà per sbaglio piuttosto che perché deve
-

biget
1.155 3 7 - CRU - Account cancellato su Richiesta utente
- Messaggi: 464
- Iscritto il: 16 dic 2016, 19:47
0
voti
Carissimo egbit ti devo ringraziare non solo per l'aiuto materiale che mi hai fornito, ma anche per la pazienza!
Facendo questo progetto solo per passione e gusto di provare, non sono molto preparato in materia elettronica e programmazione! Per cui è stata dura!
Ma grazie a te ci sono riuscito e la soddisfazione è tanta!!!
Se non chiedo troppo metterei tutto il codice del progetto. Così se vuoi e puoi, mi controlli se funziona tutto perché fatto bene oppure
Inoltre se mai a qualcuno potesse servire, troverebbe il codice pronto e funzionante.
Grazie ancora.
Facendo questo progetto solo per passione e gusto di provare, non sono molto preparato in materia elettronica e programmazione! Per cui è stata dura!
Ma grazie a te ci sono riuscito e la soddisfazione è tanta!!!
Se non chiedo troppo metterei tutto il codice del progetto. Così se vuoi e puoi, mi controlli se funziona tutto perché fatto bene oppure
!!!altrimenti funzionerà per sbaglio piuttosto che perché deve
Inoltre se mai a qualcuno potesse servire, troverebbe il codice pronto e funzionante.
Grazie ancora.
10 messaggi
• Pagina 1 di 1
Chi c’è in linea
Visitano il forum: Nessuno e 8 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)