2014/08/27_prog - а вот вопросов пара
Леонид Каганов: блог — 27.08.2014Друзья, нужен ваш совет!
1. Ситуация: Линукс DD-WRT на роутере ASUS, в него воткнуты несколько USB-устройств: пара звуковых карт, флешка, внешний диск и платка Ардуино. Звуковые карты и флешка ведут себя отлично. А внешний диск и Ардуино в течение суток пытаются перепрыгнуть на другое место:
lleo$ dmesg | grep ttyUSB
usb 2-2.2: FTDI USB Serial Device converter now attached to ttyUSB0
ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0
usb 2-2.2: FTDI USB Serial Device converter now attached to ttyUSB1
ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
usb 2-2.2: FTDI USB Serial Device converter now attached to ttyUSB1
lleo$ mount
/dev/discs/discb/part1 on /tmp/mnt/discb_1 type ext3 (rw,noatime,errors=continue,data=ordered)
/dev/discs/discc/part1 on /tmp/mnt/discc_1 type ext3 (rw,noatime,errors=continue,data=ordered)
/dev/discs/discd/part1 on /tmp/mnt/discd_1 type ext3 (rw,noatime,errors=continue,data=ordered)
Попытка поставить хаб с внешним питанием эффекта не дала, поэтому решение нужно программное. Системные скрипты /usr/local/sbin/post-mount и pre-mount срабатывают лишь при загрузке. Оба устройства находятся постоянно под какими-то программами (внешний диск — Самба, Апач; с Ардуины — демоны висят и ждут сигналов).
Что посоветуете? Может, какие-то симлинки прописать заранее или в каком-то конфиге автомонтирования есть опция для резервирования конкретного места для конкретного ID? Наверняка я не первый сталкиваюсь с проблемой перескакивания устройств с места на место. Есть в Линуксе (конкретно: DD-WRT) какие-то наработки на этот счет, чтобы мне не изобретать велосипед?
2. Про Ардуину. Чудовищно неудобная среда разработки — этот гребаный текстовый редактор на джаве. Не хочу вообще никаких развесистых пакетов, хочу использовать простой текстовый редактор mcedit и скриптик, который состоит из вызова консольного компилятора, если нет ошибок — консольная заливка кода в Ардуину, а затем (если будет нужно) автоматического запуска всяких собственных скриптов по обмену информацией с Ардуиной (консоль в фирменной среде разработки — еще одна адская убогость). У вас есть готовый пример подобного консольного со всеми правильными ключами для процессора 328? Также интересует пример С-кода для Ардуины с вставками на ассемблере (просто понять, как это оформляется при линковке).
Заранее спасибо за советы.
PS: А пока по традиции расскажу про хозяйство.
Ну, помидоры растут и колосятся. Правда только низкорослые сорта. Сорта грунтовые вымахали до потолка и как-то не желают плодоносить. Но «оранжевая шапочка» и «жемчужина желтая» прекрасны, уже начинают краснеть:
Иван, 3D-принтер — это щастье! Освоил рисование деталек для хозяйственных целей и прочего моделирования. Оказалось, труЪ-программеру гораздо удобнее написать скрипт, чем рисовать кисточками. Для этого вместо всяких 3DMAX существует такой пакет, как OpenSCAD — в нем рисуешь чистой математикой, как программу пишешь: «нарисовать куб», «добавить балку», «вычесть из него шар», «пересечь с конусом»... Конечно, Чапаева на коне так не нарисуешь, зато всевозможные технические детальки рисуются на ура.
Есть, конечно, грабельки, если интересно, расскажу. Ну, пакет OpenScad для Убунты собран дебильно — в нем нет кнопки «Export», поэтому готовую модель в .STL не запишешь. Но ничего, сойдет пакет для простого Линукса. Чтобы перегнать готовую модель в формат gcode для принтера нужен слайсер. Слайсер — это такой большой, красивый и блестящий графический продукт (непременно написанный на каком-нибудь говне типа Перла или Джавы), который с виду как 3D-редактор, а на самом деле нужен лишь для того, чтобы перетранслировать файл из формата stl в gcode. Один слайсер называется Cura. Он хорошо настраивается под конкретный принтер и красиво рисует. Но почему-то не хочет делать детали со стенками тоньше 1мм. Для этого есть другой слайсер — Slic3r. Он рисует тонкие контуры. Зато детали получаются шероховатые и корявые.
Для печати (в принципе, посылать на принтер умеет и Cura, но криво) имеет смысл использовать OctoPrint — это такой сервер, куда потом заходишь браузером на http://127.0.0.1:5000, и там все красиво. Правда, браузер нужен Chrome. Который по своей несовместимости и эгоцентричности давно занял нишу IE. Такая нынче мода пошла у веб-быдлокодеров, когда половина сайтов отказывается работать с Firefox (особенно это касается всевозможных окологугловских сайтов типа 23andme). В общем, этот сервер OctoPrint ставится на любую машину (да хоть на Raspberry Pi с WiFi, приклеенную к самому принтеру), и ты на принтер ходишь печатать браузером. Вот только под DD-WRT нету сборки, а то бы я принтер в коридоре-то воткнул :)
Оригинал заметки находится по адресу http://lleo.me/dnevnik/2014/08/27_prog.html, там можно оставить комментарии.
|
</> |