Друзья, не могу открыть порт Rs485 для связи с ТРМ210.
COM_SERVICE_COM.Opened всегда false.
Ничего не получается, помогите, пожалуйста.
Вид для печати
Друзья, не могу открыть порт Rs485 для связи с ТРМ210.
COM_SERVICE_COM.Opened всегда false.
Ничего не получается, помогите, пожалуйста.
Добрый день. Попробуйте открыть порт именно так, как это демонстрируется в примере.
COM_SERVICE не выполняется синхронно - т.е. вы взводите свой RsComplete до того как порт фактически будет открыт. Можно ориентироваться на выход COM_SERVICE_COM.Ready, но лучше просто скопировать свой код из примера.
Ого, как долго открывается порт!..
Я правильно понимаю, что блок кода с инициализацией и открытием порта в примере будет выполняться каждый цикл программы? Это так и должно быть? Отвечаю сам себе - иначе вроде бы не работает (по крайней мере устал ждать). При инициализации порта сначалачерез полминуты поднимается Opened, далее через десяток секунд Ready.
Ого, какое короткое условие, чтоб сделать запрос, дождаться ответа и закрыть функцию
Какое у вас время цикла задачи, в которой вызывается этот код?Цитата:
При инициализации порта сначалачерез полминуты поднимается Opened, далее через десяток секунд Ready.
Время всего выполняемого в программе привязано к времени цикла. Поставьте 10 мс - и, думаю, все станет работать нормально.
как минимум делать Enable:=FALSE в теле условия TRM_GetReal.Complete
Спасибо!
Приведу рабочий кусок кода здесь:
IF TRM_GetReal.Complete AND TRM_GetReal.Error=0 THEN
T:=TRM_GetReal.Value; // ...и ошибки отсутствуют, то забираем считанное значение
TRM_GetReal(Enable:=FALSE); // завершаем работу блока
END_IF
По примеру из руководства программа не работала, там TRM_GetReal(Enable:=FALSE) после проверки.