CH376S - говнокод для работы с USB-флешкой на Arduino

Нет ответов
DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Короче, вот: https://github.com/Porokhnya/CH376STest

Модуль - вот такой:

Код является, во-первых, быстрым наброском говнокода. Во-вторых - это творческая переработка китайского даташита (который нихера не верен хотя бы по части временнЫх задержек), а также набросков кода, найденных в сети, и работающих через пень-колоду. Код - блокирующий, чтение из файла - блочное, поскольку эта китайская хрень почему-то иногда выдаёт не точно запрошенное кол-во байт - реализована дочитка.

Всё это дело, в целом - сырее некуда, но уже позволяет через тот же SoftwareSerial на скорости 9600 ткнуть к Arduino флешку и почитать/пописать файлы на неё. Приведённый пример скетча - для Arduino Mega, флешка цепляется на Serial1, для простоты понимания. Но, поскольку код работает с любым потомком Stream - то конструктору класса скормить можно и экземпляр SoftwareSerial.

Никаких далеко идущих претензий, дальнейшего развития, прочего - выкладываю как есть, возможно, будет полезно для старта кому-то. В идеале, да для взрослого проекта - надо переписывать всё на асинхронщину, чтобы без этих ваших delay и подобных неприятных вещей. Архитектура - наколенная, тупо не задумывался особо, так что as is.

Для простеньких проектов - можно причеплять, и читать с флешки (что я, собственно, с успехом и делал). Для очень сурьёзных - нужен асинхронный подход, как по мне.

Короче, просто оставлю это здесь. Если модеры посчитают ненужным - удаляйте, не обижусь.