Paso 5: Personalizar el Shell
Para agregar en tus propios comandos personalizados, haga lo siguiente:
1. agregar el comando a la lista de análisis
El analizador de comando será analizar la línea de comandos y darle el comando y los argumentos por separado. Los argumentos se pasan como punteros a punteros, o un array de punteros, sin embargo le gustaría trabajar con ellos. Esto se encuentra en shell.cpp. Abrir shell.cpp y encontrar el método de ExecCmd de la clase AVRShell.
Puede Agregar el comando a la memoria de programa. Si no, agregue el comando progmem.h y progmem.cpp. Puede Agregar el comando a la memoria de programa directamente mediante la macro PSTR(), pero te generan otra advertencia del tipo mencionado anteriormente. Una vez más, esto es un error trabajar con C++, pero puede conseguir alrededor de esto añadiendo el comando directamente en los archivos progmem.*, como lo he hecho. Si no te importa añadir a su uso SRAM, usted puede Agregar el comando he ilustrado con el comando "reloj".
Decir que quería añadir un nuevo comando llamado "newcmd." Ir a AVRShell::ExecCmd y encontrar un lugar conveniente para insertar el siguiente código:
Esto agregará el comando y llame al método cmdNewCmd que usted escribirá en el siguiente paso.
2. Escriba el código de comando personalizado
En el mismo archivo, agregue el código de comando personalizado. Esta es la definición del método. Todavía tienes que añadir la declaración a shell.h. A anexarla a los otros comandos. En el ejemplo anterior, el código podría ser algo como esto:
Hay varias cosas aquí. En primer lugar, "buff" es un buffer de matriz de caracteres de 40 previsto en el código de su uso. Utilizamos la versión de memoria de programa de sprintf puesto que nos estamos pasando un PSTR. Usted puede usar la versión normal si te gusta, pero asegúrese de que no pasar el formato en un PSTR. También, los argumentos están en la matriz de args. Si escribió "newcmd arg1 arg2" puede bajarse estos argumentos args [0] y args [1] subíndices. Puede pasar un máximo de argumentos MAX_ARGS, tal como se define en el código. No dude en cambiar ese valor cuando usted vuelva a compilar si necesita muchos más argumentos para pasarse a la vez.
El WriteLine y WriteRAM son funciones globales que devuelven los métodos de la UART del mismo nombre. El 2 º argumento a esta función es implícita. Si nada pasa, el símbolo se escribirán luego. Si yo pase un 0 como el 2 º argumento, un mensaje no se escribirán. Esto es útil cuando desea escribir varias cadenas separadas a la salida antes de que el símbolo se devuelve al usuario.
3. tiene el shell ejecuta el código de comando
Ya han dicho el ejecutor de shell para ejecutar el método cmdNewCmd al configurar el nuevo comando, pero añadir al fichero shell.h que se entiende por el objeto shell. Solo añadir a continuación el último comando o delante el primer comando o en cualquier parte hay.
Y eso es todo. Recompile y subir el firmware a tu Arduino y su nuevo comando está disponible desde el shell en el sistema.