Попытался вывести данные из компорта с помощью библитеки syslibcom. В контроллере видно что порт открыт и вроде бы что то туда передает но в cmd я этого не вижу. Использовал команды type com1>CON; type com1>output_file; type com1>output_file.txt. Но ничего не выводит в ответ на эти команды.
Код:
(* Пример выдает в интерфейс RS-485 каждую секунду строку "TEST1"
Настройка порта 9600, 7бит, нет четности, один стоп бит *)
PROGRAM PLC_PRG
VAR
port_opened: BOOL := FALSE;
com_handle: DWORD;
com_num: PORTS:=0;
com_set: COMSETTINGS;
com_setEx: COMSETTINGSEX;
res: BOOL;
tOn1:TON;
start_tmr:BOOL:=FALSE;
tr1:R_TRIG;
snd_str: STRING:='TEST1$N';
port_init: BOOL;
rcvbuf:ARRAY [0..1023] OF BYTE;
sz:DWORD;
END_VAR
(*Открываем порт*)
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:=115200;
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
*)
com_setEx.Size:=SIZEOF(com_setEx);
com_setEx.Port:=com_num;
com_setEx.dwBaudRate:=9600;
com_setEx.byStopBits:=0;
(*
byStopBits:BYTE; Кол-во стоповых бит 0 =один, 1=полтора , 2=два
*)
com_setEx.byParity:=0;
(*
byParity:BYTE; Режим проверки четности 0 = нет, 1 = нечет, 2 = чет
*)
com_setEx.dwTimeout:=0;(*
DWORD; Не используется должно быть =0
*)
com_setEx.dwBufferSize:=0;
(*DWORD; Не используется должно быть =0
*)
com_setEx.dwScan:=0;(*DWORD; Не используется должно быть =0
*)
com_setEx.cByteSize :=7;
(* BYTE; Длина символа в битах 5-8 бит.
*)
(*
fOutxCtsFlow : BOOL; Определяет состояние вывода CTS в PLC-100 не распаян
fDtrControl : BYTE; Определяет состояние вывода DTR в PLC-100 не распаян
fDsrSensitivity : BOOL; Определяет чувствительность к состоянию вывода DTR в PLC-
100 не распаян
f RtsControl : BYTE; Определяет состояние вывода RTS в PLC-100 не распаян
fOutxDsrFlow : BOOL; Определяет состояние вывода DSR в PLC-100 не распаян
*)
res:=SysComSetSettingsEx(com_num,ADR(com_setEx));
(*Успешно открыли*)
IF NOT res THEN
port_opened:=TRUE;
END_IF
END_IF
IF NOT port_opened THEN
RETURN;
END_IF
ton1(In:=start_tmr,pt:=t#1s);
start_tmr:=TRUE;
tr1(clk:=ton1.Q);
IF tr1.Q THEN
SysComWrite(com_num,ADR(snd_str),LEN(snd_str),0);
start_tmr:=FALSE;
END_IF
sz:=SysComRead(com_num,ADR(rcvBUF),1024,0);