Работа с терминалами сбора данных (ТСД) CipherLab, особенно популярных серий 8000, 8300 и 8001 с прошивкой от компании «Сканкод», часто сопровождается специфической проблемой. При попытке выгрузить данные в документ 1С система выдает ошибку «Нет связи», хотя тест устройства в настройках драйвера проходит успешно. Рассмотрим детально, почему это происходит и как стабилизировать работу оборудования.
Первым делом проанализируем настройки самого драйвера ТСД внутри интерфейса 1С. Часто программный интерфейс считает, что порт занят или устройство не отвечает, из-за слишком коротких пауз между запросами. Разберем шаги по настройке драйвера:
Поскольку большинство подставок CipherLab подключаются через USB-интерфейс с эмуляцией COM-порта, стабильность связи напрямую зависит от настроек операционной системы. Разберем, как правильно настроить виртуальный порт.
Откроем Диспетчер устройств Windows и найдем раздел «Порты (COM и LPT)». Выберем порт, к которому подключен ТСД (обычно это Silicon Labs CP210x или Prolific), и зайдем в его свойства. На вкладке «Параметры порта» нажмем кнопку «Дополнительно».
Здесь нас интересуют настройки FIFO (First In, First Out). Это буферы приема и передачи данных. В некоторых случаях высокая производительность буферов мешает корректной работе старых протоколов обмена CipherLab. Попробуем два варианта:
Также крайне важно отключить энергосбережение. В свойствах USB-концентраторов (в том же Диспетчере устройств) и в свойствах самого COM-порта на вкладке «Управление электропитанием» необходимо снять галочку «Разрешить отключение этого устройства для экономии энергии». Windows может кратковременно отключать питание порта в моменты микропростоев, что обрывает связь 1С с драйвером.
Одной из скрытых причин обрыва связи является высокая скорость передачи при нестабильном сигнале ИК-порта. Рассмотрим ситуацию: в ТСД установлена скорость 115200, в драйвере 1С — такая же, но из-за пыли на датчиках или яркого света возникают ошибки контрольных сумм. Выясним, как это исправить.
Проанализируем настройки скорости в трех местах (они должны быть строго одинаковыми):
System Menu -> Settings -> Interface -> RS232 -> Baud Rate).Speed или BaudRate.Если на скорости 115200 связь периодически обрывается, попробуем понизить скорость до 57600 или 38400. Это значительно повышает помехоустойчивость канала связи, а разница в скорости выгрузки небольших справочников будет практически незаметна.
Иногда проблема кроется в том, как именно 1С обращается к драйверу. Если используется монопольный доступ к порту, никакое другое приложение (даже утилита тестирования от Сканкода) не должно быть запущено одновременно с 1С.
Рассмотрим пример логики, которую стоит проверить в коде обработки выгрузки. Если вы используете объект драйвера напрямую, убедитесь, что перед началом обмена порт гарантированно открывается, а после — закрывается. Посмотрим на упрощенную схему взаимодействия:
// Пример инициализации связи
Результат = ОбъектДрайвера.Подключить();
Если Результат <> 0 Тогда
// Если порт занят, пробуем принудительно восстановить связь
ОбъектДрайвера.УстановитьПараметр("ForceReset", 1);
Результат = ОбъектДрайвера.Подключить();
КонецЕсли;
// Установка параметров обмена
ОбъектДрайвера.УстановитьПараметр("BaudRate", 57600);
ОбъектДрайвера.УстановитьПараметр("Timeout", 2000);
// Загрузка данных
Попытка
ОбъектДрайвера.ОчиститьДанные();
ОбъектДрайвера.Загрузить();
Исключение
Сообщить("Ошибка обмена: " + ОписаниеОшибки());
КонецПопытки;
ОбъектДрайвера.Отключить();
Использование метода Отключить() (или Disconnect) в конце процедуры выгрузки обязательно. Если 1С аварийно завершит работу, порт останется заблокированным, и при следующем запуске вы получите ошибку «Нет связи».
Поскольку передача данных в CipherLab 8000/8001 осуществляется через ИК-порт, проанализируем условия, в которых стоит подставка.
Засветка: Прямые солнечные лучи или мощные люминесцентные лампы, направленные на подставку, создают «шум» в ИК-диапазоне. Попробуем переставить подставку в затененное место.
Загрязнение контактов: Хотя данные передаются по воздуху, питание подставка получает через контакты. Если они окислились или загрязнены, могут происходить скачки напряжения, приводящие к перезагрузке контроллера связи в подставке. Рекомендуется регулярно протирать контакты на ТСД и подставке спиртовым раствором.
Память устройства: При длительной эксплуатации без полной очистки память ТСД может фрагментироваться. Проанализируем состояние памяти через меню терминала. Если ошибок много, выполним форматирование памяти данных (System Menu -> Memory -> Format Data Memory) и заново загрузим задачу (файл .vx или .fmx) через утилиту Generator.
Соблюдение этих шагов — от настройки таймаутов до контроля чистоты контактов — позволяет полностью устранить проблему «плавающей» связи с терминалами CipherLab.