Можно , попробую.
Еще исправил код . Как только нашел код 119(w) , то сохраняю данные в другом буфере веса buf1, дальше пропускаю.
PROGRAM PLC_PRG
VAR
portReady:BOOL;
port:COMSETTINGS:=(Port:=COM1,dwBaudRate:=9600,byS topBits:=0,byParity:=1,dwBufferSize:=28);
buf:ARRAY[0..27]OF BYTE;(*данные из весов через RS232*)
buf1:ARRAY[0..7]OF BYTE;(*массив веса*)
i:INT:=0;
i1:INT:=0;
i3:INT:=0;(* индикатор наличия кода 119*)
END_VAR
IF portReady=FALSE THEN(* Сразу открываем и настраиваем порт *)
portReady:=TRUE;
SysComOpen(port.Port);
SysComSetSettings(port.Port,ADR(port));
ELSE(* Работаем с открытым портом *)
SysComRead(port.Port, ADR(buf),28,0);
END_IF
IF (i<=27)OR(i3=0) THEN
IF buf[i]=119 THEN
i3:=1;
FOR i1:=0 TO 7 DO
buf1[i1]:=buf[i+i1+2];
END_FOR
ELSE
i:=i+1;
END_IF
END_IF
i:=0;
i3:=0;
В общем ничего не меняется.
Последний раз редактировалось павелсиражев; 27.09.2021 в 11:17.
это в режиме 7 бит данных больше нет, а по факту все 256 символовНо в ASCII коде нет кодов больше 7F.
176 dec - символ градуса по таблице
Последний раз редактировалось Алексеев Савр; 28.09.2021 в 09:56.
Вот последний код чета индокитайщиной попахивает...
Вот тут почитайте по работе с SysComRead: https://owen.ru/forum/showthread.php?t=21306
Ну и еще можно поискать
Вооот тут почитать:- https://owen.ru/forum/showthread.php?t=22498
Последний раз редактировалось Sergey666; 27.09.2021 в 12:59.
В общем, проблема в том, что исходный массив- буфер из 28 байтов, принятый по RS232 от весов уже кривой! Нет нужных символов, точки с кодом 46, символов к и g, числа с кодом 48-57 разбросаны как попало. При весе строго 0.0 весы должны выдавать где нибудь такие данные: 119,110, 48,48,48,48,48,48,46,48,107,103,13,10 . Но этого нет, все хаотично. Я уже пробовал кабель экранированный и скорости менял. Все безрезультатно.
павелсиражев любым ПО на прослушку порта - что дает ?
............
Последний раз редактировалось Валенок; 25.10.2021 в 22:18.