Esta é uma biblioteca desenvolvida para ajudar a usar a placa host USB - leitor/escritor USB Flash Drive, da Hobbytronics, com o ESP32.
O conselho já possui um chip que o processo comandos enviados pelo UART, mas, para tornar as coisas menos complicadas, escrevi algumas funções, para que não precisasse me preocupar com alguns detalhes de sempre.
A página da web hobbytronics fornece algumas informações sobre o comando que podem ser úteis. Ele também tem alguns exemplos, mas para Arduino.
Em main/usb2esp_demo_main.c, temos algumas tarefas
Tarefa que pisca um LED para mostrar ESP está funcionando
Tarefa que chama de interrupção de software a cada 10ms. A ideia é interromper o UART o máximo possível
Tarefa que aguarde mensagens do USB.
Tarefa que envie comandos para USB.
Em tx_task, escrevi alguns exemplos de como usar cada funções.
Existem 5 exemplos:
Ex = 0 -> Basta mostrar ajuda, no modo terminal. É útil testar a taxa de transmissão
Ex = 1 -> Criar arquivo e escrever
Ex = 2 -> Ler arquivos
ex = 3 -> copiar, excluir e renomear arquivos
Ex = 4 -> Operações de diretórios
Ex = 5 -> Escreva 128kb String
Nota: No ex 5, escrevemos uma grande corda. Fizemos isso para mostrar que a função uart_write_bytes Feed WDT, e não precisamos nos preocupar com isso.
Todas as funções retornam o número de bytes enviados. Pode mudar no futuro para algo mais útil.
int sendData(uart_port_t UART_NUM, const char* data)
função que envia dados de uart_num . Uso interno.
int setTime(uart_port_t UART_NUM, char* time);
O USB Breakout tem relógio de tempo interno, mas não possui bateria, por isso precisamos configurá -la toda vez que o ativamos. O tempo precisa ser [hh: mm: ss] formato.
int setDate(uart_port_t UART_NUM, char* date);
O USB Breakout tem relógio de tempo interno, mas não possui bateria, por isso precisamos configurá -la toda vez que o ativamos. A data precisa ser o formato [AAAA-MM-DD].
int createFile(uart_port_t UART_NUM, char* filename);
Crie um arquivo no diretório real com o nome do nome do nome.
int appendFile(uart_port_t UART_NUM, char* filename);
Abra o arquivo no diretório real chamado FileName .
int writeOnFile(uart_port_t UART_NUM, char* s, int ssize);
Como o arquivo é aberto ou criado, escreva as strings com tamanho SSize no arquivo.
int closeFile(uart_port_t UART_NUM);
Envie um comando Control+Z, com arquivos de fecha.
int dir(uart_port_t UART_NUM, char* filename);
É semelhante ao Bash ls . Se o nome do arquivo for "", todos os arquivos serão listados. Se o nome do arquivo for "*.txt", apenas os arquivos TXT serão listados.
int fileSize(uart_port_t UART_NUM, char* filename, int mode);
Comando que contagem tamanho do arquivo. Ele pode contar o número de bytes (modo = byte) ou número de linhas (modo = linha).
int readFile(uart_port_t UART_NUM, char* filename);
Leia o arquivo inteiro com o nome do arquivo .
int readLine(uart_port_t UART_NUM, char* filename, int line);
Leia apenas a linha da linha no nome do arquivo de arquivo.
int readNextLine(uart_port_t UART_NUM, char* filename);
Depois de usar o comando readLine() , você pode usar readNextLine() para ler a próxima linha de nome do arquivo de arquivo.
int readSection(uart_port_t UART_NUM, char* filename, int start, int len);
Leia uma parte do nome do arquivo de arquivo. Esta parte começa no Byte Start and Term at Byte Start + Len .
int readNextSection(uart_port_t UART_NUM, char* filename, int len);
Depois de usar o comando readSection() , você pode usar readNextSection() para ler a próxima seção do nome do arquivo. Para exemplos: o nome do arquivo.txt é "abcdef" ReadSection (uart_num, "filename.txt", 0, 4); // uart recebe "abcd" readNextSection (uart_num, "filename.txt", 2); // uart recebe "ef"
int copyFile(uart_port_t UART_NUM, char* origin, char* destiny);
Copie o origem do arquivo para arquivar Destiny .
int delFile(uart_port_t UART_NUM, char* filename);
Exclua o nome do arquivo de arquivo.
int renameFile(uart_port_t UART_NUM, char* oldname, char* newname);
Renomeie o arquivo antigo para o newName .
int makeDir(uart_port_t UART_NUM, char* dirname);
Equivalente a Bash mk , crie um novo diretório com o nome Dirname .
int changeDir(uart_port_t UART_NUM, char* dirname);
Equivalente ao cd Bash, altere para o Dirname de diretório.
int removeDir(uart_port_t UART_NUM, char* dirname);
Remova o diretório Dirname .
int setBaud(uart_port_t UART_NUM, char* baudrate);
Altere a taxa de transmissão para Baudrate . Valores permitidos: [2400 | 4800 | 9600 | 14400 | 19200 | 38400 | 57600 | 115200]