Всем привет!
Пытаюсь принять данные в порт по 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





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