s.a.
Öncelikle bu yazıyı zaman ayırıp okuyacak arkadaşlar teşekkürler.
Comportlar üzerinden oldukça hızlı bir veri iletişimine ihtiyaç duymaktayım.
Bu nedenlede sizlerin bilgi ve tecrübelerinden faydalanmak istedim.
Yapmak istediğim comportla iletişim kuran yaklaşık olarak 150 ye yakın sayıda cihaz mevcut.
Tüm cihazlardan gelen bilgileri 1 sn. içerisinde alıp bunlara yaklaşık olarak 6 ms. içerisinde cevap vermem gerekmektedir.
her işlem için comport üzerinde gelen giden data uzunluğu yine yaklaşık olarak 100 byte civarındadır.
kullanılan cihazlar bilgisayardan gönderilen komutlara karşılık kendisi bir bilgi döndürüyor.
yani cihazlar ancak bilgisayardan kendisine bilgi geldiğinde cevap veriyorlar.
bu nedenlede sürekli program cihazlara bilgi sormak durumunda kalıyor.
benim düşüncem cihazlardan gelen uçları 10 civarında farklı comportlara dağıtmak ve her bir comport için bir threed yaratmak şeklinde oldu.
fakat böyle bir durumda ortak kullanacağım fonksiyonlar var(veritabanı sorgulama ve yazma gibi) bu fonksiyonlar birden fazla thread tarafından çağrıldığında
sorunlar yaşayabilirmiyim yada bu tür işlemlerin başka çözüm yolları varmıdır.
teşekkürler
Comport uygulaması hakkında
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Comport uygulaması hakkında
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
- bulutsuzluk_35
- Üye
- Mesajlar: 124
- Kayıt: 06 Eki 2007 04:14
- Konum: İzmir-Ankara-İstanbul-Antalya
- İletişim:
Re: Comport uygulaması hakkında
madem cihaz ancak kendine birşey geldiğinde cevap veriyor yani durduk yere herhangi bir veri göndermiyor işin çok basit bence
sıradan cihaza komut gönderceksin ondan sonra misal 50 ms içerisinde doğru cevabı aldığın zaman diğer cihaza geçeceksin.Yok istediğin şey cihazların durum bilgisi ise senin sürekli cihaza nbr nasıın demen pek mantıklı değil.Bu noktada cihazların yazılımının değiştirilerek durum bilgisini misal 5 sn bir sana göndermesi daha mantıklı gibi geliyor bana.Ama şu anki pozisyonda sen daha şanslısın gibi geliyo bana
component.onafterreceive(gelenbilgi)
global=gelenbilgi;
timer1.ontimer olayı
verigönder;
timer1.enabled=false
timer2.enabled=true
timer2.ontimer
if gelenbilgi<>' ' ve timer<500 then
begin
timer2.enabled:=false;
gelenbilgi yi kullan
timer1.enabled=true;
end;
gibi bişey aklıma geldi.Yani söylediklerinden anladığım kadarıyla yardımcı olmaya çalıştım.İşallah faydası olmuştur.Ama dediğim gibi cihazdan okuyacağın bilgi durum bilgisi gibi sürekli görmen icap ederse bu noktada cihaza ikide bir veri gönderipte ortalıkta gereksiz kalabalığın alemi yok cihazın yazılımını değiştirebiliyosanız daha iyi olur...
sıradan cihaza komut gönderceksin ondan sonra misal 50 ms içerisinde doğru cevabı aldığın zaman diğer cihaza geçeceksin.Yok istediğin şey cihazların durum bilgisi ise senin sürekli cihaza nbr nasıın demen pek mantıklı değil.Bu noktada cihazların yazılımının değiştirilerek durum bilgisini misal 5 sn bir sana göndermesi daha mantıklı gibi geliyor bana.Ama şu anki pozisyonda sen daha şanslısın gibi geliyo bana
component.onafterreceive(gelenbilgi)
global=gelenbilgi;
timer1.ontimer olayı
verigönder;
timer1.enabled=false
timer2.enabled=true
timer2.ontimer
if gelenbilgi<>' ' ve timer<500 then
begin
timer2.enabled:=false;
gelenbilgi yi kullan
timer1.enabled=true;
end;
gibi bişey aklıma geldi.Yani söylediklerinden anladığım kadarıyla yardımcı olmaya çalıştım.İşallah faydası olmuştur.Ama dediğim gibi cihazdan okuyacağın bilgi durum bilgisi gibi sürekli görmen icap ederse bu noktada cihaza ikide bir veri gönderipte ortalıkta gereksiz kalabalığın alemi yok cihazın yazılımını değiştirebiliyosanız daha iyi olur...
Kod: Tümünü seç
try
try
inc(Bilgi);
except
sabir;
end;
finally
inc(Mutluluk);
end;
- adelphiforumz
- Üye
- Mesajlar: 602
- Kayıt: 01 Nis 2008 05:38
- Konum: İstanbul
Re: Comport uygulaması hakkında
Belki anlatmak istediğimi tam ifade edememiş olabilirim.
burada kilit olan şey 1 sn içerisinden yaklaşık 150 cihaza sorgu atmak ve onlardan gelen cevapları kaçırmadan yakalamak.
iş bu kadarlada kalmıyor cihazlardan gelen bilgiler bir veritabanından sorgulanıp tekrardan geriye cihaza sorgulama sonucu olumlu ise
bunun cevabını göndermem gerekiyor ki buda sadece 1 sn içerisinde olmalı bu yüzden acaba thread mi kullanmalıyım diye sormuştum
düşüncem en azından 150 cihazı 10 comporta bölersem her thread 15 cihazla uğraşır ve böylece hızdan kazanabilirim diye düşünmüştüm.
burada kilit olan şey 1 sn içerisinden yaklaşık 150 cihaza sorgu atmak ve onlardan gelen cevapları kaçırmadan yakalamak.
iş bu kadarlada kalmıyor cihazlardan gelen bilgiler bir veritabanından sorgulanıp tekrardan geriye cihaza sorgulama sonucu olumlu ise
bunun cevabını göndermem gerekiyor ki buda sadece 1 sn içerisinde olmalı bu yüzden acaba thread mi kullanmalıyım diye sormuştum
düşüncem en azından 150 cihazı 10 comporta bölersem her thread 15 cihazla uğraşır ve böylece hızdan kazanabilirim diye düşünmüştüm.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Re: Comport uygulaması hakkında
Aynı anda 10 farklı cihaza 10 farklı comporttan eş zamanlı bağlantı kuracaksın, bu arada illaki haberleşme hataları vs. olacak ve bunun için belli bir süre timeout için beklemen gerekecek. Açıkcası 1 sn içinde 150 cihazı sağlıklı bir şekilde sorgulaman zor görünüyor. Ethernet protokolunde bile ipscan yapmak 150 cihaz için 2-3 saniyeyi aşıyor.
ÜŞENME,ERTELEME,VAZGEÇME