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 поддерживает три режима:

  1. Короткий код маркировки;
  2. Полный код маркировки с настоящим GS;
  3. Полный код для Ozon с заменой GS на \u001d.

Переключение выполняется функциональными клавишами F2, F3 и F4.

После обработки кода программа во всех режимах автоматически нажимает Enter.


Как работает программа

Сканер передаёт код как последовательность клавиатурных нажатий. Вместо управляющего разделителя GS он должен отправлять клавишу F8, а после полного кода — Enter.

Например, условный поток от сканера может выглядеть так:

010460123456789021ABC123[F8]91TEST[F8]92SIGNATURE[Enter]

O_F8.exe:

  1. перехватывает поток;
  2. сохраняет его во внутреннем буфере;
  3. ждёт завершающий Enter;
  4. определяет места, в которых сканер нажал F8;
  5. преобразует строку в соответствии с выбранным режимом;
  6. посимвольно вводит результат в активное поле;
  7. нажимает 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

Однако внутри строки разделители присутствуют.

Работа с буфером обмена

В режиме «ЧЗ Полный» программа временно:

  1. сохраняет текущее содержимое буфера обмена;
  2. помещает туда настоящий символ GS;
  3. вставляет GS в нужные места;
  4. восстанавливает прежнее содержимое буфера.

На время обработки скана лучше не выполнять копирование вручную. Буфер обмена в этот момент занят важным государственным делом — переносит один невидимый символ.


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 сканер должен:

  1. работать в режиме USB HID Keyboard, то есть определяться как обычная клавиатура;
  2. передавать клавишу F8 вместо разделителя GS;
  3. передавать Enter после полного кода;
  4. отправлять строку достаточно быстро, чтобы программа отличила сканирование от ручного ввода.

Пример требуемого потока:

часть кода → 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

Также можно:

  1. найти значок O_F8.exe в системном трее;
  2. нажать по нему правой кнопкой мыши;
  3. выбрать выход из программы.

Чтобы только временно отключить обработку, используйте F10.


Краткая инструкция

  1. Настройте сканер на замену GS клавишей F8.
  2. Настройте отправку Enter после кода.
  3. Запустите O_F8.exe.
  4. Выберите режим:
    • F2 — полный код с настоящим GS;
    • F3 — короткий код до первого F8;
    • F4 — полный код с \u001d для Ozon.
  5. Установите курсор в поле ввода.
  6. Отсканируйте Data Matrix.
  7. Дождитесь посимвольного ввода и автоматического 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 обычно не требуется.