При подключении к последовательному порту устройства чтения штрих-кода или магнитного носителя в проекте нужно создать 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=<считанный код>