นี่คือห้องสมุดที่พัฒนาขึ้นเพื่อช่วยโดยใช้บอร์ดโฮสต์ USB - USB Flash Drive Reader/Writer โดย Hobbytronics พร้อม ESP32
บอร์ดมีชิปที่คำสั่งกระบวนการที่ส่งโดย UART แต่เพื่อให้สิ่งต่าง ๆ ซับซ้อนน้อยลงฉันเขียนฟังก์ชั่นบางอย่างดังนั้นฉันไม่ต้องกังวลเกี่ยวกับรายละเอียดบางอย่าง Evertime
หน้าเว็บ Hobbytronics ให้ข้อมูลบางอย่างเกี่ยวกับคำสั่งที่อาจเป็นประโยชน์ นอกจากนี้ยังมีตัวอย่างบางส่วน แต่สำหรับ Arduino
ใน main/usb2esp_demo_main.c เรามีงานบางอย่าง
งานที่กระพริบ LED เพื่อแสดง ESP กำลังทำงาน
งานที่การเรียกซอฟต์แวร์หยุดชะงักทุก ๆ 10ms IDEIA คือการขัดจังหวะ UART ให้มากที่สุด
งานที่รอข้อความจาก USB
งานที่ส่งคำสั่งสำหรับ USB
ใน tx_task ฉันเขียนตัวอย่างของวิธีการใช้แต่ละฟังก์ชั่น
มี 5 ตัวอย่าง:
Ex = 0 -> เพียงแสดงความช่วยเหลือในโหมดเทอร์มินัล มีประโยชน์ในการทดสอบอัตราการรับส่งข้อมูล
Ex = 1 -> สร้างไฟล์และเขียน
Ex = 2 -> อ่านไฟล์
ex = 3 -> คัดลอกลบและเปลี่ยนชื่อไฟล์
Ex = 4 -> การดำเนินการไดเรกทอรี
Ex = 5 -> เขียนสตริง 128KB
หมายเหตุ: ใน Ex 5 เราเขียนสตริงขนาดใหญ่ เราทำสิ่งนี้เพื่อแสดงให้เห็นว่าฟังก์ชั่น uart_write_bytes ฟีด WDT และเราไม่ต้องกังวลเกี่ยวกับเรื่องนี้
ฟังก์ชั่นทั้งหมดส่งคืนจำนวนไบต์ที่ส่ง มันสามารถเปลี่ยนแปลงได้ในอนาคตสำหรับสิ่งที่มีประโยชน์มากขึ้น
int sendData(uart_port_t UART_NUM, const char* data)
ฟังก์ชั่นที่ส่ง ข้อมูล โดย UART_NUM การใช้งานภายใน
int setTime(uart_port_t UART_NUM, char* time);
USB Breakout มีนาฬิกาเวลาภายใน แต่ไม่มีแบตเตอรี่ดังนั้นเราจึงต้องตั้งค่าทุกครั้งที่เราเปิด เวลา ต้องเป็นรูปแบบ [HH: MM: SS]
int setDate(uart_port_t UART_NUM, char* date);
USB Breakout มีนาฬิกาเวลาภายใน แต่ไม่มีแบตเตอรี่ดังนั้นเราจึงต้องตั้งค่าทุกครั้งที่เราเปิด วันที่ต้องเป็นรูปแบบ [yyyy-mm-dd]
int createFile(uart_port_t UART_NUM, char* filename);
สร้างไฟล์ในไดเรกทอรีจริงด้วยชื่อ ไฟล์ ชื่อ
int appendFile(uart_port_t UART_NUM, char* filename);
เปิดไฟล์ในไดเรกทอรีจริงชื่อ FileName
int writeOnFile(uart_port_t UART_NUM, char* s, int ssize);
เนื่องจากไฟล์ถูกเปิดหรือสร้างให้เขียน สตริง ด้วยขนาด ssize ในไฟล์
int closeFile(uart_port_t UART_NUM);
ส่งคำสั่ง control+z พร้อมปิดไฟล์
int dir(uart_port_t UART_NUM, char* filename);
มันคล้ายกับ Bash ls หาก ชื่อไฟล์ คือ "" ไฟล์ทั้งหมดจะอยู่ในรายการ หาก ชื่อไฟล์ คือ "*.txt" จะมีการแสดงรายการไฟล์ TXT เท่านั้น
int fileSize(uart_port_t UART_NUM, char* filename, int mode);
คำสั่งที่นับขนาดไฟล์ สามารถนับจำนวนไบต์ (โหมด = ไบต์) หรือจำนวนบรรทัด (โหมด = บรรทัด)
int readFile(uart_port_t UART_NUM, char* filename);
อ่านไฟล์ทั้งหมดด้วย ชื่อไฟล์
int readLine(uart_port_t UART_NUM, char* filename, int line);
อ่านเฉพาะ บรรทัด บรรทัดใน ชื่อไฟล์ ไฟล์
int readNextLine(uart_port_t UART_NUM, char* filename);
หลังจากใช้คำสั่ง readLine() คุณสามารถใช้ readNextLine() เพื่ออ่าน ชื่อไฟล์ ไฟล์บรรทัดถัดไป
int readSection(uart_port_t UART_NUM, char* filename, int start, int len);
อ่านชื่อไฟล์ ไฟล์ ส่วนนี้เริ่มต้นที่ BYTE เริ่มต้น และสิ้นสุดที่ BYTE Start + Len
int readNextSection(uart_port_t UART_NUM, char* filename, int len);
หลังจากใช้คำสั่ง readSection() คุณสามารถใช้ readNextSection() เพื่ออ่านส่วนถัดไปของ ชื่อไฟล์ ไฟล์ สำหรับตัวอย่าง: filename.txt คือการอ่าน "abcdef" (uart_num, "filename.txt", 0, 4); // UART ได้รับ "abcd" readnextsection (uart_num, "filename.txt", 2); // uart ได้รับ "ef"
int copyFile(uart_port_t UART_NUM, char* origin, char* destiny);
คัดลอกไฟล์ ต้นกำเนิด ไปยัง File Destiny
int delFile(uart_port_t UART_NUM, char* filename);
ลบ ชื่อไฟล์ ไฟล์
int renameFile(uart_port_t UART_NUM, char* oldname, char* newname);
เปลี่ยนชื่อไฟล์ oldName เป็น newName
int makeDir(uart_port_t UART_NUM, char* dirname);
เทียบเท่ากับ Bash mk สร้างไดเรกทอรีใหม่ด้วยชื่อ Dirname
int changeDir(uart_port_t UART_NUM, char* dirname);
เทียบเท่ากับ Bash cd เปลี่ยนเป็นไดเรกทอรี Dirname
int removeDir(uart_port_t UART_NUM, char* dirname);
ลบไดเรกทอรี dirname
int setBaud(uart_port_t UART_NUM, char* baudrate);
เปลี่ยนอัตราการรับส่งข้อมูลเป็น baudrate ค่าที่อนุญาต: [2400 | 4800 | 9600 | 14400 | 19200 | 38400 | 57600 | 115200]