port a gelen bilgiyi okumaya çalışıyorum. triggeravail olayına eklediğim bu kodla okuma yapıyorum. ApdComport1.GetBlock(rxbuffer^,count); (rxbuffer için de 128 bayt yer ayırıyorum)
port1 8 bayttan fazla bilgi (test için com1 den com2 ye bilgiyi ben gönderiyorum) gelmesine rağmen benim okuduğum değer hep 8 bayt oluyor. okuma ve yazma için kullandığım iki apro bileşeni için de insize ve outsize değerleri 128 bayt. maksimum 8 bayt okumamın sebebi ne olabilir?
apro ile port okuma
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
apro ile port okuma
öğrenmek, zorlukları yenmektir.
- uğur alkan
- Üye
- Mesajlar: 227
- Kayıt: 29 Ağu 2004 04:49
- Konum: Istanbul
Kod: Tümünü seç
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
begin
form1.Edit2.Text:=form1.ApdComPort1.GetChar;
form1.Edit2.Text:=form1.Edit2.Text+form1.ApdComPort1.GetChar;
.
.
.
form1.Edit2.Refresh;
end;
Bazen sert rüzgarlar eser başını öne eğmekten asla korkma
Kod: Tümünü seç
procedure TForm1.ApdComPort1TriggerAvail(CP: TObject; Count: Word);
var LastCount,I : integer;
begin
LastCount:= Count;
for I := 1 to LastCount do
begin
cRcvBuffer[CharCntReceived]:= ApdComPort1.GetChar;
inc(CharCntReceived);
end;
end;
örneğin bi timerda alınan paketi kontrol eder
Kod: Tümünü seç
PacketOK := ((CharCntReceived = 71 ) and (cRcvBuffer[0] = '@') and (cRcvBuffer[69] = '*'));
if PacketOK then PacketOK := CheckCRC(@cRcvBuffer[0],67);
if PacketOK or (iErrorCount > 5 ) then
begin
//Eğer packet sağlam ise stringi parse et..
if PacketOK then
begin
for y:=0 to 14 do myReadOnlyDMArea[y] := hexToInt(Uppercase(copy(cRcvBuffer,8+(y*4),4)));
..............
.-.-.-.-.-.-.-. ^_^