Хочу получить с контроллера на пк определённую информацию, использую библиотеку 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




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