Всем привет!
Пытаюсь принять данные в порт по RS232. Данные шлю с ПК средствами терминала. Лампочка порта моргает. Пробовал разные настройки и варианты кода, но хоть бы байт в буфере
Передача работает чётко.
Буду благодарен если поделитесь опытом.
Вот код одной попытки.
Код:
IF port_opened=0 THEN
Settings.sPort:=3; (* номер COM-порта 2 – Порт1, 3 - Порт2, 4 - Порт3, 5 - Порт4 *)
Settings.ulBaudrate:=9600;
Settings.byParity:=0;
Settings.ulTimeout:=0;
Settings.byStopBits:=0;
Settings.ulBufferSize:=256;
END_IF
(*Открываем COM-порт*)
COM_SERVICE1(Enable:=(port_opened=0), Settings:=Settings ,
Task:=OPEN_TSK );
(*Если COM-порт открыт, то переходим к приему и передаче
данных *)
IF COM_SERVICE1.ready THEN
port_opened:=2;
//------------------Приём--------------------------------
readByte:=ComSerice.SysComRead(COM_SERVICE1.handle,ADR(readBuffer[0]),8,250,0);
IF readByte>0 THEN
i:=0;
WHILE readByte>0 DO
receivedData[i]:=readBuffer[i];
readByte:=readByte-1;
i:=i+1;
END_WHILE
END_IF
//--------------Отправка----------------------------------
IF b_SendCommand=TRUE THEN
sendBuffer[0]:=48;
sendBuffer[1]:=49;
sendBuffer[2]:=50;
sendBuffer[3]:=51;
sendBuffer[4]:=52;
sendBuffer[5]:=53;
sendBuffer[6]:=54;
sendBuffer[7]:=55;
sendByte:=ComSerice.SysComWrite(COM_SERVICE1.handle,ADR(sendBuffer[0]),8,50,0);
//-------------------------------------------------------
b_SendCommand:=FALSE;
END_IF
END_IF
//------------------таймер 1с на отправку----------------
SendPeriod(IN:=b_timerIN , PT:=T#1S , Q=>b_timerOUT , ET=>estTime );
IF b_timerIN=FALSE THEN
b_timerIN:=TRUE;
END_IF
IF b_timerOUT=TRUE THEN
b_timerIN:=FALSE;
b_SendCommand:=TRUE;
END_IF