Где у iPad COM-порт?
Мы, несомненно, живём в великой стране. В стране, где госорганы используют технологии позавчерашнего дня, и с этим приходится считаться. Не будем сейчас углубляться в требования налоговой службы к малому бизнесу, но если кто вдруг не в курсе, технически это выглядит так: вы должны использовать девайс, который ведёт учёт всех ваших продаж и хранит их на своём носителе, который вы обязаны ежегодно сдавать в ФНС. И всё бы ничего, но девайс этот работает преимущественно по COM-порту, а инновации в виде ВТ-подключения увеличивают время ответа в разы. Так как заставить iPad работать с особым видом термопринтеров, который в России гордо называют Фискальными Регистраторами?
Мы опять вернулись к идее, что если бы в нашем распоряжении был обычный компьютер, можно было бы подключить периферийные устройства к нему. При необходимости мы могли бы даже разрабатывать драйверы для неподдерживаемых устройств и таким образом обеспечить их работоспособность. Но отдельного компьютера нет, а подключить что-либо к iPad через lightning-порт — практически невозможно, как минимум из-за сертификации Apple. Идеальным решением была бы некая «коробка», не требующая обслуживания и обеспечивающая нам интерфейс к периферийным устройствам. Конечно, можно было бы разработать собственное устройство на базе какого-нибудь микроконтроллера, но в нашей компании не было специалиста-электронщика, который взялся бы за эту задачу. К тому же разработка такого устройства собственными силами существенно увеличила бы сроки готовности всей системы. Мы отправились на поиски готового решения, на базе которого мы могли бы строить свою систему.
И такое решение было найдено в виде всеми любимого Raspberry Pi. «Малина» недорога, компактна, потребляет мало энергии, позволяет подключить устройства через USB-порты (которые малой кровью могут быть преобразованы в COM) Таким образом проблема подключения периферии на уровне «железа» отпадает. Также весомым преимуществом оказалось то, что «малина» работает под управлением Linux, то есть разрабатывать программную начинку под эту платформу значительно проще, чем, например, для микроконтроллеров. Процедура обновления программного обеспечения для Raspberry проста и понятна – вытащил SD-карту со старой версией, вставил носитель с новой версией. При необходимости, выполнить её может даже неспециалист, а значит, это более чем отвечает нашей исходной идее о системе, которая не требует специального обслуживания и отдельного специалиста, который будет отвечать за это.
Это ли не счастье для службы техподдержки? Технически, при необходимости к такому устройству можно получить доступ удалённо, например, через SSH, чтобы исправить какую-либо проблему. Что также требует от персонала ресторана действий на уровне «подключите устройство к сети, нажмите определенные кнопки и подождите, пока наши специалисты разберутся с проблемой».
Проанализировав всё это, мы добавили к нашей системе QRBox – такое название получил Raspberry Pi в виде конечного продукта. Он взаимодействует с остальными терминалами в пиринговой сети посредством CouchDB, получая и передавая информацию для и от периферийных устройств. Попробовали даже напечатать свой корпус, результат пока далек от совершенства:
Например, чтобы напечатать чек, терминал помещает в CouchDB документ, описывающий чек. QRBox получает этот документ, формирует пакет данных для фискального регистратора, убеждается, что чек напечатан, делает соответствующую отметку в CouchDB для терминала.