Чтение штрих-кодов и магнитных носителей

При подключении к последовательному порту устройства чтения штрих-кода или магнитного носителя в проекте нужно создать COM-порт с назначением Card/Bar Reader (см. Редактор параметров COM-порта ).

В качестве шаблонов каналов чтения используются шаблоны UniversalPLC_type4 (группа Источники/Приемники / Пользовательские драйверы / TYPE11).

Атрибут Порт (93, C0) должен быть равен номеру COM-порта с назначением Card/Bar Reader.

Для чтения магнитного носителя атрибут Параметр4 (98, C5) должен быть равен 0, для чтения штрих-кода – отличен от 0.

Шаблон может быть привязан к числовому каналу, а также, если Параметр4 = 0 или 1, – к каналу CALL.ChGroupReq или CALL.TVC. Корректно сконфигурированный канал имеет подтип и дополнение к подтипу 105.0.

Если Параметр4 = 0 или 1 и шаблон привязан к числовому каналу, считанный код записывается как строка в атрибут (47, iDstr) канала (до 60 байт). В случае успешного считывания, значение канала изменяется в зависимости от атрибута Параметр1 (95, C2):

   если Параметр1 = 0 – увеличивается на 1;

   если Параметр1 = 1 – уменьшается на 1 (до 0);

   если Параметр1 = 2 – обнуляется;

   если Параметр1 = 3 – устанавливается в 1.

Если Параметр4 = 0 или 1 и шаблон привязан к каналу CALL.ChGroupReq или CALL.TVC, поля считанного кода последовательно записываются в аргументы канала (текущее поле записывается в аргумент с наименьшим номером после предварительного сдвига ранее записанных полей на один аргумент). Тип данных аргументов приема должен быть STRING (см. также Запись вектора в CALL.ChGroupReq и CALL.TVC ).

Если Параметр4 = 0x16…0x20, после считывания кода производится поиск всех каналов подтипа 105 с Параметр4 = 0x16…0x20, и при успешном считывании у таких каналов значение меняется в зависимости от атрибута Параметр1 (см. выше). Данные считываются, если удовлетворяются соответствующие условия; для всех перечисленных ниже случаев длина считываемого кода должна быть больше, чем Параметр2 (96, C3):

   Параметр4 = 0x16 – если в любом месте, начиная с байта, заданного C3, в коде обнаружена кодировка канала;

   Параметр4 = 0x17 – если кодировка канала располагается в коде с байта, заданного C3;

   Параметр4 = 0x18 – если кодировка канала располагается в коде с байта, заданного C3, и после кодировки код ничего не содержит;

   Параметр4 = 0x19 – если в любом месте кода обнаружена кодировка канала (только начиная с релиза 6.07);

   Параметр4 = 0x20 – если кодировка канала располагается в коде с байта, заданного C3, и в любом месте кода обнаружен комментарий канала (только начиная с релиза 6.07).

В случае считывания штрих-кода:

   если C5=0x3 (дополнительно установлен бит 1) – если реальная длина считанного кода не равна значению первых двух байтов этого кода, код не записывается в канал;

   если C5=0x5 (дополнительно установлен бит 2) – запись кода в канал зависит от атрибута (97, C4):

   C4=0 – код записывается в любом случае;

   C4<>0 – код записывается только в том случае, если значение его первого байта равно C4;

   если C5=0x9 (дополнительно установлен бит 3) – запись кода в канал зависит от атрибута (94, C1):

   C1=0 – код записывается в любом случае;

   C1=<ASCII-код символа> – код записывается только в том случае, если он начинается с заданного символа.

В C5 не рекомендуется устанавливать биты 1 и 2 одновременно с битом 3.

В случае считывания магнитного носителя:

   если бит 0 (0x1) C2 равен 0, считывается дорожка 1, в противном случае – дорожка 3.

Если установлен бит 1 (0x2) C2, дополнительно считывается дорожка 2 и записывается во вход канала. Дорожка 2 считывается до конца, если бит 4 (0x10) C2 не установлен, или до пробела, если бит 4 (0x10) C2 установлен.

Верификация дорожек по стандарту:

   дорожка 1 – начало – "%", конец – "?";

   дорожка 2 – начало – ";", конец – "?";

   дорожка 3 – начало – ";", конец – "?".

   если устройство отвечает, что кода нет, во вход канала пишется 0, а в атрибут (47, iDstr) – (NULL);

   если устройство сообщает об ошибке чтения, во вход канала пишется 1, в атрибут (47, iDstr) – (ERROR), и в канале устанавливается признак аппаратной недостоверности;

   если в канале установлен флаг Отладка (49, DBG), при успешном чтении кода в протокол профайлера (файл <имя файла prj>_<порядковый номер узла>.txt) записывается следующая строка:

TRACK=<считанный код>