Перейти к содержимому

USB-сканер штрих-кода

USB-сканер штрих-кода подключается кабелем USB. Работает как клавиатура (USB-HID), когда код вводится в активное окно, или как виртуальный COM-порт, который читает программа.

Режимы USB-сканера: HID и COM

Кабель USB задаёт только способ подключения. Что именно компьютер увидит по этому кабелю, определяет режим интерфейса, и в паспорте сканера штрих-кода их обычно несколько. Два встречаются почти везде.

РежимЧто видит системаДрайверКуда попадает код
USB-HID, эмуляция клавиатурыКлавиатуруНе нужен: драйвер класса HID встроен в системуВ активное окно, как набранный текст
USB-COM, виртуальный COM-порт (CDC)Последовательный портЕсли сканер объявляет себя устройством CDC ACM, Windows подключает встроенный драйвер Usbser.sys сама; иначе может понадобиться драйвер производителяВ программу, которая открыла этот порт

HID удобен тем, что работает сразу: воткнули кабель и сканируйте туда, где стоит курсор. Цена в том, что сканер «нажимает клавиши», и всё, что клавиатура передать не может, теряется или искажается. К таким символам относится служебный GS, о котором подробнее в термине FNC1.

COM-порт ничего не печатает. Порт получает байты, их читает программа-приёмник: кассовое ПО, учётная система или терминальная программа. Без неё код никуда не попадёт. Номер порта виден в «Диспетчере устройств» Windows в разделе «Порты (COM и LPT)».

RS-232, PS/2 и «клавиатурный разрыв»: что было до USB

Первые сканеры подключали к последовательному порту RS-232. Электрически это просто, но под каждый компьютер приходилось писать свою программу приёма. Следующий шаг сделал «клавиатурный разрыв»: небольшой блок вставляли между разъёмом PS/2 и клавиатурой, и считанные символы появлялись так, будто их набрали руками. Для ручных сканеров внешнее питание при этом не требовалось.

USB повторил обе схемы. HID унаследовал идею клавиатурного разрыва, COM-режим — идею RS-232, поэтому в настройках его называют «эмуляцией RS-232». Старые кассы и промышленное оборудование иногда по-прежнему ждут именно последовательный порт. Беспроводные сканеры повторяют те же режимы, только вместо кабеля у них Bluetooth или радиоканал.

Суффикс, префикс сканера и раскладка: откуда лишние и пропавшие символы

Сканер может дописать к коду знаки. Суффикс идёт после кода, обычно это Enter: по нему программа понимает, что ввод закончен, и обрабатывает строку. Если суффикса нет, код остаётся в поле и ничего не происходит. Если он лишний, программа может получить пустую строку. Префикс идёт перед кодом, и по нему программа отличает ввод со сканера от ввода с клавиатуры.

В режиме HID главная проблема другая — раскладка. Сканер передаёт не буквы, а нажатия клавиш, а букву из них собирает раскладка компьютера. При включённой русской раскладке латинские буквы кода превращаются в кириллические. На некоторых раскладках знаки вроде «-» и «/» сдвигаются на другие клавиши, и ссылки в кодах приходят искажёнными. Лечат это в самом сканере: задают страну или тип клавиатуры штрих-кодом из руководства и сканируют при английской раскладке.

В режиме COM раскладка на данные не влияет, байты идут как есть. Зато появляется вопрос кодировки: кириллица в QR-коде превратится в «крякозябры», если приёмник ждёт не ту кодовую страницу.

Как проверить режим за минуту

  1. Откройте «Блокнот», поставьте курсор в окно и отсканируйте любой код. В режиме HID текст появится сразу, а при суффиксе Enter курсор перейдёт на новую строку.
  2. Если ничего не появилось, посмотрите «Диспетчер устройств»: сканер в режиме HID появляется среди HID-устройств или клавиатур, в режиме COM — в разделе портов.
  3. Для COM-режима запустите терминальную программу, укажите номер порта и отсканируйте код. Он должен появиться в её окне.
  4. Режим переключают служебными штрих-кодами из руководства производителя. Названия режимов у разных марок отличаются, ищите раздел про интерфейс USB.

Для кодов маркировки такого теста мало: обычный «Блокнот» управляющие символы, как правило, не показывает. Как проверять их, описано в статье про сканер для маркировки.

Частые вопросы

Нужен ли драйвер для USB-сканера?

В режиме HID не нужен: система определяет сканер как клавиатуру. В режиме COM зависит от модели. Если сканер объявляет себя устройством CDC ACM, Windows ставит встроенный драйвер сама, иначе может потребоваться драйвер от производителя. Загляните в руководство к модели.

Почему сканер вводит русские буквы вместо латинских?

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

Почему после сканирования ничего не происходит?

Чаще всего у сканера не включён суффикс Enter: программа не получила сигнала, что ввод закончен, и код просто стоит в поле. Отсканируйте служебный штрих-код «добавить суффикс Enter» из руководства. Если код не появился вовсе, проверьте режим подключения и фокус окна.

Что выбрать, HID или COM?

То, чего ждёт ваша программа. Если она принимает ввод с клавиатуры, берите HID: проще всего подключить. Если программа читает последовательный порт или нужна передача управляющих символов без искажений, нужен COM. Документация кассового ПО или учётной системы указывает, какой режим поддерживается.