Как программно распознать какой разделитель используется в DataMatrix GS1 коде: FNC1 или GS?
Столкнулся с проблемой распознавания DataMatrix кода ручным сканером.
Суть в том, что при генерации кода в качестве разделителя по стандарту может использоваться
- GS-разделитель (он же символ ASCII со значением байта 29, он же /x1d в качестве управляющего символа)
- FNC1 (функциональный знак, байт со значением 232, по хорошему он стоит в начале штрих-кода, чтобы тот был интерпретирован по правилам DataMatrix GS1, но может использоваться и как разделитель внутри кода)
Несмотря на то, что коды сгенерированные c разными разделителями визуально выглядят по-разному, сканером (как минимум моим HoneyWell 1450G или камерой Cognex 262) они обрабатываются одинаково, выдавая один и тот же байт-код. Тем не менее, при обработке кода (конкретно в этом случае речь идет о выбытии товара из оборота на кассе) сканер регистрирует неверный разделитель (верный GS, неверный - FNC1) и выдает ошибку.
Конкретный пример:
В двух этих штрих-кодах закодирован один и тот же текст:
0112345678909876214J!T3C93B23E
Здесь - с разделителем GS || Здесь - с разделителем FNC1
При получения данных по сканеру через COM-порт они выдают одинаковый результат:
30-31-31-32-33-34-35-36-37-38-39-30-39-38-37-36-32-31-34-4A-21-54-33-43-1D-39-33-42-32-33-45-0D
Где 1D и есть разделитель, что GS, что FNC1, строки одинаковые
Но при сканировании приложением Чекмарк он распознает их верно, по разделителям
Мне нужно разобраться как можно распознать с помощью обычного ручного сканера какой в коде используется разделитель, какой сигнал или какую строку от сканера для этого нужно получить?



