seri iletisimde gelen verileri ayiklamak

Başlatan predator, 20 Şubat 2014, 13:41:21

predator

Seri porttan 3 farkli sensorden toplanan veriler geliyor 3 farkli label var herbirinde bir sensorun gozukmesini istiyorum mesela label1de birinci label2de 2. Sensor bu veriler nasil ayiklanir? Picdeki qualifier mantigi burda varmidir?

furkan.seker

protokol yapicaksin hocam, basit bisey. sensor verisini gonderirken bu protokol ile gonderecek, sen islemcide protokolu bildigin icin ona gore ayiklayacaksin. ornek olarak;

|baslangic|sensor ID|sensor data|bitis|

seklinde bir paket yapabilirsin. baslangicin sabit bir byte olur 0x0A gibi. bitisinde sabit bir byte olur 0x0B gibi, veya chekcsum kullanabilirsininin bunun yerine. bu sekilde paketin nerde basladigini nerde bittigini bilirsin. sensor ID ve sensor data ile de sensorun numarasini ve almak istedigini veriyi gonderirsin. paketlerin sabit uzunluk olabilir, bunu sen belirleyeceksin. gelebilecek muhtemel verilerin boyutune gore. veya degisken uzunlukta olabilir, bu durumda paketin icine veri uzunlugunu da yazman gerekir ki kontrol edebilesin. Sensor ID 1 byte ve sensor datasi 1 byte olsun diyelim.

ornek paketler;
0x0A 0x01 0xAF 0x0B >> 1. sensorden okudugun deger 0xAF
0x0A 0x02 0xFF 0x0B >> 2. sensorden okudugun deger 0xFF
0x0A 0x03 0x10 0x0B >> 3. sensorden okudugun deger 0x10

kudretuzuner

#2
Merhaba,
Gelen datalar byte şeklinde mi?string şeklinde mi?
Bildiğiniz gibi datalar hex şeklinde gelir.Gelen bu hex bilgilerin DEC değerleri ile karşılaştırıp labellara atayabilirsiniz.

-----------------------------------------------------------------
    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
       Dim gelen As String = SerialPort1.ReadByte
        If gelen = 49 Then                     'yani klavye "1" hex'31'
           Label1.BackColor = Color.Red
        End If
    End Sub
-------------------------------------------------------------------
Amatör

predator

Verici kisminda Picbasicten Serout ile data yolluyorum 1 bytelik 50 60 70 gibi 255ten kucuk bir sayi ornek bir kod verebilirmisiniz dediginizi pek anlamadim

kudretuzuner

Merhaba,
hex'50'=DEC80 dir.  CHAR(P) denk gelir.Yolladığınız Hex'50' yi ancak

    Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived


        Dim gelen As String = SerialPort1.ReadByte
        If gelen = 80 Then
                   Label1.ForeColor = Color.Red
        End If

    End Sub
kodları ile label1'in rengini kırmızıya dönüştürebilirsiniz.
Burada işin can alıcı yeri VB.Net'in yollanan hex değerlerine denk gelen  DEC değerlerini kabul etmesidir.
Bknz:tablo
http://www.asciitable.com/
Amatör

predator

Vb6.0 kullaniyorum label rengi falan degil mesele sanirim tam anlatamadim3 sensorden veriler geliyor bunlari ekranda goruntuluycem hangi veri hangi sensorden geldi bunu ayiklamak istiyorum

furkan.seker

hocam sensorden nasil bir veri geliyor bilgisayarin seri portuna?

predator

Byte geliyor sayisal deger sicaklik  nem vs gibi

furkan.seker

peki sensor ID gibi bir veri var mi bunun icinde. yoksa sadece sicaklik ve nem mi gonderiyor?

predator

Sensorleri pic okuyor sonrada seri porta yolluyor

kudretuzuner

Merhaba,
Yukarıda yazdığım cümleyi tam olarak anlamaya çalışın problemi çözeceksiniz.

"Burada işin can alıcı yeri VB.Net'in yollanan hex değerlerine denk gelen  DEC değerlerini kabul etmesidir.
Bknz:tablo
http://www.asciitable.com/"

Amatör

predator

Vb.net degil vb6.0 kullaniyorum hala cozemedim problemi

kudretuzuner

#12
Merhaba,
Arkadaşım adım adım gidelim.
1-PC'ye gelen data max232'den geçiyor mu?(yani PC'nin seri port rx bacağına -10 ila -12volt olarak ulaşıyor mu?)
2-yollanan datanın baudrate hızı ile PC'nin yazılımındaki seriportun baudrate hızı aynı mı?(1200-2400-9600.....vs)
3-İlk olarak sadece tek sensordan gelen datayı PC'deki yazılımda yakalamaya çalışalım.
4-Bu datanın hex değeri nedir?yazarsanız VB.Net kodunu yazayım.
Vereceğiniz yanıtlara göre devam edelim.
VB6 veya net mantık değişmez sadece syntax değişikliği vardır.VB6 syntax'nı tam bilmiyorum ama kendi kodunuzu yazarsanız birşeyler çıkarabilirim.
Amatör

predator

Max232 yok seri usb donusturucu kullaniyorum tek sensorden okuma yapabiliyorum sabit data gelmiyor surekli degisiyor

kudretuzuner

Merhaba,
En büyük sıkıntı arada bulunan usb to serial çeviricidir.Benim önerim,mümkün ise aradaki çeviriciyi kaldırarak direk PC ile PİC bağlantısı yapmaktır.Bildiğiniz gibi pıc datayı yollarken +5volt seviyesinde yollar.PC ise datayı -10volt ila -12volt arasında kabul eder bu bakımdan araya max232 dönüştürücü koyup öyle test etmeniz gerekir.Bu normal prosedürdür.Bu şekilde projeyi çalıştırdıktan sonra max232' yi çıkarmadan ara usb serial dönüştürücüyü bağlayınız.Bana sorarsanız bu türdeki çalışmaları öncelikle direk çalıştırmak,daha sonra araya dönüştürücüleri veya rf modülleri monte etmektir.En azından hatayı yakalama olasılığını arttırırsınız.Seri usb dönüştürücü olarak hangisini kullanmaktasınız?
Amatör