Pull to refresh

Because of the complexity или кроссплатформенная работа с фискальным принтером Posnet Temo HS FV Ej

История началась с того, что наша маленькая, но гордая компания решила создать приложение для собственных логистических нужд. Обсудив нюансы работы и обозначив конкретные цели, я приступил к реализации. Спустя некоторое время была написана первая версия java приложения и отдана на растерзание тестирование логистам и сотрудникам склада. Более года все шло хорошо, баги успешно создавались и фиксились, функционал приложения постоянно расширялся и совершенствовался, автоматизируя все больше процессов, пока мы не столкнулись с необходимостью использования фискального принтера Posnet Temo HS FV Ej.

Первая проблема возникла при попытке подключить принтер к MacOS. Система выбрасывала ошибку «Error opening device» и упорно отказывалась работать с принтером. Как и всякий уважающий себя программист, перед которым возникла сложная задача, прежде, чем углубиться в документацию – я загуглил в надежде найти подсказку или решение. Но поисковик выдавал бесполезные результаты.

Я не стал унывать, поскольку компания Posnet имеет службу поддержки. А раз она есть, значит мне помогут, наивно полагал подумал я, и написал им письмо детально описав проблему. Немного потянув время, мне все же отписали:

«Unfortunately because of complexity in MacOS (in managing devices) we are unable to help you with creating connection with our device.
Just as a remainder, there is a possibility that you can connect with Temo HS by Bluetooth port — of course if your Temo has a proper bluetooth module installed.
It isn't much but that's all I can currently help you with.»

Итак, у нас было 2 дня, потраченных на поиск готовых решений и переписку с сапортом, крайне запутанная документация с ошибками в примерах, один программист и проблема, которая оставалась не решенной. Не то чтобы это все тормозило работу нашей компании, но раз начал автоматизировать процессы, то иди в этом до конца. Единственное, что меня беспокоило – это С++. Но, после некоторого копания в коде, я нашел спасительный комментарий разработчика, который гласил, что принтер не будет работать с Linux или MacOS, пока включена опция зарядки через usb. Но проблема не возникнет, если использовать Windows. Остается загадкой, почему столь ценная информация не была включена в документацию, но это действительно помогло.

Вторая проблема выявилась при попытке собрать проект для печати с Windows. Код не компилился, поскольку сборка проекта была заточена под:

— VisualC++ .NET 2003;
— Borland C++ Builder 4;
— Delphi 7;
— Visual Basic for Applications (MS Excel).

Опыта работы с С++ у меня было не много, а дедлайн приближался, поэтому было решено работать напрямую с Serial/Com портом используя библиотеку nrjavaserial, которая являет собой fork RXTX. Основные преимущества – более стабильная работа, в сравнении с RXTX, а так же то, что все native библиотеки запакованы в один jar-архив.

Имплементировав протокол передачи данных, мне все же удалось упешно распечатать тестовые чеки с как Windows, так и с MacOS системы. Описанная проблема достаточно специфична, но надеюсь, что мое решение сможет помочь людям, которые окажутся в аналогичной ситуации. Особенно, учитывая то, что большинство програм, для работы с фискальными принтерами, расчитаны исключительно на Windows.

Ссылка на библиотеку:NeuronRobotics/nrjavaserial
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.