
Сообщение от
Филоненко Владислав
Всегда ответ надо читать по 1 байту и сразу анализировать. Ожидать что пришли все байты и только нужное количество байт нельзя. По 1 байту считываем, каждый анализируем на корректность и принимаем решение о конце пачки/бракованной пачке.
Пример с таким чтением в 2 приёма я проверю, но не скоро.
Так точно. Но почему тогда именно чтение по 1 байт на ПЛК63 глючит.
Чтение по 1 байту можно же считать частным случаем чтением двумя блоками.
Заменя
Код:
byte_read:=SysComRead(port_number, ADR(buf_otvet), 8, 0);
на
Код:
byte_read:=SysComRead(port_number, ADR(buf_otvet[ 0 ]), 1, 0);
byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 1 ] ), 1, 0);
byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 2 ] ), 1, 0);
byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 3 ] ), 1, 0);
byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 4 ] ), 1, 0);
byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 5 ] ), 1, 0);
byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 6 ] ), 1, 0);
byte_read:= byte_read + SysComRead(port_number, ADR( buf_otvet[ 7 ] ), 1, 0);
приводит к ошибкам, про которые я говорил