И еще - непонятно почему бывают такие символы как $04z, $044. При переводе в 10 форму - бред какойто получается.
Сижу провожу тесты с весом.
Пока получил:
0кг:
!.2$10$10ь$1c$02$02
1кг:
!.2$10$N$10ь$14$03
1.3кг:
!.2$10$P$10ь$14$06$03
1.9кг:
!.2$10$13$10ь$14$19$03
4.0кг:
!.2$10($04$045$03
4.5кг:
!.2$10-$040$03
9.6кг:
!.2$10'$04$04}$03
10кг:
!.2$10d$04$04y$03
14.4кг:
!.2$10ђ$04$04Ќ$03
Все бы вроде ничего, но ђ,Ќ,ь,},( - к чему это вообще??
И как это расшифровывать. МУсором сложно назвать - почему каждый раз появляется?
aaa: pointer to byte;
bbb:string;
aaa:=ADR(bbb);
А лучше наоборот,
aaa:array [0...255] of byte;
pstring: pointer to string;
pstring:=adr(aaa);
и везде, где надо использовать STRING вставляете ^pstring;
$04 = 0x04
z=0x7A (http://ascii.org.ru/)
$044 = 0x44
Соответственно $04z$044 == 0х04 0х7A 0х44
Владислав, спасибо . Я кажется понял где именно передается вес.
Вес передается после символов !.2$10
Например
4.5кг:
!.2$10-$040$03
Вес = -, переводя по таблице - это 45
14.4кг:
!.2$10ђ$04$04Ќ$03
В это случае ђ - 144.
Точка я так понимаю впринципе не нужна, ибо она выставляется в приборе, и как я понимаю - поменяв настройки в приборе и поставив измерение без сотых - мы уберем и точку.
Интересно как он поведет себя после окончания 255 символов?
Например если вес будет 50 кг?
или 60?
А если 100?
А ведь надо аш до 2000.
И еще непонял до конца как расшифровывать символы которые до 32? Которые в ASCII зарезервированные получаются?
Они и показываются в Codesys как $xx, где xx - 2 цифры в HEX.
А лучше воспользуйтесь массивом байтов и забудьте о проблемах. Сразу всё будет расшифровано
Так все таки, как надо правильно воспользоваться массивом байтов, чтобы передаваемые данные сразу расшифровывались?
bytes:array [0..32] of byte ;
counter:int;
prbointer to RBDATA;
rb:=GetByte();
while (rb) do
bytes[counter]:=^rb.data;
counter +=1;
rb:=GetByte();
end_while
А потом + нажимаете в массиве