Şimdi Ara

C# ile seri porttan 12bit veri okumak. Yardım.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
9
Cevap
0
Favori
1.032
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Arkadaşlar karşı taraftan c# ile seri porttan 12 bit veri okumam gerekiyor. 8bit veri okuyabiliyorum ama 12bit olmuyor. Yardımcı olabilecek var mı ?

    Karşı tarafta veriyi low byte high byte olarakta ayırabilirim. Bu seferde veriyi alırken hangisi low byte hangisi high byte onu anlamam gerekiyor



    < Bu mesaj bu kişi tarafından değiştirildi unknown_123 -- 9 Haziran 2017; 23:1:29 >
    < Bu ileti mobil sürüm kullanılarak atıldı >



  • Güncel.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Önce hangisini gönderirsen o gelir.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Hocam art arda belirli süreyle gönderiyorum fakat nasıl anlayacam hangisi önce hangi sonra. Veya kaçırırsam veriyi o zamanda işler karışır.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Veri nasıl kaçıyor yav bufferda tutuluyor onlar. Mesela hlhlhlhl diye 4 çift gönderdin diyelim. C# tarafında 8 byte gelene kadar okuyacaksın. Onlar kaybolmaz, okunmayanlar bufferda tutulur.

    Karşı taraftan gönderi bitmeden okudun diyelim. 3 byte var dedi ise o 3 byte baştaki hlh dir. Sonra 5 byte daha gelene kadar okuyacaksın. 2 varsa onlar lh dir. Kalana 3 tane de lhl dir. Yani kesin ve net şekilde neyin ne olduğu belli.
  • Hocam şimdi ben şöyle anlatayım. Benim 12 bitlik verim var. 0-4096 arası değişen bi değer bu. Ben bunu bi integerda karşı tarafta tutuyorum ama seri porttan 12 bitlik veriyi tek okumada alamadığım için high byte low byte diye ayırıp farklı integerlarda tutuyorum. Sonra her saniyede bu integer değerlerini sırayla seri porttan gönderiyorum. Sorun şu ki ben c# tan bu verileri aldığımda hangi gelen değer high byte hangisi low byte nerden bileceğim. Değerine göre bilemem çünkü high byte ın desimal değeri 10 iken belki low byte ın da 10 olabilir. Bilmiyorum çok basitte ben acemiyim o yüzden mi oturtamadım durumu. Yardımcı olursan sevinirim hocam.
  • Anlayamamana şaşırdım doğrusu. Daha ne kadar açık yazacağımı bilemedim ama son kez tekrar edeyim. Seri porttan önce high gönderirsen PC tarafına önce high gider. Önce low gönderirsen PC tarafına önce low gider. Bu kadar yani 2+2=4 kadar basit.

    Önce high gönderdiğini farz edelim. C# tarafında;

    int h = oku(); -> high
    int l = oku(); -> low

    Sen durup durup rastgele bir zamanda 1 byte okursan hangisi olduğunu anlayamazsın tabi. Tek seferde 2 byte okuyacaksın, ilk okuduğun high olacak. Hiçbirşey bilmiyorsan bir sayaç koyup okuduğun byte ları say. Sayaç çift sayı ise gelen byte high, sayaç tek ise gelen byte lowdur.
  • Hocam sorun şu sanırım. Ben c# tarafı bağlı olsun olmasın program koşmaya başlayınca ilk high gönderiyorum sonra 1 saniye bekleyip low gönderiyorum sonra 1 saniye bekleyip high gönderiyorum. Bu böyle gidiyo. C#tada sürekli bir byte okuyorum. Böyle olunca veri alıyorum ama hangisini aldım hangi gelen high hangisi low ayrıştıramıyorum. Aynı anda iki byte nasıl okuyacağım. Birde iki byte okurken karşı taraftan böyle 1 saniye bekleyerek mi göndermeliyim yoksa art arda iki veriyi seri porttan mı göndermeliyim. Gerçekten acemiyim bu byte bit işlerinde. Tam kafamda oturtamadığım için kusura bakma



    < Bu mesaj bu kişi tarafından değiştirildi unknown_123 -- 11 Haziran 2017; 1:37:28 >
    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Yanlış yapıyorsun. 2 byte'ı peşpeşe gönderip alacaksın.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.