Взаимодействие с аппаратным обеспечением, таким как сканер штрих-кода, становится все более простым благодаря эволюции Python и множества библиотек с открытым исходным кодом. В этой статье мы уделим особое внимание тому, как использовать Python вместе с библиотекой PySerial для взаимодействия со сканером штрих-кода, подключенным к Raspberry Pi.
1. Предпосылки
- Сканер штрих-кода: это может быть любой стандартный сканер, я использую мини-сканер, купленный на Aliexpress.
- Raspberry Pi: вы можете использовать любой компьютер, я использую Raspberry Pi.
- Python: все, что новее, чем Python 3.6, я использую Python 3.10.
- PySerial: это библиотека, которую мы будем использовать для связи с ридером.
2. Настройка сканера штрих-кода
В этом руководстве мы будем использовать сканер в последовательном режиме. Большинство сканеров обычно поставляются с руководством, полным штрих-кодов, которые при сканировании изменяют настройки устройства, хотя возможно, что ваш по умолчанию будет работать в последовательном режиме.
3. Использование последовательного порта
Прежде чем мы сможем написать программу для захвата входных данных со сканера, нам сначала нужно подтвердить, к какому последовательному порту подключено устройство. Если вы используете Raspberry Pi, вы можете использовать команду ls /dev/tty*
для просмотра списка всех доступных портов. Для меня сканер подключен к порту COM1
, что переводится как /dev/ttyS0
. COM2
переводится как /dev/ttyS1
соответственно.
4. Написание скрипта Python
Для начала мы будем использовать библиотеку PySerial, убедитесь, что она установлена и доступна, прежде чем пытаться импортировать ее в свой проект. Мы также будем импортировать функцию list_ports
для просмотра списка всех доступных последовательных портов, чтобы подтвердить правильность выбора последовательного порта.
На всякий случай, если была ошибка с нашим первоначальным выбором порта, мы можем определить словари, содержащие все возможные порты и скорости передачи данных, которые мы хотим опробовать. Обратите внимание, что скорость передачи данных, используемая вашим устройством, должна быть в вашей документации, иначе вам придется прибегнуть к методу проб и ошибок.
Если бы мы попытались прочитать из последовательного порта, наша программа зависла бы навсегда, пока что-то не было бы обнаружено. По этой причине, когда мы выполняем операцию чтения в Python, нам нужно предоставить значение timeout
, чтобы программа могла корректно выйти.
5. Вывод
С помощью этого довольно короткого скрипта можно попытаться прочитать из последовательного порта и изящно выйти, если что-то пойдет не так. Однако, если данные получены, они, скорее всего, будут закодированы, поэтому вам, возможно, придется дополнительно декодировать данные, чтобы их можно было прочитать человеком. Python делает написание бизнес-приложений невероятно быстрым, и если вы столкнетесь с какими-либо проблемами с последовательной связью, это, скорее всего, будет связано с несоответствием скорости передачи данных. Удачи и удачного сканирования!
Большое спасибо за чтение! Не забудьте показать свою любовь 💗, похлопав 👏 этой статье, и дайте мне знать, что вы думаете в комментариях ниже😎