ZySerialPort componentini kullanarak cihazın gönderdiği veriyi
ASCII
Decimal
Hexa
türünde alıyorum.Ama bu veriyi stringe nasıl çeviririm.Daha önce port üzerinde çalışmadım.
Nereden başlayacağım konusunda bi tavsiyede bulunur musunuz?
ASCII olarak gelen veriyi Ord komutuyla çevirmeye çalıştım
Ama göreceğiniz üzere rakamsal bir ifade olmadığı için çeviremedim.
Aşağıda gelen verileri Char olarak mı çevirmeliyim.
Normalde Kullanıcın göreceği bilgi:
Fe 12,65
Al 8,55
...
...
Gelen veri ASCII olarak:
Kod: Tümünü seç
‚°±³®¶
°±²®³ °±²®µ °°°®° °±²®³ °±±®·
°±±®¶ °±¸®± °±¶®³ °±³®± °±±®³
°°·®³ °±°®· °°¹®µ °±±®³ °±°®³
°±°®µ °°·®· °±´®² °±°®¹Š
Kod: Tümünü seç
130
17617717917418116017617717817
41771601761771781741811601761
76176174176160
17617717817417916017617717717
41831601761771771741811601761
77184174177160176177182174178
160
17617717917417716017617717717
41791601761761831741791601761
77176174183160176176185174181
160
17617717717417816017617717617
41791601761771761741811601761
76183174183160176177180174177
160
176177176174185141138
Kod: Tümünü seç
82
B0B1B3AEB5A0B0B1B2AEB1A0B0B
1B2AEB5A0
B0B0B0AEB0A0B0B1B2AEB2A0B0B
1B1AEB5A0B0B1B1AEB5A0B0B1B7
AEB9A0
B0B1B6AEB1A0B0B1B2AEB9A0B0B
1B1AEB1A0B0B0B7AEB2A0B0B1B0
AEB5A0
B0B0B9AEB3A0B0B1B1AEB1A0B0B
1B0AEB2A0B0B1B0AEB5A0B0B0B7
AEB6A0
B0B1B4AEB1A0B0B1B0AEB78D8A
Kod: Tümünü seç
procedure TMainForm.ZylSerialPortReceive(Sender: TObject; Buffer: AnsiString);
var
strBuffer: AnsiString;
i: Integer;
begin
if rgMode.ItemIndex = 0 then //ASCII olarak
Memo.Lines.Add(ZylSerialPort.ReplaceControlChars(Buffer))
else if rgMode.ItemIndex = 1 then //Decimal olarak
begin
strBuffer := '';
for i := 1 to Length(Buffer) do
strBuffer := strBuffer + IntToStr(Ord(Buffer[i]));
Memo.Lines.Add(strBuffer)
end
else
begin //Hexa olarak
strBuffer := '';
for i := 1 to Length(Buffer) do
strBuffer := strBuffer + IntToHex(Ord(Buffer[i]), 1);
Memo.Lines.Add(strBuffer)
end;
end;