PDA

Просмотр полной версии : Проблема! SysLibCom и модуль Модема



Jeck
06.10.2009, 16:57
В ходе реализации диспетчерского контроля столкнулся с еще одной проблемой. Подключаю в конфигурации модуль модема, работает, опрос идет. По "ходу пьесы" возникает потребность отослать **** открываю порт, посылаю **** все отлично, закрываю порт. Но... походу модуль модема обратно порт не подбирает, опрос не идет, набор не происходит, Modem Fault = 1, опрос модема командой ATI не происходит. как быть?
ПЛК100-220РМ, прошивка 2,10,7
проект для проверки SysComClose в архиве

Филоненко Владислав
07.10.2009, 13:05
Вот для этих случаев и существует библиотека UNM.lib, которую необходимо использовать ВМЕСТО SysLibCom.lib

Малышев Олег
07.10.2009, 13:24
Можно и параллельно - отключить порт через UNM, послать SMS через SysLibCom, включить порт через UNM

Малышев Олег
07.10.2009, 15:03
Нет не получится, при закрытии порта SysComClose в отличие от RelaseDevice не возвращает управление в обработчик по умолчанию. Типа фича.
Придется UNM пользовать пока.

Jeck
08.10.2009, 01:33
Филоненко Владислав и Малышев Олег, спасибо! с UNM все работает. а почему бы ОВЕНУ не распространять пример sms_send_example.pro сразу на библиотеке UNM.lib? это же более логично!

зы может быть и для этого вопроса (http://www.owen.ru/forum/showthread.php?t=6104) найдется решение? А то как-то повис вопрос….

зыы для тех кто пойдет по моему пути и наступит на те же грабли вот кусок кода, которым легко заменяется -
sz:=SysComRead(com_num,ADR(rcvBUF),1024,0);
________________

VAR
rb:POINTER TO RBDATA;
END_VAR
(*заполняем буфер*)
rb:=GetByte(0);
sz:=0;
WHILE (rb<>0) DO
rcvBUF[sz]:=rb^.data;
sz:=sz+1;
rb:=GetByte(0);
END_WHILE;