Comporttan veri bittiğini nasıl anlarız ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
seci20
Üye
Mesajlar: 229
Kayıt: 25 May 2015 04:39

Comporttan veri bittiğini nasıl anlarız ?

Mesaj gönderen seci20 » 20 Eki 2018 06:18

Ustalarım kolay gelsin. Comporttan veri gönderip almam gerekiyor.Yanlız gelen veri sabit olmuyor mesela bazen 1 byte iken bazen 10000 byte olabiliyor. Normalde gelen verinin uzunluğu için şu kodu kullanıyorum ama bu çok fazla hata veriyor bazen read yapılan byte dahil oluyor.

Kod şu şekilde.

Kod: Tümünü seç

    WaitCommEvent(ComFile,evMask,@OvrIn);
    WaitForSingleObject(OvrIn.hEvent,1000);
    GetOverlappedResult(ComFile,OvrIn,nRead,false);

    FillChar(iComStat,SizeOf(iComStat),0);
    Errs:=0;
    ClearCommError(ComFile,Errs,@iComStat);
    TotalRead:=iComStat.cbInQue;

cbInQue ile kalan veriyi hesaplıyorum ama fazla olabiliyor bazen az oluyor farklılık gösteriyor. Cihazın veri göndermesinin bittiğini nasıl ve hangi kod ile anlayabilirim şimdiden çok teşekkür ederim.

ertank
Üye
Mesajlar: 1241
Kayıt: 11 Eyl 2015 11:45

Re: Comporttan veri bittiğini nasıl anlarız ?

Mesaj gönderen ertank » 21 Eki 2018 01:20

Merhaba,

Bunu bildiğim kadarıyla anlamanız mümkün değil. Bu sebeple başlangıç ve bitiş için özel karakter/kelimeler kullanılıyor bu tür işlerde. Benzer şekilde gönderilecek/gönderilen veri hash bilgisi de kullanılabiliyor.

İletişim kurduğunuz cihaz/yazılımın dökümanlarını incelemenizi önerebilirim.

yusuf simsek
Üye
Mesajlar: 312
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Comporttan veri bittiğini nasıl anlarız ?

Mesaj gönderen yusuf simsek » 06 Ara 2018 02:25

Bu sorunun cevabını Cihazın üreticisinden alabilirsiniz...

Her cihaz kendisine özgü bir yazılım içerdiği için net birşey söylenemez...

Eğer cihaz yazılımına müdahale ettirme imkanınız varsa İlk değer olarak VERİ BOYUNU GÖNDERMESİNİ isteyebilirsiniz...

Böylece ne kadarlık veri geldiğini bilir ve ona göre işlem yapabilirsiniz
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com

Cevapla