8.х ОБМЕН получение данных через виртуальный ком порт

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем Александр 1906, 11 июл 2016.

  1. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    Добрый день решил познакомить 1С и Arduino, стоит такая задача что бы данные с RFID метки записывались в 1с , решил сделать при помощи считывателя RC522 и Arduino, сначала просто попробовал отправить команду на ардуино с 1с и получить ответ все получилось для этого на кнопку повесил вот этот код:
    Код:
    Команда = 1; // 1- для реле, 2- для датчика расстояния
    модемЗ = Новый ЗаписьТекста("\\.\Com8", КодировкаТекста.ANSI);
    модемЗ.ЗаписатьСтроку(Команда + Символы.ПС);
    модемЗ.Закрыть();
    
    модемЗ.Закрыть();
        МодемЧ= Новый ЧтениеТекста();
    МодемЧ.Открыть("\\.\Com8", КодировкаТекста.UTF8);
    
    // важный момент, если вместо ответа выполучаете "", Неопределено — это значит ком порт не успевает
    // после открытия записать получанные данные в буфер, поэтому делаем в этом месте небольшую задержку
    // 15 миллисекунд хватит. Раскомментировать следующие 3 строчки в случае проблемы
    // т = ТекущаяУниверсальнаяДатаВМиллисекундах() + 15; // Задержка 15 миллисекунд
    // Пока т > ТекущаяУниверсальнаяДатаВМиллисекундах() Цикл // Все супер-пупер проффи с чрезвычайно прямыми руками
    // КонецЦИкла; // идут лесом!!! и нечего срать в комментариях коль по делу сказать нечего
    
    Ответ= МодемЧ.ПрочитатьСтроку();// Читаем буфер ком порта
    Результат=Ответ;
    модемЧ.Закрыть();
    
    но здесь происходит все по действию кнопки , а как сделать что бы 1с постоянно ждала от сom порта данных и как только они туда попадали сразу же считывала их от туда т.е коснулся меткой считывателя данные считались отправились в порт а от туда в 1с
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Подключить обработчик ожидания ?
  3. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    его самому писать или есть готовый ?
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Глобальный контекст (Global context)
    ПодключитьОбработчикОжидания (AttachIdleHandler)
    Синтаксис:

    ПодключитьОбработчикОжидания(<ИмяПроцедуры>, <Интервал>, <Однократно>)
    Параметры:

    <ИмяПроцедуры> (обязательный)

    Тип: Строка.
    Имя экспортируемой процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля.
    Процедура должна располагаться на клиенте.
    Процедура не должна содержать параметров.
    <Интервал> (обязательный)

    Тип: Число.
    Интервал времени в секундах с точностью до 1/10 секунды, через который будет осуществляться вызов процедуры (положительное число).
    Если указано значение меньше 1, то значение третьего параметра должно быть равно Истина.
    <Однократно> (необязательный)

    Тип: Булево.
    Признак однократного выполнения обработчика ожидания.
    Истина - указанный обработчик ожидания будет выполнен один раз.
    Значение по умолчанию: Ложь.
    Описание:

    Подключает вызов указанной процедуры модуля управляемого приложения (модуля обычного приложения) или глобального общего модуля через определенный интервал времени. Вызов будет осуществляться только в "состоянии покоя", то есть в тот момент, когда программа не выполняет никаких действий.
    Во время временной блокировки, вызванной методом ЗаблокироватьРаботуПользователя или соответствующей командой "Временная блокировка", обработчики ожидания не выполняются.
  5. TopicStarter Overlay
    Александр 1906
    Offline

    Александр 1906 Опытный в 1С

    Регистрация:
    25 июн 2015
    Сообщения:
    351
    Симпатии:
    3
    Баллы:
    29
    Ребят я заранее извиняюсь за может быть глупые вопросы, я например в процедуре "ПриОткрытии " подключаю ОбработчикОжидания и он через интервал проверяет наличие данных в буфере порта, это конечно вариант но думаю будет проблема что данные в буфер будут записываться быстрее чем обработчик будет и считывать, буду пробовать
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Ну если интервал подобрать +- пару секунд, то, думаю, ничего страшного не будет :)
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Вы пытаетесь натянуть ужа на глобус.

    Работа 1С с COM-портом в реальном времени - вообще не входит в набор возможностей 1С......либо решайте задачу с помощью других инструментов, либо задача является не реализуемой средствами 1С.

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