Вроде в тему. Попробую прояснить для себя кое-что.
Код:
IF port_opened=0 THEN
Settings.Port:=com_num;
Settings.dwBaudRate:=115200;
Settings.byParity:=0;
Settings.dwTimeout:=0;
Settings.byStopBits:=0;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;
END_IF
COM_SERVICE1(Enable:=(port_opened=0) , Settings:=Settings , Task:=OPEN_TSK );
IF COM_SERVICE1.ready THEN
port_opened:=2;
END_IF
Вот это отлично открывает и настраивает порт. Потом проверяю с помощью эмулятора slave modbus на ПК. Обмен идет все хорошо. Это с библиотекой Modbus.lib.
А вот такая штука с библиотекой syslibcom.
Код:
IF NOT port_opened THEN
com_handle:=SysComOpen(com_num);
IF com_handle<>16#FFFFFFFF THEN
port_init:=TRUE;
ELSE
SysComClose( com_num);
com_handle:=SysComOpen( com_num);
port_init:=TRUE;
END_IF
com_set.Port:=com_num;
com_set.dwBaudRate:=9600;
com_set.byParity:=0;
com_set.dwTimeout:=0;
com_set.byStopBits:=0; (* *)
com_set.dwBufferSize:=0;
com_set.dwScan:=0;
res:=SysComSetSettings(com_num,ADR(com_set));
IF NOT res THEN
port_opened:=TRUE;
END_IF
В общем получается так. Порт всегда уже открыт. Но он закрывается, а потом открывается (handle=1 вернулся нормально). А вот настроить порт все не удается. TRUE не возвращается. Проверка та же что и в первом случае с помощью эмулятора - результат ноль. Ошибка явно глупая, но какая?