Esta es una biblioteca que se desarrolla para ayudar a usar el tablero de host USB: lector/escritor de la unidad flash USB, de Hobbytronics, con ESP32.
El tablero ya tiene un chip que procesa comandos enviados por UART, pero para hacer que las cosas sean menos complicadas, escribí algunas funciones, por lo que no tendría que preocuparme por algunos detalles en cada tiempo.
La página web de HobbyTronics proporciona algunas información sobre el comando que podría ser útil. También tiene algunos ejemplos, pero para Arduino.
En main/usb2esp_demo_main.c tenemos algunas tareas
Tarea que parpadea un LED para mostrar ESP está funcionando
Tarea que llama a la interrupción del software cada 10 ms. La ideia es interrumpir la tanto como sea posible
Tarea que esperan mensajes de USB.
Tarea que envía comandos para USB.
En TX_Task escribí algunos ejemplos de cómo usar cada funciones.
Hay 5 ejemplos:
EX = 0 -> Simplemente muestre ayuda, en modo terminal. Es útil probar la tasa de baudios
ex = 1 -> Crear archivo y escribir
ex = 2 -> leer archivos
ex = 3 -> copiar, eliminar y cambiar el nombre de los archivos
Ej = 4 -> Operaciones de directorios
ex = 5 -> escribir una cadena de 128 kb
Nota: En ex 5, escribimos una gran cadena. Hicimos esto para mostrar que la función uart_write_bytes FEED WDT, y no tenemos que preocuparnos por esto.
Todas las funciones devuelven el número de bytes enviados. Puede cambiar en el futuro por algo más útil.
int sendData(uart_port_t UART_NUM, const char* data)
función que envía datos por uart_num . Uso interno.
int setTime(uart_port_t UART_NUM, char* time);
La ruptura USB tiene un reloj de tiempo interno, pero no tiene batería, por lo que necesitamos configurarla cada vez que lo encendamos. El tiempo necesita ser el formato [HH: MM: SS].
int setDate(uart_port_t UART_NUM, char* date);
La ruptura USB tiene un reloj de tiempo interno, pero no tiene batería, por lo que necesitamos configurarla cada vez que lo encendamos. La fecha debe ser el formato [aaa yyy-mm-dd].
int createFile(uart_port_t UART_NUM, char* filename);
Cree un archivo en el directorio real con el nombre de nombre de nombre.
int appendFile(uart_port_t UART_NUM, char* filename);
Abra el archivo en el directorio real llamado nombre de archivo .
int writeOnFile(uart_port_t UART_NUM, char* s, int ssize);
Dado que el archivo se abre o se crea, escriba las cadenas S con el tamaño SSize en el archivo.
int closeFile(uart_port_t UART_NUM);
Envíe un comando Control+Z, con archivos Closs.
int dir(uart_port_t UART_NUM, char* filename);
Es similar a Bash ls . Si el nombre de archivo es "", todos los archivos se enumeran. Si el nombre de archivo es "*.txt", solo se enumeran los archivos TXT.
int fileSize(uart_port_t UART_NUM, char* filename, int mode);
Comando que cuente el tamaño del archivo. Puede contar el número de bytes (modo = byte) o número de líneas (mode = línea).
int readFile(uart_port_t UART_NUM, char* filename);
Lea el archivo completo con el nombre de archivo .
int readLine(uart_port_t UART_NUM, char* filename, int line);
Lea solo la línea de línea en el nombre de archivo del archivo.
int readNextLine(uart_port_t UART_NUM, char* filename);
Después de usar el comando readLine() , puede usar readNextLine() para leer la siguiente línea de nombre de archivo de archivo.
int readSection(uart_port_t UART_NUM, char* filename, int start, int len);
Lea una parte del archivo de archivo del archivo. Esta parte comienza en Byte Start y termina en Byte Start + Len .
int readNextSection(uart_port_t UART_NUM, char* filename, int len);
Después de usar el comando readSection() , puede usar readNextSection() para leer la siguiente sección del nombre de archivo de archivo. Para Exemple: FileName.txt es "ABCDEF" Readsection (Uart_num, "FileName.txt", 0, 4); // UART recibe "ABCD" ReadNextSection (Uart_num, "FileName.txt", 2); // UART recibe "EF"
int copyFile(uart_port_t UART_NUM, char* origin, char* destiny);
Copie el origen del archivo a File Destiny .
int delFile(uart_port_t UART_NUM, char* filename);
Eliminar el nombre de archivo de archivo.
int renameFile(uart_port_t UART_NUM, char* oldname, char* newname);
Cambie el nombre del archivo OldName a Newname .
int makeDir(uart_port_t UART_NUM, char* dirname);
Equivalente a Bash mk , cree un nuevo directorio con Name DirName .
int changeDir(uart_port_t UART_NUM, char* dirname);
Equivalente a Bash cd , cambie a Directory Dirname .
int removeDir(uart_port_t UART_NUM, char* dirname);
Eliminar el nombre de Dirname del directorio.
int setBaud(uart_port_t UART_NUM, char* baudrate);
Cambiar la tasa de baudios a Baudrate . Valores permitidos: [2400 | 4800 | 9600 | 14400 | 19200 | 38400 | 57600 | 115200]