O_F8.exe — обработка кодов маркировки для Честного ЗНАКа и Ozon
Последние версии программы:
https://disk.yandex.ru/d/YDa5RnoubkvWBQ
Ссылка на скачивание: https://ladimchat.ru/bot/prog/O_F8.exe
При работе с кодами маркировки иногда возникает довольно простая по формулировке, но неприятная на практике задача: сканер должен передать в программу управляющий разделитель GS, а выбранное поле ввода его не понимает, теряет или обрабатывает не так, как хотелось бы.
Особенно весело становится, когда один и тот же сканер приходится использовать в разных сервисах:
- в одном нужен короткий код маркировки;
- в другом — полный код с настоящим управляющим символом GS;
- третьему нужен не сам GS, а буквальная последовательность
\u001d.
Чтобы каждый раз не перенастраивать сканер и не переводить его в режим COM-порта, была создана небольшая программа O_F8.exe.
Программа предназначена для сканеров, настроенных на передачу клавиши F8 вместо разделителя GS и клавиши Enter в конце сканирования.
O_F8.exe принимает быстрый поток от сканера, временно сохраняет его, обрабатывает разделители и затем вводит результат в то место, где находится текстовый курсор.
Да, технически это выглядит так, будто возле компьютера сидит очень быстрый и очень дисциплинированный оператор. Только этот оператор знает, что такое GS, не просит кофе и нажимает Enter самостоятельно.
Для чего нужна O_F8.exe
Главная задача программы — преобразовать данные USB-сканера, работающего в режиме клавиатуры, в формат, который ожидает конкретная программа или интернет-сервис.
O_F8.exe поддерживает три режима:
- Короткий код маркировки;
- Полный код маркировки с настоящим GS;
- Полный код для Ozon с заменой GS на
\u001d.
Переключение выполняется функциональными клавишами F2, F3 и F4.
После обработки кода программа во всех режимах автоматически нажимает Enter.
Как работает программа
Сканер передаёт код как последовательность клавиатурных нажатий. Вместо управляющего разделителя GS он должен отправлять клавишу F8, а после полного кода — Enter.
Например, условный поток от сканера может выглядеть так:
010460123456789021ABC123[F8]91TEST[F8]92SIGNATURE[Enter]
O_F8.exe:
- перехватывает поток;
- сохраняет его во внутреннем буфере;
- ждёт завершающий
Enter; - определяет места, в которых сканер нажал
F8; - преобразует строку в соответствии с выбранным режимом;
- посимвольно вводит результат в активное поле;
- нажимает
Enter.
Исходный быстрый поток не отправляется прямо в программу. Это важно, потому что попытка заменить F8 на GS непосредственно во время сканирования может привести к перестановке или потере символов.
Поэтому O_F8.exe сначала спокойно выслушивает сканер до конца, а уже потом пересказывает полученный код целевой программе — медленнее, зато разборчиво.
Режимы O_F8.exe
F2 — «ЧЗ Полный»
Клавиша:
F2
Режим предназначен для передачи полного кода маркировки с восстановлением настоящих управляющих разделителей GS.
Программа:
- принимает весь код до
Enter; - сохраняет все обычные символы;
- вместо каждого принятого
F8вставляет настоящий символ:
GS = ASCII 29 = U+001D
- вставка GS выполняется через буфер обмена;
- после полного кода нажимается
Enter.
Пример
Сканер передаёт:
ABC123[F8]DEF456[F8]XYZ[Enter]
Программа вводит:
ABC123<GS>DEF456<GS>XYZ
После этого автоматически нажимает Enter.
Сам управляющий символ GS обычно не отображается на экране. Поэтому визуально строка может выглядеть так:
ABC123DEF456XYZ
Однако внутри строки разделители присутствуют.
Работа с буфером обмена
В режиме «ЧЗ Полный» программа временно:
- сохраняет текущее содержимое буфера обмена;
- помещает туда настоящий символ GS;
- вставляет GS в нужные места;
- восстанавливает прежнее содержимое буфера.
На время обработки скана лучше не выполнять копирование вручную. Буфер обмена в этот момент занят важным государственным делом — переносит один невидимый символ.
F3 — «ЧЗ короткий»
Клавиша:
F3
Этот режим вводит только часть кода до первого разделителя F8.
Всё, что находится после первого значимого F8, отбрасывается.
Пример
Сканер передаёт:
ABC123[F8]DEF456[F8]XYZ[Enter]
Программа введёт:
ABC123
После этого нажмёт Enter.
Если F8 находится в начале строки
Иногда сканер или конкретная настройка может передать F8 перед полезной частью кода:
[F8]ABC123[F8]DEF456[Enter]
Начальный F8 игнорируется. Программа начнёт сохранять данные с первого обычного символа и остановится на следующем F8.
Результат:
ABC123
Если в коде нет F8
Если разделитель отсутствует, программа введёт всю принятую строку до Enter.
Режим подходит для полей, в которых требуется только основная часть кода маркировки, без криптохвоста и последующих групп данных.
F4 — «OZON»
Клавиша:
F4
В этом режиме программа передаёт полный код, но вместо настоящего управляющего символа GS вставляет буквальную последовательность:
\u001d
Обратите внимание: это именно шесть видимых символов:
\ u 0 0 1 d
Это не настоящий управляющий символ, а его текстовое обозначение.
Пример
Сканер передаёт:
ABC123[F8]DEF456[F8]XYZ[Enter]
Программа вводит:
ABC123\u001dDEF456\u001dXYZ
Затем автоматически нажимает Enter.
Такой вариант может использоваться в интерфейсах и интеграциях Ozon, которые ожидают передачу разделителя GS в экранированном текстовом виде.
Таблица горячих клавиш
| Клавиша | Режим | Действие |
|---|---|---|
F2 |
ЧЗ Полный | Полный код, F8 заменяется настоящим GS |
F3 |
ЧЗ короткий | Вводится часть кода до первого значимого F8 |
F4 |
OZON | Полный код, F8 заменяется текстом \u001d |
F10 |
Включение и выключение | Временно отключает или включает перехват сканера |
Ctrl + Alt + F12 |
Выход | Полностью закрывает O_F8.exe |
После запуска по умолчанию включается режим:
F2 — ЧЗ Полный
При переключении режима Windows показывает уведомление. Название активного режима также можно увидеть, наведя курсор на значок O_F8.exe в системном трее.
Требования к настройке сканера
Для штатной работы O_F8.exe сканер должен:
- работать в режиме USB HID Keyboard, то есть определяться как обычная клавиатура;
- передавать клавишу
F8вместо разделителя GS; - передавать
Enterпосле полного кода; - отправлять строку достаточно быстро, чтобы программа отличила сканирование от ручного ввода.
Пример требуемого потока:
часть кода → F8 → часть кода → F8 → часть кода → Enter
Настройка F8 обычно выполняется по инструкции производителя сканера с помощью специальных конфигурационных штрихкодов.
Название параметра может различаться:
- замена GS на F8;
- Function Key Mapping;
- Control Character Mapping;
- GS Replacement;
- ASCII 29 Mapping;
- Data Formatting.
Если сканер уже настроен на работу с F8, дополнительная перенастройка обычно не требуется.
Как пользоваться O_F8.exe
Шаг 1. Настройте сканер
Убедитесь, что:
- вместо GS сканер передаёт
F8; - в конце кода передаётся
Enter; - сканер работает в клавиатурном режиме.
Проверить наличие F8 в обычном Блокноте не всегда удобно: функциональная клавиша не отображается как текст. Проще проверить работу непосредственно через O_F8.exe в нужной программе.
Шаг 2. Запустите программу
Запустите файл:
O_F8.exe
Программа откроется в фоновом режиме. В системном трее появится её значок.
Отдельное окно не требуется: O_F8.exe работает как клавиатурный обработчик.
Шаг 3. Выберите режим
Перед сканированием нажмите:
F2 — полный код с настоящим GS
F3 — короткая часть кода
F4 — полный код с \u001d для Ozon
Выбранный режим сохраняется до следующего переключения или закрытия программы.
Шаг 4. Установите курсор
Щёлкните мышью по нужному полю ввода в:
- «Честном ЗНАКе»;
- Ozon;
- 1С;
- учётной программе;
- браузере;
- другом приложении, принимающем код маркировки.
Важно, чтобы перед сканированием курсор находился именно в нужном поле.
Шаг 5. Отсканируйте код
Программа примет строку, обработает её в соответствии с выбранным режимом, введёт результат и нажмёт Enter.
Можно ли пользоваться обычной клавиатурой
Да. O_F8.exe отличает сканирование от ручного ввода по нескольким признакам:
- длине строки;
- скорости поступления символов;
- наличию завершающего
Enter; - присутствию
F8, если он есть в коде.
Обычный пользовательский ввод возвращается в активное поле после небольшой технологической задержки.
При этом желательно не печатать на клавиатуре непосредственно во время сканирования. Сканер и обычная клавиатура для Windows выглядят как устройства одного типа. Если оператор решит одновременно со сканером дописать что-нибудь от себя, программа может получить коллективное произведение двух авторов.
Если перехват временно не нужен, нажмите:
F10
Клавиатура начнёт работать напрямую.
Для повторного включения нажмите F10 ещё раз или выберите один из режимов клавишами F2, F3 или F4.
Почему программа вводит код не мгновенно
O_F8.exe сначала принимает весь поток сканера, а затем воспроизводит его посимвольно.
Это сделано намеренно.
Если попытаться вставлять GS прямо во время быстрого потока, следующие символы сканера могут:
- поменяться местами;
- потеряться;
- попасть под нажатый
Ctrl; - быть интерпретированы как сочетание клавиш;
- вызвать неожиданную реакцию веб-интерфейса.
Поэтому программа работает по принципу:
сначала принять → затем обработать → потом аккуратно ввести
Да, это медленнее прямого сканирования. Но зато работает.
O_F8.exe не участвует в соревновании на самый быстрый ввод маркировки в Северном полушарии. Её задача скромнее: передать код целиком и в нужном формате.
Если требуется высокая скорость обработки большого количества кодов, стабильная идентификация конкретного устройства или дополнительные функции, лучше использовать вариант со сканером через COM-порт.
Вариант без перехода на COM-порт
O_F8.exe подойдёт, если не хочется:
- переключать сканер в COM-режим;
- устанавливать драйвер виртуального COM-порта;
- искать номер порта в диспетчере устройств;
- настраивать скорость, чётность и другие параметры последовательного соединения;
- объяснять пользователю, почему вчера был COM3, а сегодня внезапно COM7.
Сканер продолжает работать как обычная USB-клавиатура, а программа обрабатывает его поток на уровне клавиатурного ввода.
Это делает O_F8.exe удобным небольшим решением для рабочих мест, где нужна только обработка F8 и переключение между несколькими форматами кода.
O_F8.exe или LKS.exe — что выбрать
O_F8.exe является простым альтернативным вариантом для случаев, когда сканер уже настроен на передачу F8 и переходить на COM-порт не хочется.
Для более серьёзных задач можно использовать программу LKS.exe:
Программа LKS.exe для работы со сканерами кодов маркировки
LKS.exe работает со сканером через COM-порт и предоставляет дополнительные возможности, включая обработку маркировки для различных систем, работу с файлами и Excel, проверку кодов, печать копий Data Matrix и другие функции.
Условно выбор выглядит так:
| Задача | Рекомендуемый вариант |
|---|---|
| Нужно быстро запустить сканер в клавиатурном режиме | O_F8.exe |
| Сканер уже передаёт F8 вместо GS | O_F8.exe |
| Нужны три простых формата вывода | O_F8.exe |
| Не хочется переключаться на COM | O_F8.exe |
| Нужна более высокая скорость | LKS.exe |
| Требуется точное разделение сканера и клавиатуры | LKS.exe через COM |
| Нужна печать копий Data Matrix | LKS.exe |
| Требуется запись, проверка и учёт кодов | LKS.exe |
O_F8.exe не заменяет все возможности LKS.exe. Это компактное решение для конкретной задачи: принять код от клавиатурного сканера, обработать F8 и отправить результат в нужном формате.
На чём написана программа
Во время поиска подходящего решения я наткнулся на интересный инструмент AutoHotkey.
AutoHotkey — это язык автоматизации для Windows, позволяющий:
- назначать горячие клавиши;
- перехватывать клавиатурный ввод;
- имитировать нажатия;
- обрабатывать текст;
- автоматизировать действия в программах.
На его основе и была написана O_F8.exe.
Программа принимает быстрый клавиатурный поток от сканера, собирает его во внутренний буфер, распознаёт F8, преобразует данные и воспроизводит готовую последовательность.
Название получилось предельно практичным:
O_F8.exe
Буква «O» может означать Ozon, обработку или просто то самое выражение, которое появляется у разработчика после того, как невидимый GS наконец-то оказался на правильном месте.
Важные особенности и ограничения
Программа предназначена для Windows
O_F8.exe работает в среде Windows и использует эмуляцию клавиатурного ввода.
Сканер и клавиатура не разделяются физически
В клавиатурном режиме Windows видит сканер как клавиатуру. Поэтому O_F8.exe отличает поток сканера по скорости, длине и завершающему Enter.
Для абсолютного разделения устройств лучше использовать COM-порт или Windows Raw Input.
Во время сканирования не рекомендуется печатать вручную
Одновременный ввод со сканера и обычной клавиатуры может смешаться.
В режиме F2 используется буфер обмена
Настоящий GS вставляется через буфер обмена. Его предыдущее содержимое восстанавливается после обработки, однако не следует копировать новые данные в момент сканирования.
Некоторые антивирусы могут реагировать на программу
Приложения на AutoHotkey иногда вызывают ложные предупреждения антивирусов, поскольку они перехватывают и имитируют клавиатурный ввод.
Это характерно для класса используемых технологий и само по себе не означает наличие вредоносного кода.
Права запуска должны совпадать
Если браузер, 1С или другая целевая программа запущена от имени администратора, O_F8.exe также может потребоваться запуск от имени администратора.
Windows не любит, когда обычная программа нажимает клавиши в окно с повышенными правами. У неё свои представления о служебной иерархии.
Как закрыть программу
Для полного завершения нажмите:
Ctrl + Alt + F12
Также можно:
- найти значок O_F8.exe в системном трее;
- нажать по нему правой кнопкой мыши;
- выбрать выход из программы.
Чтобы только временно отключить обработку, используйте F10.
Краткая инструкция
- Настройте сканер на замену GS клавишей
F8. - Настройте отправку
Enterпосле кода. - Запустите
O_F8.exe. - Выберите режим:
F2— полный код с настоящим GS;F3— короткий код до первого F8;F4— полный код с\u001dдля Ozon.
- Установите курсор в поле ввода.
- Отсканируйте Data Matrix.
- Дождитесь посимвольного ввода и автоматического
Enter.
Скачать O_F8.exe
Файл программы находится во вложении внизу страницы:
O_F8.exe
Перед запуском рекомендуется проверить настройку сканера: вместо разделителя GS должна передаваться клавиша F8, а в конце кода — Enter.
Частые вопросы
Что такое GS?
GS — управляющий символ Group Separator:
ASCII 29
U+001D
Chr(29)
Он применяется в GS1 Data Matrix для разделения групп данных переменной длины.
Почему GS не видно в строке?
Это управляющий, а не печатный символ. Он может находиться внутри строки, но не отображаться в текстовом поле.
Почему сканер должен передавать F8?
Клавиша F8 используется как удобная видимая для программы метка местоположения GS. O_F8.exe находит её и выполняет нужное преобразование.
Можно ли использовать другую клавишу вместо F8?
В текущей версии программа рассчитана на F8. Для другой клавиши потребуется соответствующая версия или изменение настроек программы.
Что делает F3, если код начинается с F8?
Начальный F8 игнорируется. Программа начнёт собирать текст после него и остановится на следующем F8.
Почему обычная клавиатура реагирует с задержкой?
Программа должна определить, поступают данные от человека или от быстрого сканера. Для этого она ожидает небольшую паузу между символами.
Подойдёт ли программа вместо COM-порта?
Да, если достаточно трёх реализованных режимов и устраивает посимвольное воспроизведение. Для высокой скорости и расширенных функций лучше использовать COM-решение.
Нужно ли устанавливать AutoHotkey?
Для запуска готового файла O_F8.exe отдельная установка AutoHotkey обычно не требуется.