Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Чтение данных c весов на сервере          
MrIgor Подменю пользователя
сообщение 03.03.20, 10:41
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 14
Из: Харьков
Спасибо сказали: 1 раз
Рейтинг: 0

Добрый день.
Задача: к компьютеру будут подключены весы (кол-во весов не известно). Подключение через com-порты. Необходимо считывать показания весов и записывать в базу. Запись должна вестись в автоматическом режиме без участия пользователей.

Реализовал запись через регламентные задания.
Регламентное задание срабатывает каждые 5 секунд.
База серверная.
Все срабатывает. Но в момент
ПринятыеДанные = ComPort.Input

в переменную ПринятыеДанные данные не попадают. Хотя если поставить точку остановки и глянуть на ComPort.Input - то данные там есть. Причем данные в ComPort.Input меняются "он-лайн" (то-есть если программа остановлена на этой строчке, то при каждом наведении мышки будут показываться разные данные).
Как отловить эти данные? Может сталкивался кто?

andr_andrey Подменю пользователя
сообщение 03.03.20, 17:06
Сообщение #2

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 626
Спасибо сказали: 166 раз
Рейтинг: 130.8

MrIgor @ Сегодня, 10:41 * ,
Как вы определяете, что данные не попадают?


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

McTSIMCO Подменю пользователя
сообщение 03.03.20, 17:51
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 16
Из: Киев
Спасибо сказали: 7 раз
Рейтинг: 0

Попытался себе представить как регламентное задание на сервере читает ком-порт клиента.
Признаться, ниасилил.

MrIgor Подменю пользователя
сообщение 03.03.20, 23:03
Сообщение #4

Общительный
**
Группа: Пользователи
Сообщений: 14
Из: Харьков
Спасибо сказали: 1 раз
Рейтинг: 0

McTSIMCO @ Сегодня, 17:51 * ,
регламентное задание читает com-порт сервера. Оборудование подключено к компьютеру, который является сервером 1С

andr_andrey @ Сегодня, 17:06 * ,
Вот так


Сообщение отредактировал Vofka - 03.03.20, 23:21

andr_andrey Подменю пользователя
сообщение 04.03.20, 16:12
Сообщение #5

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 626
Спасибо сказали: 166 раз
Рейтинг: 130.8

MrIgor @ Вчера, 23:03 * ,
Уберите строку ПринятаяПосылка = ""


Signature
#define private public
enum BOOL { FALSE, TRUE, FILENOTFOUND } is made my day

MrIgor Подменю пользователя
сообщение 06.03.20, 8:04
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 14
Из: Харьков
Спасибо сказали: 1 раз
Рейтинг: 0

andr_andrey @ 04.03.20, 16:12 * ,
Спасибо за вариант, но это не помогло.

Работают 2 варианта (они, в принципе идентичны по смыслу):
1. Используется свойство библиотеки mscomm InBufferCount
ПринятаяПосылка = "";
// Wait until 10 bytes are in the input buffer
Пока  ComPort.InBufferCount < 200 Цикл
КонецЦикла;
ПринятаяПосылка = ComPort.Input;

2. Использую искусственную паузу
ПринятаяПосылка = "";
ОбщегоНазначенияВызовСервера.Подождать(2); // выполняется пауза на указанное к-во секунд
ПринятаяПосылка = ComPort.Input;

Вообщем, проблему считаю решенной, т.к. результат получен smile.gif
Хотя мне так и осталось неясно почему этот же функционал, выполняемый "на клиенте", работает без вставляемых пауз или циклов по ожиданию буфера.

Все спасибо за помощь!

Спасибо сказали: Vofka,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 12:53
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!