PDA

Просмотр полной версии : протокол тензо м syslibcom



Yerabdi
15.10.2020, 10:11
Здравствуйте всем для обмена данными с весовым прибором тензо м использовал библиотеку syslibcom.
Данные правильно отправляет но не правильно читает в массив otvet


byte_wryte:=SysComWrite(port_number, command, len_command, 5);

byte_read:=SysComRead(port_number, ADR(buf_otvet), 8, 0);

IF byte_read>0 THEN
FOR i:=0 TO byte_read DO
otvet[i]:=buf_otvet[i];
END_FOR
END_IF

Sulfur
15.10.2020, 10:54
Обычно на клавиатурах ставят клавиши Print Screen (PrtSc). Нажимаете её, потом открываете Paint, нажимаете Ctrl+V, далее при желании обрезаете до нужного размера, и сохраняете в формате PNG или JPG. После этих действий картинки, вставленные в пост, смотрятся гораздо лучше, чем фото экрана, сделанное на тапочек.

capzap
17.10.2020, 15:37
если за основу брался первый пример из этого раздела https://owen.ru/forum/showthread.php?t=13585
то не стоит игнорировать использование кейсов, в каждом цикле и писать и читать одновременно не получится

Yerabdi
18.10.2020, 17:54
если за основу брался первый пример из этого раздела https://owen.ru/forum/showthread.php?t=13585
то не стоит игнорировать использование кейсов, в каждом цикле и писать и читать одновременно не получится

Спасибо вам большое,разобрался что к чему нужно было сделать задержку после запроса delay=5mc. может кому то пригодится
CASE status OF

0:
T1;
byte_read:=SysComRead(port_number, ADR(buf_otvet), 16,0);
IF byte_read>0 THEN
FOR count1:=0 TO byte_read DO
otvet[count1]:=buf_otvet[count1+1];
END_FOR
END_IF
IF(T1.Q=TRUE AND T1.IN=TRUE )THEN

T1(IN:=FALSE, PT:=T#0s );
pr_byte:=otvet[2];
ves:=BCD_TO_INT(pr_byte);

CRC_R:=0;n:=0;
FOR n:=0 TO 6 DO
CRC_R:= Pre_CRC(otvet[n], CRC_R);
END_FOR
Resp_OK:= BYTE_TO_BOOL(SEL(CRC_R <> 0,1,0 ));
rez:=rez;
ready:=TRUE;
t_zapr(IN:=TRUE, PT:=t#100ms );
status:=2;
END_IF

1:
l:=0;
count1:=0;
byte_wryte:=SysComWrite(port_number, command, len_command,0);
IF byte_wryte=len_command THEN
T1(IN:=TRUE, PT:=delay );
ready:=FALSE;
END_IF;
status:=0;

2:
t_zapr;
IF t_zapr.Q=TRUE AND t_zapr.IN=TRUE THEN
status:=1;
t_zapr(IN:=FALSE, PT:=T#0s );
END_IF
END_CASE;
END_IF

capzap
18.10.2020, 18:05
этот код не то что не предлагать другим, его показывать не надо, кто же запускает таймеры внутри условия, которое срабатывает обычно раз в цикл

Yerabdi
24.10.2020, 08:24
этот код не то что не предлагать другим, его показывать не надо, кто же запускает таймеры внутри условия, которое срабатывает обычно раз в цикл

Вообще то пример с запуском таймера внутри условия взять с сайта овен,где приводится пример SysLibCom

Сергей_оскол
25.12.2023, 21:41
Вообще то пример с запуском таймера внутри условия взять с сайта овен, где приводится пример SysLibCom

Здраствуйте, а не могли бы в личку скинуть свой проект ,что вы сделали общаясь с весовыми терминалами тензо-м