Seri port okuma hızı nasıl arttırılır

Başlatan cebeci006, 29 Eylül 2014, 16:43:21

cebeci006

Arkadaşlar seri porttan C# a veri okuyorum her 16 ms de bir veri okuyor bu hızı arttırabilirmiyim 1 saniyede en fazla 63 veri okuyabildim yardımcı olur musunuz*

cebeci006

Yok mu seri port okuma hızını artırabilecek C# cılar.

OG

#2
Kullandığın hız düşüktür.
8N1 için 1 byte gitme süresi =  1/(baud/10)
Örnek 4800 baud
1/(4800/10) = 2,083ms

1 saniyede gidecek byte sayısı 480 adet

Yani pratik olarak 8N1 için 1 saniyede gidecek byte sayısı = Baud / 10


mesaj birleştirme:: 29 Eylül 2014, 22:55:10

Birde InBufferSize değerini düşük tutmuş olabilirsin. Default 1024 dür.

mesaj birleştirme:: 29 Eylül 2014, 23:00:09

Birde USB/seri dönüştürücü kullanıyorsan onun ayarlarını kurcalamak gerekebilir.
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

cebeci006

baund rate 115200
buffersize 4096

usb/seri dönüştürücünün ayarları nasıl yapılır.

cebeci006

bir de terimanale 1 saniyede yaklaşık 400 veri geliyor sorun C# a bu 400 veri 63 veri olarak geliyor saniyede

Gökhan BEKEN

Formdaki elemanlar da çok etkiliyor. Sanırım ayrı bir task'da yapmak gerekiyor başka işleri. Özellikle de grafik kullanıyorsanız veriler yavaş geliyor, MCU'dan veriler çok hızlı gelirse donup hata veriyor. FTDI kullanıyorum, veriler çok hızlı gelirse mouse kendi kendine tıklıyor, hemde c# la yapmasam bile... Bilenler varsa yorumlarını bekliyorum.
Özel mesaj okumuyorum, lütfen göndermeyin.

cebeci006


barisertekin

Diğer mesajda da söylediğim gibi işin sırrı farklı thread içerisinde serialport okumak.
Yaptım demişsiniz ama bence bir daha kontrol ediniz. Başka türlü bir çözüm bulabileceğinizi sanmıyorum.
Ayrıca bunu listbox'a değilde bir list'e ekleseniz de baksanız saniyede kaç veri geliyor.

console uygulaması açınız ve aşağıdaki gibi form elemanları kullanmadan deneyiniz.

List<string> list = new List<string>();
list.Add(....);

VEYA Console.WriteLine ile direk ekrana yazdırın.

Gökhan BEKEN

Yeni farkettim buffer'ı temizlemek anlık uygulamalarda hızı baya artırıyor.
data received fonksiyonunun sonuna şunu yazıyorum:
serialPort1.DiscardInBuffer();
Özel mesaj okumuyorum, lütfen göndermeyin.