Baglanti noktası kapalı hatası nasıl çözülür

Başlatan cebeci006, 20 Eylül 2014, 20:02:58

barisertekin

DataReceived eventini paylaşırsanız daha iyi olur. ReadLine() mı yoksa ReadExisting() mi kullanıyorsunuz kodlara bir bakalım.

cebeci006

data receivden eventi şu şekilde readline, readexisting, readto hepsini denedim aynı sorunu çözemedim.
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {

        
          
                string data = serialPort1.ReadLine();

                listBox1.Items.Add(data.ToString());
                listBox2.Items.Add(System.DateTime.Now.ToString("dd.MM.yyyy , HH:mm:ss:fff"));
          }

barisertekin

#17
SerialPort okuma işlemini farklı bir thread içerisinde yaparsan sorun çözülecektir. Listbox'a yazma işlemleri gecikme yapıyor.

string DispString;
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
    DispString = serialPort1.ReadExisting();
    this.Invoke(new EventHandler(DisplayText));
}

private void DisplayText(object sender, EventArgs e)
{
    listBox1.Items.Add(DispString);
}


DisplayText Methodu ana program içerisinde yer alıyor.
Sen farklı bir thread içerisinde çalışan data_received metodunda DispString değişkenine veriyi atıp ana programa o DispString değişkenini listboxa yazma görevini verip işine devam ediyorsun.
Böylece gecikmeyi serialport'tan okuma yapan thread yerine ana program üstleniyor.

cebeci006

#18
barisertekin dediğini yaptım readexisting ile okumada veriler bozuk geliyor. readline ile yaptım yine hızda bi artma yok 63 veri 1 saniyede geliyor listbox a sorun pc işlemcisinin hızından kaynaklanıyo olabilirmi.

mesaj birleştirme:: 26 Eylül 2014, 18:17:39




resimdede gözüküyo C# listbox a her 16 milisaniyede bir veri alıyor. Bunu arttırmam lazım toplamdada yine 63 veri 1 saniyede alabiliyorum.

barisertekin

Dediğini yaptım derken, başka bir thread içerisine serialport işlemlerini düzgün gerçekleştirebildiğinize emin misiniz?

Madem C# tan şüphe ediyorsunuz. C# ile yazılmış bir terminal uygulaması indirip test ediniz. Çalışıyorsa kodlarının inceleyiniz.

cebeci006

başka thread içerisinde de çalıştırdım en fazla 1 saniyede 63 veri okudum ordada bu hızı artırmam lazımm.

başka terminal programları çalıştırdım benim çalıoşmam dan bi farkı yok okuma metotlarımız aynı sorun neden yavaş okuyo C# .

putty' terminal programına 400 veri gelirken C# 63 veriden fazla çekemedim 1 saniyede