cport la port okuma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
cfyasar
Üye
Mesajlar: 169
Kayıt: 31 Oca 2005 05:18
Konum: izmir

cport la port okuma

Mesaj gönderen cfyasar »

cport bileşeni ile port la çalışıyorum. output buffer a bilgi yazıp gittiğini anlamak için evtxempty olayını nasıl kullanabilirim. ayrıca bilgi geldiğini anlamak için evrxFlag olayını da kullanmam gerekiyor ama beceremedim. ve bilgi almak için timeout süresi verip beklemem gerekiyor ama bana mili saniye değil mikro saniye gerekli bu tip bir timer ı nerden bulabilirim?
öğrenmek, zorlukları yenmektir.
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

Turbo power apro kullan , ilgili porta veri geldiğinde. triggeravail event ı tetikleniyor. ve buda işini çok büyük ölçüde kolaylaştırmış olur.

kolay gelsin.
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

Eğer Projene Comport ile başladı isen ,

üniversite yaptıgım bir programın kodlarını buldum işine yarar sanırım..

hoca ödev vermişti , seri portdan diğer pc ye cross bir cable yapmıştık , bununla bir pc den değeri gönderip diğer pc den alıyorduk.

Kod: Tümünü seç

procedure Tmain.Button1Click(Sender: TObject);
var
Str: String;
begin
if CheckBox1.Checked and CheckBox2.Checked then showmessage('Sadece 1 Port Seçiniz');
if CheckBox1.Checked then begin
    ComPort1.Open;
    Str := Edit1.Text;
    Str := Str + #13#10;
    ComPort1.WriteStr(Str);
end;
if CheckBox2.Checked then begin
    ComPort2.Open;
    Str := Edit1.Text;
    Str := Str + #13#10;
    ComPort2.WriteStr(Str);
end;

end;

procedure Tmain.ComPort1RxChar(Sender: TObject; Count: Integer);
var
  data: String;
begin
  ComPort1.ReadStr(data, Count);
  Memo1.Lines.Add('Gelen Değer ='); 
  memo1.Lines.Add(data);
end;

procedure Tmain.ComPort2RxChar(Sender: TObject; Count: Integer);
var
  veri: String;
begin
  ComPort2.ReadStr(veri, Count);
  Memo1.Lines.Add('Gelen Değer =');
  memo1.Lines.Add(veri);

end;
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

viewtopic.php?p=16575#16575

aynı programın cport ve apro lu versiyonu
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
cfyasar
Üye
Mesajlar: 169
Kayıt: 31 Oca 2005 05:18
Konum: izmir

Mesaj gönderen cfyasar »

ben porttan sayı gönderecem ve sayı alacam, sayı geldiği zaman rxchar yine bilgi okumaya başlar mı?
öğrenmek, zorlukları yenmektir.
DotCom
Kıdemli Üye
Mesajlar: 1696
Kayıt: 11 Tem 2003 10:30
Konum: İzmir
İletişim:

Mesaj gönderen DotCom »

Kod: Tümünü seç

veri: String;
gelen değeri integer olarak bir işlemde kullancaksanız strtoint ile dönüşüm yapmak zorundasınız.
Kullanıcı avatarı
cfyasar
Üye
Mesajlar: 169
Kayıt: 31 Oca 2005 05:18
Konum: izmir

Mesaj gönderen cfyasar »

cport tan vazgeçtim, apdpro kullanmaya başladım. ben porta bilgileri 1 bayt olarak gönderiyorum onu da şu şekilde yapıyorum.

Kod: Tümünü seç

for cnt:=0 to txflength do
   begin
      if ApdComport1.OutBuffFree=ApdComport1.OutSize then
        ApdComport1.PutChar(char(pointer(integer(txBufferpos)+cnt)^));
end;
burada gönderdiğim bayt gitti mi diye de outbufffree ile kontrol ediyorum. bu aşamadan sonra cevabın bana 0.6 milisaniyede dönmesi lazım. bunun için timertirigger ı set edecem ama apd nin helpinde zamanı tick olarak tuttuğunu ve 1 tick in 55 milisaniye olduğu yazıyor. bundan daha hassas zaman tutucu nerden bulabilirim?
öğrenmek, zorlukları yenmektir.
Cevapla