Paso 3: Preparación de la base de datos y el bosquejo del proceso de
Una de las primeras cosas que siempre hago es construir un archivo de conector de base de datos para reducir el código de la escritura en los archivos principales y debe incluirse en el directorio principal.
My Archivo de conector de base de datos SQL: db_connect.php
Este es el archivo de procesamiento es el caballo de batalla del proyecto! Hacer tres cosas en este archivo que me ayudará a visualizar lo que está sucediendo. Inicialmente veo mis datos en la ventana de dibujo (draw) y luego imprimir los datos en serie con él ha de la etiqueta antes de envíe a la base de datos MySql pero esto es sólo para la solución de problemas y pueden omitirse una vez que tengas lo funcione correctamente. Te darás cuenta que desintegración los datos en una matriz antes de enviarlo a la base de datos MySql. También dejé en el código para enviar a un archivo CSV o archivo de texto simplemente cambiando el ".txt" a extensión ".csv" y añadir la instrucción "output.print" a los elementos de la matriz. Una vez dejé el MySql funcionando correctamente ya no necesitaba crear el archivo csv o txt. Usted también notará el uso de la biblioteca de De.Bezier MySql en la que he añadido un enlace a y deben instalarse en orden para este bosquejo trabajar.
http://Bezier.de/Processing/libs/SQL/
Dibujo de procesamiento: mysql_write_1.pde archivo
Este es un fichero modificado originalmente escrito por Tom Igoe
He modificado el código para cumplir con mi solicitud.
Tom si ves esto, gracias! por su gran ejemplo.
Import processing.serial.*;
importación Java.util;
Import java.text.*;
Import de.bezier.data.sql.*;
PrintWriter salida;
FnameFormat DateFormat = nuevo SimpleDateFormat("yyMMdd_HHmm");
DateFormat timeFormat = nuevo SimpleDateFormat("hh:mm:ss");
String fileName;
Serie myPort; El puerto serie
InString cadena; Cadena de entrada de puerto serie
int lf = 10; Salto de línea ASCII
PFont fuente;
Dbconnection MySQL;
void setup() {}
Size(600,100);
println(serial.List());
myPort = serie nueva (este, Serial.list() [1], 9600);
myPort.clear();
La mesa de base de datos
Usuario de cadena = "root";
Paso de cadena = "";
Cadena = "myurov";
DbConnection = MySQL nuevo (este, "localhost", base de datos, usuario, pass);
Si (dbconnection.connect()) {}
DbConnection.Query ("aptc truncado"); borrar todos los datos de la tabla
DbConnection.Close();
}
Fecha ahora = new Date();
nombre de archivo = fnameFormat.format(now);
nombre de archivo = "lecturas";
salida = createWriter (fileName + ".txt"); Guarde el archivo en la carpeta de dibujo formato "CSV" o ".txt"
myPort.bufferUntil(lf);
}
void draw() {}
Background(0);
texto ("recibido:" + inString, 10,50);
}
void serialEvent(Serial p) {}
Delay(1000);
inString = p.readString();
TimeString de String = timeFormat.format (new Date());
output.Print(timeString);
output.Print(",");
output.println(inString);
Aquí tampoco de salida el código en un archivo o a la pantalla
Para ir al archivo añado "salida." al inicio de las declaraciones de "println"
También tomar los datos en serie y romper para arriba y crear una matriz de los datos.
println ("Mensaje recibido" + timeString + ":");
println(inString);
String lectura = (inString);
Lista de cadena [] = split (lecturas, ',');
println ("presión barométrica =" lista [0] + "inHg");
println ("temperatura =" lista [1] + "\u00B0 F");
println ("altitud =" lista [2] + "Pies");
println ("magnetómetro crudo X Axis =" + lista [3] + "");
println ("magnetómetro crudo el eje Y =" + lista [4] + "");
println ("magnetómetro crudo eje de Z =" + lista [5] + "");
println ("magnetómetro escalar X Axis =" + lista [6] + "");
println ("magnetómetro escalar el eje Y =" + lista de [7] + "");
println ("magnetómetro escalar el eje de Z =" + lista de [8] + "");
println ("magnetómetro encabezado =" + lista [9] + "");
println ("magnetómetro partida grados =" lista [10] + "\u00B0 grados");
caracteres especiales para grados "www.ascii-code.com/" u00XX = HEX / /
Nota: la última línea de las declaraciones println hará una línea de alimentación después de la variable de la lista.
println();
Usuario de cadena = "root";
Paso de cadena = "";
Base de datos de cadena = "myurov";
conectar a la base de datos del servidor "localhost"
DbConnection = MySQL nuevo (este, "localhost", base de datos, usuario, pass);
Si (dbconnection.connect()) {}
enviar datos a la base de datos
DbConnection.Execute ("Inserte en aptc (presión, temperatura, altitud, rxaxis, ryaxis, rzaxis, sxaxis, syaxis, szaxis, partida, hddegrees) valores ('" + list[0]+"','"+list[1]+"','"+list[2]+"','"+list[3]+"','"+list[4]+"','"+list[5]+"','"+list[6]+"','"+list[7]+"','"+list[8]+"','"+list[9]+"','"+list[10]+"');");
DbConnection.Close(); sin que por ello recibí un error "demasiadas conexiones" después de 4 minutos.
Hay varias formas de controlar los errores de la persistencia de la base de datos es simple.
}
}
{} void keyPressed()
output.Flush(); Escribe los datos restantes en el archivo
output.Close(); Termina el archivo
Exit(); Se detiene el programa
}