-
Вопрос по UNM.lib
Здравствуйте.
Есть такая проблема, при использовании 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
Метки этой темы
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума