Paso 13: código!
Cuando se compila un proyecto, el software es lo que une el proyecto. Usted podría tener un terminal de aspecto increíble, pero no hace nada. Es no lo que usted vino aquí a construir. Usted vino aquí para una terminal de trabajo extensible. Y eso es lo que va a hacer.
Conexión es un enlace a Github con algo de código, que tiene unos pocos comandos. No hace demasiado tanto en las formas de cálculos avanzados y predecir cuándo la próxima vez que se cae por las escaleras, pero posiblemente podría hacerlo hacerlo! Los comandos ir como sigue:
ayuda - muestra todos los comandos que se pueden hacer. Ejemplo: ayudar a
rfile directory/file.extension - salidas el contenido de un archivo a la pantalla. No rellene el directorio o directorios si desea leer un archivo en la carpeta raíz de la tarjeta SD. Ejemplo: rfile folder/test.txt
directorio lfile - muestra todos los archivos y directorios con tamaños de pantalla. Los tamaños están a la derecha del archivo y es un '/' si es un directorio. Ejemplo: lfile carpeta/another_folder
Equivalente a pulsar la tecla 'Reset' botón reset - sus escudos Arduino/cualquiera que tengan uno. Ejemplo: reset
cls - borra la pantalla, tarda 2,5 segundos para él para despejar de arriba a abajo y está listo para escribir comandos otra vez.
Nota: Para que todo funcione, usted tendrá que instalar algunas librerías. Estas bibliotecas están en la parte inferior de este paso, con mi página de Github.
Agregando comandos son tan simples como sigue:
En línea de aproximadamente 138 del Terminal.ino, hay una función llamada 'runCommand(String args)'
Esto es donde van todos sus comandos. Veamos el comando 'rfile' en la línea 154.
Debería ver algo como esto:
String tmp; String tmp2; tmp2 = args; if (args.indexOf(" ") > -1) { tmp = args.substring(args.indexOf(" ")); tmp2.replace(tmp, ""); tmp2.replace(" ", ""); // first was " -" tmp = tmp2; } else { tmp = args; } ... if (tmp == "rfile") { if(args.indexOf(" ") == 5) { String temp = args.substring(6); Tft.drawString("Opening file.", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); fileFunct("read", temp); temp = ""; } else { Tft.drawString("Try: rfile file.txt", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); } } ... else { Tft.drawString("Unknown!", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); }
Vamos a romper este hasta los huesos desnudos.
Vamos a empezar con el código al principio:
String tmp; String tmp2; tmp2 = args; if (args.indexOf(" ") > -1) { tmp = args.substring(args.indexOf(" ")); tmp2.replace(tmp, ""); tmp2.replace(" ", ""); tmp = tmp2; } else { tmp = args; }
Para empezar,
String tmp; String tmp2;
Son sólo variables de ajuste, tmp y tmp2. Éstos se restablecen cada vez que un comando se pasa a través, por lo tanto el nombre abreviados, 'temporal'.
tmp2 = args;
Hace una copia de lo que es introducido cuando se presiona la tecla ENTER, como 'args' se pasa como el núcleo de entrada.
Este pequeño pedazo de código:
if (args.indexOf(" ") > -1) {
Comprueba que el índice de carácter de espacio es más de -1, también conocido como allí es un carácter de espacio. Comandos sin argumentos no tendrá esto.
Ahora tiempo mirar esto:
tmp = args.substring(args.indexOf(" ")); tmp2.replace(tmp, ""); tmp2.replace(" ", ""); tmp = tmp2;
Esto, en el orden de las líneas, hace algo como esto:
Establecer la cadena de 'tmp' todo después e incluyendo el carácter de espacio.
A continuación, obtener la copia de la orden entera, tmp2 y quitar los caracteres del argumento, para que se queden con solo el comando principal, sin ningún argumento.
Ahora cambie ese carácter espacio molestos con nada.
A continuación, establezca el tmp de la cadena en el valor de tmp2.
Después de que el bloque pequeño de código verás:
else { tmp = args; }
Que dice, porque no hay args, establezca la variable 'tmp' en el valor de 'args' para que 'tmp' puede ser registrado.
Ahora el código está listo para comprobar qué comando es ponerlo. Ahora tiempo para el siguiente bloque de código.
if (tmp == "rfile") { if(args.indexOf(" ") == 5) { String temp = args.substring(6); Tft.drawString("Opening file.", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); fileFunct("read", temp); temp = ""; } else { Tft.drawString("Try: rfile file.txt", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); } }
El código:
if (tmp == "rfile") {
Comprueba que la cadena 'tmp' (el bloque de comando principal) es el comando 'rfile'.
Avanzando,
if(args.indexOf(" ") == 5) {
Asegura que hay un espacio en el índice de 5, que en este comando es justo después de 'rfile'. Puesto que la codificación y números comienzan en el índice de 0, este número debe ser la longitud del comando. Un ejemplo de esto sería:
r -> 0
f -> 1
-> 2
l -> 3
e -> 4
[Espacio] -> 5
String temp = args.substring(6);
Este código crea una nueva cadena, otra vez reiniciar cada vez que se ejecuta la función de comando, que es igual a un entero más que el número que utilizó en la última parte. Ej.: Si el número es 5, como utiliza, este número será e 6. Esto crea al temp de la cadena de argumentos. Ej: Si el comando, carpeta rfile, fue puesto, temp es carpeta.
Ahora, como el siguiente código no es necesario en la fabricación de sus propios comandos con otras funciones, yo brevemente se descremada sobre esto.
Tft.drawString("Opening file.", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); fileFunct("read", temp); temp = "";
En orden, línea por línea, esto es lo que hace el código:
Dibuja una cadena "Abriendo archivo." la última de X e Y valoran conjunto.
Esto establece el valor Y uso la próxima vez que algo se escribe en la carta de pantalla 1 (o 10 píxeles) hacia abajo.
El valor de X se establece en 0, así que la próxima vez que algo se escribe en la pantalla, está empezando en el borde de la pantalla.
Esta es la función principal del comando rfile. Esta es una función de tipo vacío, que lleva dos cadenas, que la primera de ellas tiene que ser "leído", y el nombre del archivo es temp, o los argumentos.
Esto sólo se restablece la temperatura, en caso de que algo raro sucede que es inesperado.
Ahora, el código está casi listo para este comando. Queda dos piezas pequeñas, que se ve así:
else { Tft.drawString("Try: rfile file.txt", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); }
Que se llama si no hay ningún carácter de espacio, o se pone en el lugar equivocado.
Esto se muestra en la pantalla, "probar: rfile archivo.txt" en rojo, entonces crea una nueva línea.
else { Tft.drawString("Unknown!", getX(), getY(), 1, RED); setY(getY() + 10); setX(0); }
Esto se llama cuando el comando es desconocido.
Esto se muestra en la pantalla "Desconocido!" en rojo, entonces crea una nueva línea.
Bueno, que es realmente cómo funcionan los comandos, pronto añadirá comentarios todo el código en Github, diciendo lo que todo lo hace.
GitHub:
https://github.com/RubbaBoy/ArduinoTerminal
Nota: se agregarán más funciones a este proyecto y actualizar cosas, entonces no te preocupes si algo no funciona correctamente, o quiere un nuevo comando.
Bibliotecas:
Biblioteca de teclado PS/2:
http://www.pjrc.com/Teensy/arduino_libraries/PS2Ke...
Seeed Studio 2.8'' TFT Touch pantalla V1.0 biblioteca:
https://github.com/Seeed-Studio/TFT_Touch_Shield_V...
Seeed Studio Ethernet Shield V2.0