Hallo xeus,
der spy hat dir wahrscheinlich nur ein Byte in zwei Repräsentationen raus geschrieben: 2
dezimal und dual. Es ist schon so wie Bernhard und Sharky sagen: Üblicherweise benutzt du Funktionen zum Versenden und Empfangen von ByteArrays. Du musst prüfen, ob dein Messgerät mit Binärcodes angesteuert wird, oder - wie z.B. ein HP Drucker - mit einer Mischung aus binären Steuerzeichen und
ASCII-kodiertem Text. Dann baust du dir deinen Puffer (ByteArray oder Record) auf und verschickst ihn. Wenn die Programmieranleitung des Messgerätes ein Kommando 85 (
dezimal) nennt, dann musst du es nur noch einer Bytevariablen zuweisen und die Übertragung geschieht dann schon korrekt. Hexadezimale Werte (55
hexadezimal) kannst du auch direkt (b := $55;) zuweisen. Binäre Darstellungen musst du erst
umwandeln:
Delphi-Quellcode:
function CardToDual(card: cardinal): string;
begin
Result := '';
repeat
Result := Chr(Ord('0') + Ord(Odd(card))) + Result;
card := card shr 1;
until card = 0;
end;
function DualToCard(dual: string): cardinal;
var
i: integer;
begin
Result := 0;
if Length(dual) > 8 * SizeOf(Result) then
Exit;
for i := 1 to Length(dual) do
Result := Result shl 1 + Ord(dual[i] <> '0');
end;
...
var
b: byte;
begin
b := DualToCard('01010101');
end;
Grüße vom marabu