Хочу получить с контроллера на пк определённую информацию, использую библиотеку syslibcom. Информацию получить удалось но она неверная. Например отсылаю (_1234567890_), а получаю (_123451234_125...). Как отдавать информацию в верном порядке?
Код:
PROGRAM PLC_PRG
VAR
com_num: PORTS; (*Номер порта*)
Settings: COMSETTINGS; (*Параметры порта*)
COM_SERVICE1: COM_SERVICE; (*Блок открытия и настройки порта*)
com_ready: BOOL; (*Переменная, разрешающая обмены*)
i: INT;
port_open:DWORD;
str:STRING[255];
str_dword:DWORD;
END_VAR
(*******************************************************
Открываем порт RS-485
*******************************************************)
IF COM_SERVICE1.ready=FALSE THEN
(*
Номер порта (com_number):
0 - RS-485
1 - RS-232
4 - RS-232 DEBUG
*)
com_num:=0;
(*
Настройки порта (com_settings):
byParity - Режим проверки четности 0 = нет, 1 = нечет, 2 = чет
byStopBits - Кол-во стоповых бит 0 =один, 1=полтора , 2=два
dwBaudRate - Скорость обмена 4800, 9600, 19200, 38400, 57600, 115200 бит/с.
dwBufferSize - Не используется должно быть =0
dwScan - Не используется должно быть =0
dwTimeout - Не используется должно быть =0
Port - Номер порта в формате перечисления PORTS (com_number)
*)
Settings.Port:=com_num;
Settings.dwBaudRate:=115200;
Settings.byParity:=2;
Settings.dwTimeout:=0;
Settings.byStopBits:=0;
Settings.dwBufferSize:=0;
Settings.dwScan:=0;
(*
Настройка и открытие порта (COM_SERVICE)
Пока на выходе Ready не будет сигнал TRUE, стучимся в порт
Порт открывается с настройками, указанными в com_settings,
а на вход Task подаются следующие значения:
0 - Открытие и настройка порта в соответствии с настройками в структуре Settings
1 - Изменение настроек уже открытого порта на настройки указанные в Settings
2 - Закрытие порта, номер порта берется из Settings.Port
*)
COM_SERVICE1(Enable:=TRUE , Settings:=Settings , Task:=OPEN_TSK );
com_ready:=FALSE;
ELSE
COM_SERVICE1.Enable:=FALSE;
com_ready:=TRUE;
END_IF
IF com_ready=TRUE THEN
(*Порт открыт и инициализирован, теперь можно работать с портом*)
i:=i+1;
str:='_1234567890_';
str_dword:=SysComWrite(com_num,ADR(str), LEN(str), 0 );
END_IF