Здравствуйте.
Есть такая проблема, при использовании UNM.lib происходит как будто периодическое смещение байтов при опросе или при записи байтов в переменную. По RS232 приходит сообщение состоящее из 14 байт, все читается, информация приходит правильная, но периодически происходит смещение. Должно приходить сообщение 77 6E 30 30 30 30 30 30 30 30 6B 67 0D 0A, но иногда байты записываются 6E 30 30 30 30 30 30 30 30 6B 67 0D 0A 77. Первые 2 байта всегда должны быть 77 6E, а последние два 0D 0A.
Может быть я не правильно обнуляю счетчик байтов? Пробовал обнулять его при помощи самых разных условий, пробовал менять строчки местами, изменял время цикла.

Чтение идет с весового терминала.

В конфигурации добавлен Universal Network Module. 8n1 9600.

Код программы:

qef:=LockDevice(0);


otvet_RB:=GetByte(0);

IF otvet_RB>0 THEN

IF p^=16#0A THEN count:=0;
END_IF;

IF count=1 THEN str0:=BYTE_TO_STRING(otvet[0]);
END_IF;
IF count=2 THEN str1:=BYTE_TO_STRING(otvet[1]);
END_IF;
IF count=3 THEN str2:=BYTE_TO_STRING(otvet[2]);
END_IF;
IF count=4 THEN str3:=BYTE_TO_STRING(otvet[3]);
END_IF;
IF count=5 THEN str0:=BYTE_TO_STRING(otvet[4]);
END_IF;
IF count=6 THEN str1:=BYTE_TO_STRING(otvet[5]);
END_IF;
IF count=7 THEN str2:=BYTE_TO_STRING(otvet[6]);
END_IF;
IF count=8 THEN str3:=BYTE_TO_STRING(otvet[7]);
END_IF;
IF count=9 THEN str0:=BYTE_TO_STRING(otvet[8]);
END_IF;
IF count=10 THEN str1:=BYTE_TO_STRING(otvet[9]);
END_IF;
IF count=11 THEN str2:=BYTE_TO_STRING(otvet[10]);
END_IF;
IF count=12 THEN str3:=BYTE_TO_STRING(otvet[11]);
END_IF;
IF count=13 THEN str2:=BYTE_TO_STRING(otvet[12]);
END_IF;
IF count=14 THEN str3:=BYTE_TO_STRING(otvet[13]);
END_IF;
p:=ADR(otvet)+count;
p^:=otvet_RB^.data;
count:=count+1;

END_IF