Spørsmål:
Hvordan mottar jeg data fra serverdatabasen min til en variabel i Arduino?
Manihatty
2014-05-06 12:23:53 UTC
view on stackexchange narkive permalink

Jeg lærer å jobbe med klienten - serverkommunikasjon. Jeg er i stand til å kommunisere med serveren min og kan lagre verdier i tabellen. Men jeg vil motta en av de spesifikke dataene fra databasen.

Her vil jeg få 'abc' -verdien fra 'Current' -kolonnen for å lagre i en variabel i min Arduino.

Nedenfor er koden jeg har gjort til nå. Jeg ville vært veldig glad hvis du kunne løse problemet.

Her er databasestrukturen min

  ---------------- ----------------------------------- | Enhet | Forrige | Neste | Avstand | Gjeldende | -------------------------------------------------- - | katup123 | xyz | abc | 2.600 | abc | -------------------------------------------------- -  

Her er PHP-koden min:

locator.php

  <? php $ con = mysqli_connect ("ditt_domene.com "," peter "," abc123 "," find "); // Sjekk tilkobling if (mysqli_connect_errno ()) {echo" Kunne ikke koble til MySQL: ". mysqli_connect_error ();} $ result = mysqli_query ($ con, "SELECT Current FROM find WHERE Device = 'katup123'"); while ($ row = mysqli_fetch_array ($ result)) {echo $ row ['Current']; ekko "<br>"; }? > 

Her er min Arduino-kode:

  // Inkluder GSM-biblioteket # inkluderer <GSM.h> # definere PINNUMBER "" // APN-data #define GPRS_APN "GPRS_APN" // erstatt GPRS APNgpsll # definer GPRS_LOGIN "pålogging" // erstatt med GPRS-innlogging # definer GPRS_PASSWORD "passord" // erstatt med GPRS-passord // initialiser bibliotekforekomsten GSM gsmAccess; GSMClient-klient; GPRS gprs; // URL, sti &-port (for eksempel: arduino.cc) char server [] = "your_domain.com"; char path [] = "/locater.php";int port = 80; // port 80 er standard for HTTPvoid-oppsett () {Serial.begin (9600); Serial.println ("Starter Arduino nettklient."); // tilkoblingstilstand boolsk notConnected = true; // Start GSM-skjold
// Hvis SIM-kortet ditt har PIN, send det som en parameter for start () i anførselstegn mens (notConnected) {if ((gsmAccess.begin (PINNUMBER) == GSM_READY) & (gprs.attachGPRS (GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) = = GPRS_READY)) notConnected = false; annet {Serial.println ("Ikke tilkoblet"); forsinkelse (1000); }} Serial.println ("GSM initialisert"); Serial.println ("forbinder ...");} ugyldig sløyfe () {char resultat [20]; Serial.print ("Koble til serverdatabase"); hvis (client.connect (server, port)) {client.print ("GET /locator.php?"); Serial.print ("GET /locator.php?"); client.println ("HTTP / 1.1"); Serial.println ("HTTP / 1.1"); client.println ("Vert: www.your_domain.com"); Serial.println ("Vert: www.your_domain.com"); client.println ("Brukeragent: Arduino"); Serial.println ("Brukeragent: Arduino"); client.println ("Godta: tekst / html"); Serial.println ("Godta: tekst / html"); client.println ("Tilkobling: lukk"); Serial.println ("Tilkobling: lukk"); client.println (); Serial.println (); Serial.println ("\ nKOMPLETT! \ N"); client.stop (); } annet {Serial.println ("tilkoblingen mislyktes"); Serial.println ("\ n MISLYKKET! \ N"); } forsinkelse (5000);}  

Her vil jeg lagre 'abc' -verdien til min 'resultat' -variabel. Jeg vet ikke hvordan jeg skal gjøre det.

For å få data fra en webserver til arduino, er det bare å lage en hph- eller html-side med verdien skrevet på siden. På den måten kan du få verdien fra webserveren ved å be om siden og deretter bruke verdien i koden din. Siden du allerede har sendt, er det bare å lage en side som skriver ut verdien fra DB.
To svar:
Mazaryk
2017-04-21 04:29:37 UTC
view on stackexchange narkive permalink

Etter at du har sendt GET-forespørselen, leser du svaret for å fylle char result [20] variabelen du erklærte:

  int i = 0; .. .if (client.connect (server, port)) {client.print ("GET /locator.php?"); ... Serial.println ("\ n KOMPLETT! \ N"); // Les svar fra server i = 0; mens (client.available ()) {result [i] = client.read (); Serial.print (resultat [i]); i ++; } client.stop (); // frakoble}  

Dette er et eksempel, resultat vil inneholde tekstutdata fra locator.php. Du må tilpasse denne koden for å gjelde saken din. Ovennevnte kode har ingen feilkontroll av noe slag. Du bør også utføre en sjekk og bare ringe nettet en gang.

I locator.php bør du erstatte ekko "<br / >"; med echo "\ n"; . Og sørg for at det ikke er hvite mellomrom før <? , og fjern den etterfølgende ? > .

chicks
2014-11-17 23:53:51 UTC
view on stackexchange narkive permalink

Hvis du har din Arduino på tcp / ip, finner du svaret ditt i O'Reillys Arduino Cookbook: Oppskrift 15-4. Som Sourcery nevnte, må du lage en ny side på PHP-siden som bare spytter ut dataene du leter etter, og deretter bruke en webklient på Arduino-siden for å laste ned dataene.

Hvis du ikke har Arduino på nettverket, må du stikke dataene over seriellinjen. En måte ville være å bake den inn i kilden din og kompilere / brenne Arduino på nytt. En mindre hammer ville være å bygge inn noe til Arduino-skissen din som kan håndtere å få data via USB-serie og ha et mellomlag på datamaskinsiden for å hente dataene fra PHP og sende dem til Arduino. Seriekommunikasjon med Arduino og Processing viser noe lignende der han kjører Processing på datamaskinen som overfører data til Arduino.

den første lenken er kun for autoriserte brukere, og den andre er en 404.
Jeg fikset den andre URL-en.


Denne spørsmålet ble automatisk oversatt fra engelsk.Det opprinnelige innholdet er tilgjengelig på stackexchange, som vi takker for cc by-sa 3.0-lisensen den distribueres under.
Loading...