AVRSH: Un intérprete comandos para Arduino/AVR. ¿ (5 / 6 paso)

Paso 5: Personalizar el Shell

Usted es libre de piratear el código y personalizar a sus propias necesidades, si lo desea. Si yo hubiera sabido que sería ser la liberación de este código, habría hecho una clase de intérprete de comandos separadas y la estructura de mando y simplemente iteración esta llamando a un puntero a función. Reduciría la cantidad de código, pero como está parado el shell analiza la línea de comandos llama al método shell apropiado.

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.

Artículos Relacionados

Módulo de Sensor de nivel de agua para Arduino AVR brazo STM32 STM8

Módulo de Sensor de nivel de agua para Arduino AVR brazo STM32 STM8

felicitaciones al equipo de ICStation ! Han desarrollado este maravilloso módulo de sensor de nivel de agua por grandes esfuerzos. Este módulo con tamaño pequeño y alto rentable es fácil de usar. En este artículo, utilizaremos el osciloscopio de alma
Un ATTiny13A de programación utilizando Arduino y servo intérprete

Un ATTiny13A de programación utilizando Arduino y servo intérprete

así que ahí estaba, navegando eBay, buscando algunas ofertas baratas en chips Atmel cuando me topé con un par de chips ATTiny13 por £2.50. Sólo tenía que tenerlos! Después de todo, ¿qué tan difícil puede ser?Necesitaba un pequeño chip para leer señal
Cómo intérpretes utilizan tácticas inusuales para afectar los resultados de la negociación

Cómo intérpretes utilizan tácticas inusuales para afectar los resultados de la negociación

En la historia, un montón de preocupaciones sobre la capacidad y exactitud de los intérpretes en la reproducción de las traducciones a una lengua. Incluso sentencia Tribunal juicios dependen fuertemente de tal traducción, y un montón de rumores circu
ESP8266 Wifi adiciónales para Arduino fácil

ESP8266 Wifi adiciónales para Arduino fácil

ActualizaciónEl proceso descrito aquí ya no se recomienda. Este instructivo ha sido reemplazado por ESP8266 WiFi Shield para Arduino y otros micros que proporciona una función de configuración de página web más universal.IntroducciónESP8266 es un chi
Escudo de programación de Arduino AVR

Escudo de programación de Arduino AVR

Necesita una manera rápida y fácil programa AVR virutas. ¿Sabías que puedes usar el Arduino y el IDE de Arduino? Este escudo Arduino hace el proceso mucho más fácil.Puedes:Quemar un bootloader en un reemplazo Atmega328 para su UNO.Hacer un proyecto i
Construcción de un escudo de ISP para Arduino

Construcción de un escudo de ISP para Arduino

es este Instructable para las instrucciones de construcción de nuestro nuevo AVR ISP escudo para Arduino. Su desarrollo debe mucho a Instructables y nuestra propia comunidad (sobre todo Nick!) y espero poder explicar algo de eso en el camino.Han pedi
Telnet a tu Arduino/AVR.

Telnet a tu Arduino/AVR.

El otro día yo quería comprobar en uno de mi AVR pero estaba arriba y Dios sabe era demasiado de una molestia que ir abajo a donde estaba el microcontrolador. Pero, había dos ordenadores ociosos sentados arriba junto a mis nalgas vagos, así que tenía
ArduDroid: Un Simple 2-Way Bluetooth controlador basado en Android para Arduino

ArduDroid: Un Simple 2-Way Bluetooth controlador basado en Android para Arduino

ACTUALIZACIONES:19 de noviembre. 2031: opinión: la increíble sinergia entre Arduino y Android.30 de octubre de 2013: Andruino está ahora oficialmente ARDUDROID y pronto estará disponible en Google Play. Este cambio de nombre para evitar conflicto con
Añadir dispositivo de juego USB para Arduino Leonardo/Micro

Añadir dispositivo de juego USB para Arduino Leonardo/Micro

Nota importante: Este artículo es para IDE de Arduino versión 1.6.5 (o inferior). Para agregar un dispositivo de juego USB a un Arduino Leonardo o Micro mediante Arduino IDE versión 1.6.6 (o superior) ver el Instructable siguiente: Arduino Leonardo M
Intérprete de código de G de CNC mediante procesamiento

Intérprete de código de G de CNC mediante procesamiento

Hola chicos, hace años estoy tratando de hacer mi propio router CNC por lo que puedo hacer PCB fácil.Lo que estoy tratando de hacer es un intérprete de código de G que envía señales a una placa arduino. Así que la placa arduino puede controlar un sim
Interconexión de circuitos electrónicos para Arduinos

Interconexión de circuitos electrónicos para Arduinos

interconexión de circuitos electrónicos para ArduinoEn este instructable utilizo un ejemplo de interfaz un Arduino a un transmisor-receptor de ARINC 429 para demostrar el proceso general de interconexión un Arduino a circuitos electrónicos para poder
Juego protector del RGB LED para arduino

Juego protector del RGB LED para arduino

me preguntaba por qué no hay un montón de juegos hecho por arduino, quiero decir que encontré una página de ellos, pero no fue tht muchos. Así que he decidido que debo tratar de hacer uno de mi propia!Para jugar este juego, usted tiene que emparejar
Joystick de RF para Arduino

Joystick de RF para Arduino

Se trata de un Instructable muy simple que te ayudarán a aprender a controlar de forma inalámbrica un segundo Arduino y los componentes conectados a él. Esto podría utilizarse para el control de motores en un coche, servos en un brazo robótico o prop
Herramientas de procesamiento para Arduino

Herramientas de procesamiento para Arduino

Hay muchas maneras de controlar su Arduino. Muchas muchas muchas maneras. Estos pueden ser a través de otro Arduino, botones, potenciómetros, R/C y más. Una forma genial es a través de la computadora. También hay un montón de maneras de lograr esto.