Dies ist eine Bibliothek entwickelt, um die Verwendung des USB -Hostboards - USB Flash Drive Reader/Writer, von Hobbybylonics, mit ESP32.
Das Board hat bereits einen Chip, der von UART gesendet wird, aber um die Dinge weniger kompliziert zu machen, habe ich einige Funktionen geschrieben, daher müsste ich mir keine Gedanken über einige Details machen.
Die Hobbyltronics -Webseite bietet einige Informationen zu dem Befehl, der nützlich sein könnte. Es hat auch einige Beispiele, aber für Arduino.
In Main/USB2sp_demo_Main.c haben wir einige Aufgaben
Aufgabe, die eine LED zum Show -ESP blinkt
Aufgabe, die alle 10 ms Softwareunterbrechung aufrufen. Die Idea soll UART so weit wie möglich unterbrechen
Aufgabe, die auf Nachrichten von USB warten.
Aufgabe, die Befehle für USB senden.
In tx_task habe ich einige Beispiele für die Verwendung jeder Funktionen geschrieben.
Es gibt 5 Beispiele:
Ex = 0 -> Zeigen Sie einfach Hilfe im Terminalmodus. Es ist nützlich, den Baudrate zu testen
Ex = 1 -> Datei erstellen und schreiben
Ex = 2 -> Dateien lesen
Ex = 3 -> Dateien kopieren, löschen und umbenennen
Ex = 4 -> Verzeichnisoperationen
Ex = 5 -> 128 KB String schreiben
Hinweis: In Ex 5 schreiben wir eine große Zeichenfolge. Wir haben dies getan, um zu zeigen, dass die Funktion uart_write_bytes WDT füttert, und wir müssen uns darüber keine Sorgen machen.
Alle Funktionen geben die Anzahl der gesendeten Bytes zurück. Es kann sich in Zukunft für etwas Nützlicheres ändern.
int sendData(uart_port_t UART_NUM, const char* data)
Funktion, die Daten von uart_num senden. Interne Verwendung.
int setTime(uart_port_t UART_NUM, char* time);
USB -Breakout hat eine interne Zeituhr, aber es gibt keinen Akku, sodass wir sie jedes Mal einstellen müssen, wenn wir es einschalten. Die Zeit muss [HH: MM: SS] -Format sein.
int setDate(uart_port_t UART_NUM, char* date);
USB -Breakout hat eine interne Zeituhr, aber es gibt keinen Akku, sodass wir sie jedes Mal einstellen müssen, wenn wir es einschalten. Das Datum muss ein [jyyy-mm-dd] -Format sein.
int createFile(uart_port_t UART_NUM, char* filename);
Erstellen Sie eine Datei im tatsächlichen Verzeichnis mit dem Namen Dateiname .
int appendFile(uart_port_t UART_NUM, char* filename);
Öffnen Sie die Datei im tatsächlichen Verzeichnis mit dem Namen Dateiname .
int writeOnFile(uart_port_t UART_NUM, char* s, int ssize);
Da die Datei geöffnet oder erstellt wird, schreiben Sie die Zeichenfolge S mit Größe SSIZE in der Datei.
int closeFile(uart_port_t UART_NUM);
Senden Sie einen Kontroll+Z -Befehl mit Schließungsdateien.
int dir(uart_port_t UART_NUM, char* filename);
Es ist ähnlich wie Bash ls . Wenn der Dateiname "" ist, sind alle Dateien aufgeführt. Wenn Dateiname "*.txt" ist, sind nur TXT -Dateien aufgeführt.
int fileSize(uart_port_t UART_NUM, char* filename, int mode);
Befehl mit der Anzahl der Datei. Es kann die Anzahl der Bytes (Modus = Byte) oder die Anzahl der Zeilen (Modus = Zeile) zählen.
int readFile(uart_port_t UART_NUM, char* filename);
Lesen Sie die gesamte Datei mit Dateiname .
int readLine(uart_port_t UART_NUM, char* filename, int line);
Lesen Sie nur die Zeilenzeile im Datei -Dateinamen .
int readNextLine(uart_port_t UART_NUM, char* filename);
Nach Verwendung der readLine() können Sie readNextLine() verwenden, um die nächste Datei -Dateiname zu lesen.
int readSection(uart_port_t UART_NUM, char* filename, int start, int len);
Lesen Sie einen Teil des Datei -Dateinamens . Dieser Teil beginnt bei Byte Start und Ende bei Byte Start + Len .
int readNextSection(uart_port_t UART_NUM, char* filename, int len);
Nach der Verwendung des Befehls readSection() können Sie readNextSection() verwenden, um den nächsten Abschnitt des Datei -Dateinamens zu lesen. Für exempl: fileName.txt ist "abcdef" ReadSection (uart_num, "Dateiname.txt", 0, 4); // UART empfängt "ABCD" ReadNextSection (uart_num, "Dateiname.txt", 2); // UART erhält "EF"
int copyFile(uart_port_t UART_NUM, char* origin, char* destiny);
Kopieren Sie den Dateiursprung , um das Schicksal einzustellen.
int delFile(uart_port_t UART_NUM, char* filename);
Datei Dateiname löschen.
int renameFile(uart_port_t UART_NUM, char* oldname, char* newname);
Benennen Sie die Datei OldName in Newname um.
int makeDir(uart_port_t UART_NUM, char* dirname);
Erstellen mk ein neues Verzeichnis mit dem Namen DirName .
int changeDir(uart_port_t UART_NUM, char* dirname);
Äquivalent zu verprügeln cd , Wechseln Sie zu Verzeichnis DirName .
int removeDir(uart_port_t UART_NUM, char* dirname);
Verzeichnis DirName entfernen.
int setBaud(uart_port_t UART_NUM, char* baudrate);
Änderung der Baud -Rate in Baudrate . Zulässige Werte: [2400 | 4800 | 9600 | 14400 | 19200 | 38400 | 57600 | 115200]