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?
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
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
-------------------------------------------------------------------
Verici kisminda Picbasicten Serout ile data yolluyorum 1 bytelik 50 60 70 gibi 255ten kucuk bir sayi ornek bir kod verebilirmisiniz dediginizi pek anlamadim
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/ (http://www.asciitable.com/)
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
hocam sensorden nasil bir veri geliyor bilgisayarin seri portuna?
Byte geliyor sayisal deger sicaklik nem vs gibi
peki sensor ID gibi bir veri var mi bunun icinde. yoksa sadece sicaklik ve nem mi gonderiyor?
Sensorleri pic okuyor sonrada seri porta yolluyor
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/ (http://www.asciitable.com/)"
Vb.net degil vb6.0 kullaniyorum hala cozemedim problemi
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.
Max232 yok seri usb donusturucu kullaniyorum tek sensorden okuma yapabiliyorum sabit data gelmiyor surekli degisiyor
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?
arkadaş zaten pc tarafında sensor datasını alıyormuş. onun derdi hangi sensorden ne data geldiğini anlamak. bunun da çözümünü yazdım yukarıda. basit bir protokol yapacak. pic programını da kendisinin yazdığını farzediyorum, bu durumda pıc sensor verisini gonderirken verinin hangi sensorden geldigini de ekleyecek. bilgisayar tarafinda da bu veriye gore hangi sensorden veri geldigi tespit edilip islem yapilacak.