C# rs232 seri haberleşmede veri işleme - iki veri çekme

Başlatan abdul_1234, 26 Aralık 2013, 14:26:50

abdul_1234

Merhaba Arkadaşlar,
Proje dolayısıyla PIC16f877A'dan sıcaklık bilgisini çekmek için C# projesi yazdım. Ancak şöyle sorunum var: Aldığım veriyi if döngüsüne alıp "eğer şart gerçekleşirse label'e şu yazıyı yaz" dediğimde hata alıyorum. Bunun için "serialPort1_DataReceived" olayı ve "form_load" olayına yazdım ikisinde de hata verdi sistem. Birde şunu sormak istiyorum: PIC16F877A'ya bir saat entegresi bağlarsam bunun verisini nasıl çekeceğim. Sıcaklıkla beraber ikisini nasıl bir anda çekeceğim. Çektiğim değeri de farklı bir label nasıl aktaracağım ?
Yardımcı olan arkadaşlara şimdiden teşekkür ederim.

         private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
          list2.Items.Add(serialPort1.ReadExisting());

            //for (int a = 0; a < list2.Items.Count; a++)  // İŞLEM YAPMAK İSTEDİĞİM HATA ALDIĞIM KISIM
            //{
            //    if (450 >= (int)list2.Items[2 * a - 1])  // İŞLEM YAPMAK İSTEDİĞİM HATA ALDIĞIM KISIM
            //    {
            //        label4.Text = "İşler ters";  // İŞLEM YAPMAK İSTEDİĞİM HATA ALDIĞIM KISIM
            //    }
            //}

          list1.Items.Clear();
          for (int i = 1; i <= list2.Items.Count; i++)
          {
              list1.Items.Add(2*i);

          }

        }

Kabil ATICI

timer ile birlikte kullan.(timer için mesela 250 veriyorsun)

Örneğin saat için bilgisayar işlemciye 0x10 göndersin ve saati beklesin ve işlemcinin sıcaklığı okumasını istersin.
sıcaklık için 0x11 gönderir ve beklesin. Böylece sen gelen verinin hangisi olduğunu anlarsın.

if (450 >= (int)list2.Items[2 * a - 1])
burada item sayısı2 ile çarpılıyor. bu list2 dışına taşabilir) list2 öğeleri string olarak geliyor olması lazım. Bunu sayıya çevireceksen  dönüşümler konusuna bir daha bak. muhtemelen hata veren yer burası olabilir.

Alternatif hepsini işlemcinin göndermesini istersen, örneğin ;
işlemci ilk olarak "(" gönderir sonra saati gönderir, ardından ")" ile birlikte sıcaklığı gönderir.
sen de bilgisayarda kontrol edersin "(" görürsen dersin ki bu saat, ")" görürsen dersin bu sıcaklık ve ona göre işlem yaparsın.
ambar7

selimkoc

RTC entegresi (saat entegresi) bağladıktan sonra iletişim protokolüne göre saat bilgisini ( saat, dakika, saniye) okuyup değişkene aktar.

Daha sonra sıcaklık değerini yine değişkene aktar.

Daha sonrada PC'ye transfer et. (Bu sürenin bir saniyeden az aralıklarla yapılması gerekir.)