пятница, июля 29, 2016

Траблшутинг: как модем перестал, а потом снова начал слать СМС


Жил-был в одной пиццерии модем, выполнявший единственную функцию: при оформлении онлайн-заказа слал на номер клиента число из диапазона 1000-9999. Слал-слал, да и перестал.

В error-логе Apache обнаружилось, что gsmsendsms заканчивается неудачей с ошибкой: неожиданный ответ: ^RSSI: 9.

RSSI - показатель силы сигнала. Чо к чему?

Полез к модему через minicom. Увидел, что модем регулярно шлёт RSSI: <цифра> и тип соединения. Очевидно, это и есть "неожиданный ответ". gsmsendsms ожидала на свою сентенцию что-то типа ОК, а получила, натурально, уровень сигнала зачем-то.

Выключил эти сообщения (есть такая АТ команда). Теперь gsmsendsms заканчивалась с ошибкой 500.

500 - это ошибка типа "ХЗ". Что-то не так, не технически, а вообще. Непорядок во внешней вселенной.

Вынул SIM-карту из модема, поставил в телефон. Она оказалась заполненной. Хранилище на 15 сообщений было полно предупреждениями МЧС о грядущих ненастьях.

Удалил сообщения и поставил карту назад в модем. Она стала отправлять сообщения.

Проблема была решена, но в ближайшей перспективе. МЧС ведь не остановится. Ненастья грядут.

Изучение AT команд открыло, что AT+CMGD=X удалит из хранилища сообщение номер X. А AT+CMGD=X,4 удалит всё, игнорируя значение X.

Также оказалось, что AT команды можно тупо слать в /dev/ttyUSBx, например, через echo -n.

Осталось вставить это в crontab рута.

Оставил на завтра: слишком много свершений за один день.

среда, июля 20, 2016

Pre-cut appliqué [Практическая машинная вышивка]



Этим стулом мастер Гамбс 
начинает новую партию стульев.

Аппликация - понятно - детский сад и клейстер. В машинной вышивке, как у бабочек, всё происходит примерно так же.

Аппликация бывает trimmed in position и pre-cut. Ушлые умы пусть догонят сами, а сейчас будет только про второе.

Предварительно вырезанная аппликация - это когда на изделие налагается нечто, натурально, вырезанное заблаговременно. Мне нужно было наложить триколоры на рукава рубашек-поло. Флажки были отшиты одним блоком на куске габардина, вырезаны (оно! Pre-cut!) и оплавлены весёлым пропановым огоньком.


Это детская аппликация: пришивается удобный прямоугольник. Весь (нехитрый) фокус в проектировании фиксирующей части. Она состоит минимум из трёх строчек. Я не знаю русской терминологии, поэтому будем пользоваться обозначениями placement, tackdown и covering. Вот они.


Placement line (зелёная) обозначает на изделии контур, очерчивающий аппликацию. Это просто для удобства оператора, никакого другого смысла в этой строчке нет.

Tackdown line (жёлтая) - зигзаг, начерно фиксирующий аппликацию на её месте. Намётка. Ширина зигзага - 2 мм или больше. Чем больше, тем более толстой строчкой придётся его укрывать: нехорошо. Меньше 2 мм - трудно будет попасть краем аппликации в этот зазор. 

Covering line - сатиновая строчка, минимум на 0,5 мм (лучше на 1) шире намётки. Окончательно всё фиксирует и прикрывает всю эту намёточную срамоту.

Всё это делается из одного контура: рисуется single run line, дублируется; дубликат преобразуется в satin line нужной толщины, минимальной плотности, без underlay - получился зигзаг, дублируется; дубликат делается шире  примерно на 1 мм, плотностью около 80%, underlay по желанию, но лучше - делать, edge run.

Цвета. Видимой будет только верхняя строчка, поэтому остальные можно расцвечивать как угодно, желательно разными цветами, чтобы было больше возможностей для манипуляций на машине. При вышивке placement line лучше взять контрастной к фону: удобнее целиться.

Растаращиваем наш рукав на подходящем хупе. Можно настроить паузу после первой строчки, можно делать паузу в процессе. Скорость лучше выставить минимальную. Машина рисует контур. Вкладываем в него аппликацию. Слегка прижимаем пальцами (подальше от иглы! Блокировка сработает только когда игла упрётся в кость!) и запускаем машину. Загзаг должен пристрелить аппликацию аккуратно, нигде не уйдя с неё. Если такое случилось, надо не полениться и проектировать новую covering line с учётом ошибки.



После удачной пристрелки запускаем верхнюю строчку и медитируем.


Фишки и типсы.

Всегда делайте черновик. Вы работаете на долях миллиметра. Например, толщина аппликации потребует малопредсказуемого смещения фиксирующих контуров. Я пришил восемь этих флажков за полчаса, а на проектирование и пробы ушло полтора часа.

Если что-то пошло не так, простые контуры можно поправить на лету. Допустим, хорошо пристрелились белая сторона и ближний торец, а красная сторона и дальний торец зацепило плохо (даже с правильными контурами такое бывает, если слегка ошибиться в расположении аппликации или не удержать её при пристрелке).  Ведём covering line до последнего угла, где она хорошо ложится (на фото - красного). Стоп. Запоминаем номер стежка на машине. На машинном компьютере открываем редактирование и сдвигаем строчку на пару миллиметров в нужных направлениях. Возвращаемся к стежку, который запомнили. Поехали дальше. При известном глазомере и сообразительности вы продолжите безошибочно.

Аппликация - это круто. Простые контуры, минимум ниток: вы можете делать очень сложные рисунки на самых хлипких тканях. Рисунки будут чёткими, а ткань не поведёт.


вторник, июля 19, 2016

Чековый принтер Posiflex AURA 6900 + Linux

Более двух лет назад пришлось подключать чековые принтеры Posiflex 6900 к производственной системе, построенной на LAMP. Тогда я решил эту задачу минималистично: обнаружил, что принтер тупо выводит на ленту всё, что приходит на порт TCP 9100 (обнаружил случайно: попытался открыть порт 9100 браузером и увидел на ленте заголовки HTTP-запроса). Русские буквы выходили двухбайтными; установить, что встроенный шрифт использует codepage 866, было просто. Написал вывод текстовых чеков на порты нужных принтеров, и больше двух лет так и работало.

Сейчас возникло желание поиметь красивые чеки с картинками и шлюхами. Для этого надо подключить принтер через CUPS. Исследование инета показало. что: 1) драйверов для CUPS нет ни у производителя, ни у вендоров; 2) в инете есть 2 (две) релевантные темы на форумах, ни в одной нет решения. Но! В одной из тем топикстартер приложил файл 6800.zip. Внутри обнаружился PPD для этого типа принтеров и - бааааа! - файл rastertopp7, который, ясное дело, представляет собой принтер-специфический фильтр CUPS. Файл оказался 32-bit ELF binary. Система 64-битная. Хьюстон, у нас тово.

Положил фильтр в /usr/lib/cups/filter. Добавил принтер, подключение: socket://xxx.xxx.xxx.xxx:9100, скормил найденный PPD. Попробовал напечатать тестовую страницу, получил сообщение "Filter failed". Естественно: рыба-то пресноводная, а водоём-от солёный.

Я поискал исходники и почти нашёл. На тайваньском сервере. С китайским интерфейсом. За скачивание попросили 50 юаней. Я пожопился из-за отчётливого ощущения разводилова. Адрес пользователя, разместившего архив, был в mail.ru.

Остался план Б: мультиархитектура. Добавил архитектуру i386 в систему:

dpkg --add-architecture i386

добавил 32-битные библиотеки:

apt-get update

apt-get install ia32-libs

Повторил пробную печать. Filter failed. Недодавил где-то.

ldd /usr/lib/cups/filter/rastertopp7 | grep found

Выхватил сообщение о не найденной libcupsimage.so.2

apt-get install libcupsimage2:i386

Повторил печать. Из принтера вылезла пробная страница с пингвином.

Теперь всё просто:  1) чек рисуется в HTML; 2) пропускается через mPDF, получается PDF; 3) отправляем его на принтер, ждём несколько секунд и удаляем файл. Несколько уродски, но просто и работает, а простые фокусы - самые надёжные.




Поиск по этому блогу