Попытался вывести данные из компорта с помощью библитеки 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);




Ответить с цитированием