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