S.A.
Temel olarak sorunum seriporttan gelen byte dizilerini okurken 0x00 ları alamıyorum.
(string olarak okuyup byte dizisini çevirdiğimde de 0x00 ları alamıyorum)
C# da seriport nesnesini koyup byte dizisi olarak okuttuğumda 0x00 lar da geliyor veya hercules programında seri portu dinlediğimde 0x00 alabiliyorum
Örnek
normalde okunan--->{55}{A0}{00}{74}{3D}{73}{04}{43}{52}{43}{ED}{74}
delphide okunana--->{55}{A0}{74}{3D}{73}{04}{43}{52}{43}{ED}{74}
NOT:
Delphi 7 kullanıyorum iki farklı component kurdum biri Cport diğeri eskiden beri string işlemlerinde kullandığım Xcomdrv
Herkese iyi çalışmalar
seriport (rs232) byte dizisi okuma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: seriport (rs232) byte dizisi okuma
Şu şekilde çözüm buldum belki başka arkadaşlara lazım olabilir.
formun içerisinde APRO componenti buldum ve form da bulduğum verilerle
Okuma kısmı
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var LastCount,I,j : integer;
TempSonOkunanKilo:integer;
sTemp:string;
begin
//gelen:='';
LastCount:= Count;
mmo1.Lines.Add(inttostr(count));
for I := 1 to LastCount do
begin
cRcvBuffer[CharCntReceived]:= ApdComPort1.GetChar;
gelen:=gelen+IntToHex(Ord(cRcvBuffer[CharCntReceived]), 2);
inc(CharCntReceived);
end;
for j:=0 to 29 do cRcvBuffer[j]:= #0;
mmo1.Lines.Add(gelen);
gelen:='';
end;
Gönderme Kısmı
button click olayına
ApdComPort1.PutChar(chr($55));
ApdComPort1.PutChar(chr($10));
ApdComPort1.PutChar(chr($FF));
ApdComPort1.PutChar(chr($FF));
ApdComPort1.PutChar(chr($FF));
ApdComPort1.PutChar(chr($FF));
ApdComPort1.PutChar(chr($00));
ApdComPort1.PutChar(chr($00));
Herkese iyi çalışmalar
Formda Emeği geçen herkese teşekkür ederim
(Allah yollarını açık etsin)
formun içerisinde APRO componenti buldum ve form da bulduğum verilerle
Okuma kısmı
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var LastCount,I,j : integer;
TempSonOkunanKilo:integer;
sTemp:string;
begin
//gelen:='';
LastCount:= Count;
mmo1.Lines.Add(inttostr(count));
for I := 1 to LastCount do
begin
cRcvBuffer[CharCntReceived]:= ApdComPort1.GetChar;
gelen:=gelen+IntToHex(Ord(cRcvBuffer[CharCntReceived]), 2);
inc(CharCntReceived);
end;
for j:=0 to 29 do cRcvBuffer[j]:= #0;
mmo1.Lines.Add(gelen);
gelen:='';
end;
Gönderme Kısmı
button click olayına
ApdComPort1.PutChar(chr($55));
ApdComPort1.PutChar(chr($10));
ApdComPort1.PutChar(chr($FF));
ApdComPort1.PutChar(chr($FF));
ApdComPort1.PutChar(chr($FF));
ApdComPort1.PutChar(chr($FF));
ApdComPort1.PutChar(chr($00));
ApdComPort1.PutChar(chr($00));
Herkese iyi çalışmalar
Formda Emeği geçen herkese teşekkür ederim
(Allah yollarını açık etsin)