8.х Как организовать постоянный запрос внешнего оборудования

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Ktyf, 28 окт 2015.

  1. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Ситуация на данный момент: к компу присоединены весы, 1с читает данные из них через vk_rs232.dll.
    Код:
    rs232_1 = Новый ("AddIn.Весы.vk_rs232"); 
        Попытка   
            rs232_1.ОткрытьПорт("COM4");  //Весы1
            rs232_1.СтоповыеБиты=1;
            rs232_1.Четность=0;
            ВесыПодключены = Истина;
        Исключение
            ВесыПодключены = Ложь;
        КонецПопытки;
    Но запрашивает из по отдельной команде. Т.е нажали кнопку, сформировался запрос
    Код:
    rs232_1.ЗаписатьСтроку(hex(КодСимвола("S"))+" "+hex(КодСимвола("I"))+" "+hex(13)+" "+hex(10));    
    а потом уже обрабатываю во ВнешнемСобытии формы, то что получила в ответ.
    А теперь надо чтобы обработка сама, 1 раз в сек опрашивала бы весы. Я так думаю, что это могло бы делать фоновое задание, но придет ли ответ в форму обработки?
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    нет, нужно в модуле формы сделать ПодключитьОбработчикОжидания().
    Форма будет "замирать" с указанной периодичностью.

    Если делать фоновым заданием, то результат работы фонового задания необходимо хранить в каком-то общем ресурсе, возвращать результат фоновые задания не умеют, т.к. метод фонового задания может быть исключительно процедурой.

    Фоновым заданием скорее всего не получится из-за технических ограничений, т.к. код выполняется на стороне сервера, который физически может находится на другой стороне земного шара, в бункере, глубоко под землей и знать ничего не знает про устройство COM4 на машине клиентской части ПО 1С.
    Последнее редактирование: 28 окт 2015
  3. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Т.е. в блоке основного кода просто пишем
    Код:
    ПодключитьОбработчикОжидания("ПолучитьВес",10,ложь)
    И соответственно у нас есть процедура, которая собственно и отправляет запрос к весам.
    Код:
    &НаКлиенте
    Процедура ПолучитьВес()
                        
        Если НЕ ВесыПодключены Тогда
            Возврат;
        КонецЕсли;
        rs232_1.ЗаписатьСтроку(hex(КодСимвола("S"))+" "+hex(КодСимвола("I"))+" "+hex(13)+" "+hex(10));       
       
    КонецПроцедуры
    
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Угу, в первом приближении - так.
  5. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Спасибо.
  6. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Да, все работает. Только обработчикОжидания включается не в общем блоке, а ПриОткрытии на клиенте.

Поделиться этой страницей