Il s'agit d'un développement de bibliothèque pour aider à l'utilisation de la carte hôte USB - USB Flash Drive Reader / Writer, par Hobbytronics, avec ESP32.
La carte a déjà une puce que les commandes de processus envoyées par UART, mais pour rendre les choses moins compliquées, j'ai écrit certaines fonctions, donc je n'aurais pas à me soucier de certains détails à jamais.
La page Web Hobbytronics fournit quelques informations sur la commande qui pourraient être utiles. Il a également quelques exemples, mais pour Arduino.
Dans Main / USB2ESP_DEMO_MAIN.c, nous avons quelques tâches
Tâche qui clignote une LED à montrer ESP fonctionne
Tâche qui appelle l'interruption du logiciel toutes les 10 ms. L'ideia doit interrompre UART autant que possible
Tâche qui attend les messages de l'USB.
Tâche qui envoie des commandes pour USB.
Dans TX_TASK, j'ai écrit quelques exemples d'utilisation de chaque fonction.
Il y a 5 exemples:
ex = 0 -> Affichez simplement l'aide, en mode terminal. Il est utile de tester le taux de bauds
ex = 1 -> créer un fichier et écrire
ex = 2 -> lire des fichiers
ex = 3 -> Copier, supprimer et renommer les fichiers
Ex = 4 -> Opérations des répertoires
ex = 5 -> Écrivez une chaîne 128KB
Remarque: Dans l'ex 5, nous écrivons une grosse chaîne. Nous l'avons fait pour montrer que la fonction uart_write_bytes alimente WDT, et nous n'avons pas à nous soucier de cela.
Toutes les fonctions renvoient le nombre d'octets envoyés. Il peut changer à l'avenir pour quelque chose de plus utile.
int sendData(uart_port_t UART_NUM, const char* data)
Fonction qui envoie des données par UART_NUM . Utilisation interne.
int setTime(uart_port_t UART_NUM, char* time);
USB Breakout a une horloge interne, mais il n'a pas de batterie, nous devons donc le régler à chaque fois que nous l'allumons. Le temps doit être [HH: MM: SS].
int setDate(uart_port_t UART_NUM, char* date);
USB Breakout a une horloge interne, mais il n'a pas de batterie, nous devons donc le régler à chaque fois que nous l'allumons. La date doit être le format [yyyy-mm-dd].
int createFile(uart_port_t UART_NUM, char* filename);
Créez un fichier dans le répertoire réel avec le nom de fichier .
int appendFile(uart_port_t UART_NUM, char* filename);
Ouvrez le fichier dans le répertoire réel nommé nom de fichier .
int writeOnFile(uart_port_t UART_NUM, char* s, int ssize);
Étant donné que le fichier est ouvert ou créé, écrivez la chaîne S avec la taille de la taille dans le fichier.
int closeFile(uart_port_t UART_NUM);
Envoyez une commande Control + Z, avec les fichiers ferme.
int dir(uart_port_t UART_NUM, char* filename);
Il est similaire à Bash ls . Si le nom de fichier est "", tous les fichiers sont répertoriés. Si le nom de fichier est "* .txt", seuls les fichiers txt sont répertoriés.
int fileSize(uart_port_t UART_NUM, char* filename, int mode);
Commander qui compte la taille du fichier. Il peut compter le nombre d'octets (mode = octet) ou le nombre de lignes (mode = ligne).
int readFile(uart_port_t UART_NUM, char* filename);
Lisez l'intégralité du fichier avec le nom de fichier .
int readLine(uart_port_t UART_NUM, char* filename, int line);
Lisez uniquement la ligne de ligne dans le nom de fichier de fichier.
int readNextLine(uart_port_t UART_NUM, char* filename);
Après avoir utilisé la commande readLine() , vous pouvez utiliser readNextLine() pour lire la ligne de fichier de fichiers suivante.
int readSection(uart_port_t UART_NUM, char* filename, int start, int len);
Lisez une partie du nom de fichier de fichier. Cette pièce commence au début des octets et se termine au start de l'octet + len .
int readNextSection(uart_port_t UART_NUM, char* filename, int len);
Après avoir utilisé la Commande readSection() , vous pouvez utiliser readNextSection() pour lire la section suivante du nom de fichier de fichier. Pour Exemple: filename.txt est "ABCDEF" ReadSection (UART_NUM, "filename.txt", 0, 4); // UART reçoit "ABCD" ReadNextSection (UART_NUM, "filename.txt", 2); // UART reçoit "ef"
int copyFile(uart_port_t UART_NUM, char* origin, char* destiny);
Copiez l'origine du fichier pour fichier Destiny .
int delFile(uart_port_t UART_NUM, char* filename);
Supprimer le nom de fichier de fichier.
int renameFile(uart_port_t UART_NUM, char* oldname, char* newname);
Renommer Fichier OldName à Newname .
int makeDir(uart_port_t UART_NUM, char* dirname);
Équivalent à Bash mk , créez un nouveau répertoire avec le nom Dirname .
int changeDir(uart_port_t UART_NUM, char* dirname);
Équivalent à Bash cd , changez en répertoire Dirname .
int removeDir(uart_port_t UART_NUM, char* dirname);
Supprimez le répertoire dirname .
int setBaud(uart_port_t UART_NUM, char* baudrate);
Changer le taux de bauds en baudrate . Valeurs autorisées: [2400 | 4800 | 9600 | 14400 | 19200 | 38400 | 57600 | 115200]