Взаимодействие с аппаратным обеспечением, таким как сканер штрих-кода, становится все более простым благодаря эволюции Python и множества библиотек с открытым исходным кодом. В этой статье мы уделим особое внимание тому, как использовать Python вместе с библиотекой PySerial для взаимодействия со сканером штрих-кода, подключенным к Raspberry Pi.

1. Предпосылки

  1. Сканер штрих-кода: это может быть любой стандартный сканер, я использую мини-сканер, купленный на Aliexpress.
  2. Raspberry Pi: вы можете использовать любой компьютер, я использую Raspberry Pi.
  3. Python: все, что новее, чем Python 3.6, я использую Python 3.10.
  4. PySerial: это библиотека, которую мы будем использовать для связи с ридером.

2. Настройка сканера штрих-кода

В этом руководстве мы будем использовать сканер в последовательном режиме. Большинство сканеров обычно поставляются с руководством, полным штрих-кодов, которые при сканировании изменяют настройки устройства, хотя возможно, что ваш по умолчанию будет работать в последовательном режиме.

3. Использование последовательного порта

Прежде чем мы сможем написать программу для захвата входных данных со сканера, нам сначала нужно подтвердить, к какому последовательному порту подключено устройство. Если вы используете Raspberry Pi, вы можете использовать команду ls /dev/tty* для просмотра списка всех доступных портов. Для меня сканер подключен к порту COM1, что переводится как /dev/ttyS0. COM2 переводится как /dev/ttyS1 соответственно.

4. Написание скрипта Python

Для начала мы будем использовать библиотеку PySerial, убедитесь, что она установлена ​​и доступна, прежде чем пытаться импортировать ее в свой проект. Мы также будем импортировать функцию list_ports для просмотра списка всех доступных последовательных портов, чтобы подтвердить правильность выбора последовательного порта.

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

Если бы мы попытались прочитать из последовательного порта, наша программа зависла бы навсегда, пока что-то не было бы обнаружено. По этой причине, когда мы выполняем операцию чтения в Python, нам нужно предоставить значение timeout, чтобы программа могла корректно выйти.

5. Вывод

С помощью этого довольно короткого скрипта можно попытаться прочитать из последовательного порта и изящно выйти, если что-то пойдет не так. Однако, если данные получены, они, скорее всего, будут закодированы, поэтому вам, возможно, придется дополнительно декодировать данные, чтобы их можно было прочитать человеком. Python делает написание бизнес-приложений невероятно быстрым, и если вы столкнетесь с какими-либо проблемами с последовательной связью, это, скорее всего, будет связано с несоответствием скорости передачи данных. Удачи и удачного сканирования!

Большое спасибо за чтение! Не забудьте показать свою любовь 💗, похлопав 👏 этой статье, и дайте мне знать, что вы думаете в комментариях ниже😎