adpro bileşeni ile bir byte bilgi alma

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

adpro bileşeni ile bir byte bilgi alma

Mesaj gönderen cfyasar »

bu bileşenle porta 8 bayt bilgi gönderiyorum. ve bana cevap 1.5 milisaniye sonra gelmeye başlıyor ama gelen bilgiyi byte byte alamıyorum.
if charready then
c:=apd.getchar;
dediğim halde buffera bilginin tamamı gelmiş oluyor ve bana sadece ilk byt e ı gönderiyor. aynı şekilde triggeravail i kullansam alacağım bilginin tamamı gelmeden bana bilgiyi göstermiyor.
bana şu lazım,buffer a bir byte bilgi gelecek, bunu bana trigger veya bişeyle bildirecek, ben bu bilgiyi alacam, buffer ı temizleyecem ve tekrar bilgi geldiğinde iki bilgi arası zamanı ölçmem lazım. bu aradaki zaman maksimum 190 mikrosaniye olmalı ki modbus protokolüne uygun veri alıp almadığımı bileyim.
ikinbi bayt gelmeden birinci baytı okuyup, buffer ı temizleyip ikinci baytı beklemeyi apd ile nasıl yapabilirim. (mikrosaniyelik timer ım var);
öğrenmek, zorlukları yenmektir.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Bunu düşük seviye port okuma ile yapabileceksin. Windows da dahil olmak üzere bütün bileşenlerin bir buffer'ı vardır. Önce bu buffer'a atarlar, işletim sistemi müsait olduğunda da event'i tetiklerler. Aslında seri portun entegresi bile dahili bir buffer a sahip olduğundan yapmak istediğin şeyi gerçek manada ölçebilecek misin şüpheliyim.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Bak bu linkte Alper Çelik isimli bir vatandaşın modbus protokol Delphi örneği var. http://members.tripod.com/~mbserver/
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Burada da ücretsiz modbus delphi sürücüsü var. http://www.runmode.com/delphi.htm

Delphi ve PLC haberleşmesi de aynı adreste anlatılmış. Güzelmiş lam bu site :)
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Baktım da google'da arayınca Delphi için baya bir örnek var. Haydi google a. :)
Kullanıcı avatarı
cfyasar
Üye
Mesajlar: 169
Kayıt: 31 Oca 2005 05:18
Konum: izmir

Mesaj gönderen cfyasar »

sağolasın bende onlara bakıyordum. windos da belirtilen comport adresi, comport a bilgi göndermek için ulaştığımız adres değil mi? yani ben oraya bir bilgi yazarsam o comport a gider. oraya bir bilgi gelirse comporttan gelmiş olur?
öğrenmek, zorlukları yenmektir.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Maalesef öyle değil. Paralel port senin dediğin gibi çalışır ama seri port bit mantığı ile çalışır. Seri porta öyle veri gönderemezsin veya okuyamazsın.

__|-|____|-|____|-|____|-|____|-|____|-|____|-|____|-|__

Kare dalga gibin.

---1--------2-------3-------4-------5-------6-------7--------8----

Zaman..

Mesela portunu 9600 bit'e ayarladığında bu porta der ki senden saniyede 9600 bit alabilir veya gönderebilirim.

Sinyal kare dalga mantığı ile aktarılır ve bir zamanlayıcıda datanın toplanması yapılır.....

Valla anlatması uzun ve karmaşık. Kusuruma bakma. Yoruldum. İhtiyar bir adamım ben. :)
Kullanıcı avatarı
cfyasar
Üye
Mesajlar: 169
Kayıt: 31 Oca 2005 05:18
Konum: izmir

Mesaj gönderen cfyasar »

bu kadarı bile çok. yardımların için teşekkürler.
yorma bu kadar kendini, uzan dinlen biraz :lol:
öğrenmek, zorlukları yenmektir.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Şekil çizdik ya, ondan herhalde. @mrmcop'u takdir ediyorum. Özene bezene uzuunca bir sayfa yazıyor. Sağını solunu renklendiriyor. Nerden buluyor bu enerjiyi? :)
Kullanıcı avatarı
cfyasar
Üye
Mesajlar: 169
Kayıt: 31 Oca 2005 05:18
Konum: izmir

Mesaj gönderen cfyasar »

porta düşük seviyede ulaşabileceğim bir bileşen arıyorum veya bileşensiz bu işi nasıl yapabilirim? elimdeki cport ve apro işime yaramıyor. :(
öğrenmek, zorlukları yenmektir.
Kullanıcı avatarı
mege
Admin
Mesajlar: 2360
Kayıt: 05 Şub 2004 04:32
Konum: Beşiktaş
İletişim:

Mesaj gönderen mege »

şöyle bir arayın windows in not real time :)

bu tarz işlemleri bi mcontroller üzeriinden yapın. pc ile (windows tabanlı) bu kadar hızlı işlem yapabileceğinizi (en azıdan sürekli doğru şekilde) sanmam.
.-.-.-.-.-.-.-. ^_^
Kullanıcı avatarı
cfyasar
Üye
Mesajlar: 169
Kayıt: 31 Oca 2005 05:18
Konum: izmir

Mesaj gönderen cfyasar »

test amaçlı porta 100 milisaniyede bir değer gönderip bir led yakıyorum. ve bu ledler senkronik olarak çalışmıyor. arada windows un port tarama hızından kaynaklanan bir bekleme süresi oluyor. mesela 5 ledi 100 milisaniyede yakıyor, sonra 300 milisaniye bekliyor geri kalnını yine 100 milisaniye arayla yakıyor. programdan windows un seri portu tarama zamanı kısaltamaz mıyım veya portun windowstaki öncelik sırasını yükseltemez miyim? :roll:
öğrenmek, zorlukları yenmektir.
Cevapla