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-коде превратится в «крякозябры», если приёмник ждёт не ту кодовую страницу.
Как проверить режим за минуту
- Откройте «Блокнот», поставьте курсор в окно и отсканируйте любой код. В режиме HID текст появится сразу, а при суффиксе Enter курсор перейдёт на новую строку.
- Если ничего не появилось, посмотрите «Диспетчер устройств»: сканер в режиме HID появляется среди HID-устройств или клавиатур, в режиме COM — в разделе портов.
- Для COM-режима запустите терминальную программу, укажите номер порта и отсканируйте код. Он должен появиться в её окне.
- Режим переключают служебными штрих-кодами из руководства производителя. Названия режимов у разных марок отличаются, ищите раздел про интерфейс USB.
Для кодов маркировки такого теста мало: обычный «Блокнот» управляющие символы, как правило, не показывает. Как проверять их, описано в статье про сканер для маркировки.
Частые вопросы
Нужен ли драйвер для USB-сканера?
В режиме HID не нужен: система определяет сканер как клавиатуру. В режиме COM зависит от модели. Если сканер объявляет себя устройством CDC ACM, Windows ставит встроенный драйвер сама, иначе может потребоваться драйвер от производителя. Загляните в руководство к модели.
Почему сканер вводит русские буквы вместо латинских?
В режиме HID сканер передаёт нажатия клавиш, а букву определяет раскладка компьютера. При русской раскладке латинские символы кода превращаются в кириллические. Переключитесь на английскую раскладку или задайте сканеру страну клавиатуры штрих-кодом из руководства.
Почему после сканирования ничего не происходит?
Чаще всего у сканера не включён суффикс Enter: программа не получила сигнала, что ввод закончен, и код просто стоит в поле. Отсканируйте служебный штрих-код «добавить суффикс Enter» из руководства. Если код не появился вовсе, проверьте режим подключения и фокус окна.
Что выбрать, HID или COM?
То, чего ждёт ваша программа. Если она принимает ввод с клавиатуры, берите HID: проще всего подключить. Если программа читает последовательный порт или нужна передача управляющих символов без искажений, нужен COM. Документация кассового ПО или учётной системы указывает, какой режим поддерживается.