Pregunta:
¿Cómo recibir datos de la base de datos de mi servidor a una variable en mi Arduino?
Manihatty
2014-05-06 12:23:53 UTC
view on stackexchange narkive permalink

Estoy aprendiendo a trabajar con la comunicación cliente-servidor. Puedo comunicarme con mi servidor y puedo almacenar valores en la tabla. Pero quiero recibir uno de los datos específicos de la base de datos.

Aquí quiero obtener el valor 'abc' de la columna 'Actual' para almacenarlo en una variable en mi Arduino.

A continuación se muestra el código que he hecho hasta ahora. Sería muy feliz si pudiera resolver el problema.

Aquí está la estructura de mi base de datos

  ---------------- ----------------------------------- | Dispositivo | Anterior | Siguiente | Distancia | Actual | -------------------------------------------------- - | katup123 | xyz | abc | 2.600 | abc | -------------------------------------------------- -  

Aquí está mi código PHP:

locator.php

  <? php $ con = mysqli_connect ("your_domain.com "," peter "," abc123 "," ubicar "); // Verifica la conexión si (mysqli_connect_errno ()) {echo" No se pudo conectar a MySQL: ". mysqli_connect_error ();} $ resultado = mysqli_query ($ con, "SELECCIONAR Actual DESDE ubicar DONDE Dispositivo = 'katup123'"); while ($ fila = mysqli_fetch_array ($ resultado)) {echo $ fila ['Actual']; echo "<br>"; }? > 

Aquí está mi código Arduino:

  // Incluir la biblioteca GSM # incluir <GSM.h> # definir PINNUMBER "" // Datos APN #define GPRS_APN "GPRS_APN" // reemplace su GPRS APNgpsll # defina GPRS_LOGIN "login" // reemplace con su inicio de sesión GPRS # defina GPRS_PASSWORD "contraseña" // reemplace con su contraseña GPRS // inicialice la instancia de la bibliotecaGSM gsmAccess; Cliente GSMClient; GPRS gprs; // URL, ruta & puerto (por ejemplo: arduino.cc) char server [] = "your_domain.com"; char path [] = "/locater.php";int port = 80; // El puerto 80 es el predeterminado para HTTPvoid ​​setup () {Serial.begin (9600); Serial.println ("Iniciando cliente web Arduino."); // estado de conexión booleano notConnected = true; // Iniciar escudo GSM
// Si su SIM tiene PIN, páselo como parámetro de begin () entre comillas while (notConnected) {if ((gsmAccess.begin (PINNUMBER) == GSM_READY) & (gprs.attachGPRS (GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) = = GPRS_READY)) notConnected = falso; else {Serial.println ("No conectado"); retraso (1000); }} Serial.println ("GSM inicializado"); Serial.println ("conectando ...");} void loop () {char result [20]; Serial.print ("Conectando a la base de datos del servidor"); if (client.connect (servidor, puerto)) {client.print ("GET /locator.php?"); Serial.print ("OBTENER /locator.php?"); client.println ("HTTP / 1.1"); Serial.println ("HTTP / 1.1"); client.println ("Host: www.your_domain.com"); Serial.println ("Host: www.your_domain.com"); client.println ("Usuario-Agente: Arduino"); Serial.println ("Usuario-Agente: Arduino"); client.println ("Aceptar: texto / html"); Serial.println ("Aceptar: texto / html"); client.println ("Conexión: cerrar"); Serial.println ("Conexión: cerrar"); cliente.println (); Serial.println (); Serial.println ("\ nCOMPLETO! \ N"); client.stop (); } else {Serial.println ("conexión fallida"); Serial.println ("\ n FALLÓ! \ N"); } delay (5000);}  

Aquí quiero almacenar el valor 'abc' en mi variable 'result'. No sé cómo hacerlo.

Para obtener datos de un servidor web al arduino, simplemente cree una página hph o html con el valor escrito en la página. De esa manera, puede obtener el valor del servidor web solicitando la página y luego usar el valor en su código. Como ya ha realizado el envío, simplemente cree otra página que escriba el valor de la base de datos.
Dos respuestas:
Mazaryk
2017-04-21 04:29:37 UTC
view on stackexchange narkive permalink

Después de enviar la solicitud GET, lee la respuesta para completar la variable char result [20] que declaró:

  int i = 0; .. .if (client.connect (servidor, puerto)) {client.print ("GET /locator.php?"); ... Serial.println ("\ nCOMPLETO! \ N"); // Leer la respuesta del servidor i = 0; while (cliente.available ()) {resultado [i] = cliente.read (); Serial.print (resultado [i]); i ++; } client.stop (); // desconectar}  

Este es un ejemplo, result contendrá la salida de texto de locator.php. Deberá modificar este código para aplicarlo a su caso. El código anterior no tiene comprobación de errores de ningún tipo. Además, debe realizar una verificación y realizar la llamada web solo una vez.

En locator.php debe reemplazar echo "<br / >"; con echo "\ n"; . Y por si acaso, asegúrese de que no haya espacios en blanco antes de <? , y elimine el ? > final.

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

Si tiene su Arduino en tcp / ip, su respuesta se puede encontrar en el libro de cocina Arduino de O'Reilly: Receta 15-4. Como mencionó Sourcery, debe crear una nueva página en el lado de PHP que escupe solo los datos que está buscando y luego usar un cliente web en el lado de Arduino para descargar esos datos.

Si no tiene su Arduino en la red, entonces debe pegar los datos en la línea serial. Una forma sería hornearlo en su fuente y recompilar / volver a grabar el Arduino. Un martillo más pequeño sería incorporar algo en su boceto de Arduino que pueda manejar la obtención de los datos a través de la serie USB y tener una cuña en el lado de la computadora para extraer los datos de PHP y enviarlos al Arduino. La comunicación en serie con Arduino y Processing muestra algo similar cuando está ejecutando Processing en la computadora que está pasando datos al Arduino.

el primer enlace es solo para usuarios autorizados y el segundo es un 404.
Arreglé la segunda URL.


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...