Arama butonu
Bu konudaki kullanıcılar: 1 misafir
8
Cevap
967
Tıklama
0
Öne Çıkarma
C# ile seri porttan 12bit veri okumak. Yardım.
U
7 yıl
Teğmen
Konu Sahibi

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ı >

U
7 yıl
Teğmen
Konu Sahibi

Güncel.



< Bu ileti mobil sürüm kullanılarak atıldı >

G
7 yıl
Yarbay

Önce hangisini gönderirsen o gelir.



< Bu ileti mobil sürüm kullanılarak atıldı >

U
7 yıl
Teğmen
Konu Sahibi

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ı >

G
7 yıl
Yarbay

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.


Bu mesaja 1 cevap geldi.
U
7 yıl
Teğmen
Konu Sahibi

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.




Bu mesajda bahsedilenler: @elektro_gadget
G
7 yıl
Yarbay

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.



U
7 yıl
Teğmen
Konu Sahibi

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ı >

G
7 yıl
Yarbay

Yanlış yapıyorsun. 2 byte'ı peşpeşe gönderip alacaksın.



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.