arduniodan veriyi kaç bit gnderiyorsun bir de tipi ne?

printf ; şeklinde int gnderiyorum. 32 bitlik veri int tipinde rf ile aktarılıyor, bu veriyi rfden okuyup 2 arduino arasında aktarıyorum, aldığım veriyi serial monitorde düzgün grüntüleyebiliyorum ide üzerinde, c#ta da ilk mesajda yazdığım gibi timerla değilde veri geldiği zaman okuma yap diyerek almaya çalışıyorum ama arada hatalı değerler çıkıyor işte. :)

printf ; şeklinde int gnderiyorum. 32 bitlik veri int tipinde rf ile aktarılıyor, bu veriyi rfden okuyup 2 arduino arasında aktarıyorum, aldığım veriyi serial monitorde düzgün grüntüleyebiliyorum ide üzerinde, c#ta da ilk mesajda yazdığım gibi timerla değilde veri geldiği zaman okuma yap diyerek almaya çalışıyorum ama arada hatalı değerler çıkıyor işte. timerla yemez hocam. ilk etap. serialPort. DataReceived += new SerialDataReceivedEventHandler ; serialPort. Open ; Porttan gelen verileri alıp yazdırmada şyle; void serialPort_DataReceived Şunlarla yaptığımda timer'a gerek kalmadan 1 milisaniyeyle verileri 3 digit halinde çekebiliyorum. 16 bitlik veri gnderiyorum ben..

" serialPort. BaudRate = 5760" denediniz mi hocam portu açmadan nce? Properties kısmında ayarlı, zaten baud değeri farklı olsa anlamsız veriler yazdırır, benim sıkıntım bufferla alakalı diye düşünüyorum ama bulamıyorum işte iyi bilmediğim için. :)

wasd bunu yazdı printf ; şeklinde int gnderiyorum. 32 bitlik veri int tipinde rf ile aktarılıyor, bu veriyi rfden okuyup 2 arduino arasında aktarıyorum, aldığım veriyi serial monitorde düzgün grüntüleyebiliyorum ide üzerinde, c#ta da ilk mesajda yazdığım gibi timerla değilde veri geldiği zaman okuma yap diyerek almaya çalışıyorum ama arada hatalı değerler çıkıyor işte. timerla yemez hocam. ilk etap. serialPort. DataReceived += new SerialDataReceivedEventHandler ; serialPort. Open ; Porttan gelen verileri alıp yazdırmada şyle; void serialPort_DataReceived Şunlarla yaptığımda timer'a gerek kalmadan 1 milisaniyeyle verileri 3 digit halinde çekebiliyorum. 16 bitlik veri gnderiyorum ben.. erc doğru syler arbeit macht frei

timerla yemez hocam. ilk etap. serialPort. DataReceived += new SerialDataReceivedEventHandler ; serialPort. Open ; Porttan gelen verileri alıp yazdırmada şyle; void serialPort_DataReceived Şunlarla yaptığımda timer'a gerek kalmadan 1 milisaniyeyle verileri 3 digit halinde çekebiliyorum. 16 bitlik veri gnderiyorum ben.. timerla yemeyeceğini biliyorum zaten, hani milisaniye kayma olsa giden veri boşa gider, alacak kısımda bir değer okuyamaz. serialPort. DataReceived += kısmını form. Designer. cs kısmında toolboxdan eklediğim serialPort nesnesinin zelliklerine yazdım, başlat ve dur diye iki butonum var, seriportu başlat butonuna tıklanıldığında açıyorum. Buralarda bi hatam olsa hiç değer alamam, ben değeri alıyorum ama arada bir hatalı alıyor. DataBits değeri 8, baud hızı arduinodada uygulamada da 57600, buffersize 4096. Pythonun pyserial kütüphanesiyle denediğimde de bazen boş yazdırıyodu. :)

erc bunu yazdı timerla yemez hocam. ilk etap. serialPort. DataReceived += new SerialDataReceivedEventHandler ; serialPort. Open ; Porttan gelen verileri alıp yazdırmada şyle; void serialPort_DataReceived Şunlarla yaptığımda timer'a gerek kalmadan 1 milisaniyeyle verileri 3 digit halinde çekebiliyorum. 16 bitlik veri gnderiyorum ben.. timerla yemeyeceğini biliyorum zaten, hani milisaniye kayma olsa giden veri boşa gider, alacak kısımda bir değer okuyamaz. serialPort. DataReceived += kısmını form. Designer. cs kısmında toolboxdan eklediğim serialPort nesnesinin zelliklerine yazdım, başlat ve dur diye iki butonum var, seriportu başlat butonuna tıklanıldığında açıyorum. Buralarda bi hatam olsa hiç değer alamam, ben değeri alıyorum ama arada bir hatalı alıyor. DataBits değeri 8, baud hızı arduinodada uygulamada da 57600, buffersize 4096. Pythonun pyserial kütüphanesiyle denediğimde de bazen boş yazdırıyodu. SerialPort sınıfından bir nesne üretip deneyin hocam, yalnız voidlerin üstünde yani "private void btnBaslat_click " eventının üstünde ilk etap; SerialPort serialPort = new SerialPort ; Başlatma butonu için; private void btnBaslat_Click { btnBaslat. Enabled = false; btnBitir. Enabled = true; richTextBox1. Text = ""; try catch } Bitir Butonu için; private void btnBitir_Click Aldığınız verileri richtextbox'a yazmak için; void serialPort_DataReceived Kolay gelsin..

Her saniye yeni bir değer geliyor arduinodan, arduino ide sorunsuz gsteriyor bu değerleri ama c# ile yazmaya çalıştığım uygulamada sıkıntı var; mesela değer 26 geliyor arduino serial monitorde ama benim uygulamada 2 yazıyor, bir süre daha doğru yazıp sonra 6 yazıyor falan. Nerde yanlış yapıyorum acaba: serialport baud değeri 57600 ayarlı. this. serialPort1. DataReceived += new System. IO. Ports. SerialDataReceivedEventHandler ; şeklinde veri geldiğinde okuma yapmasını sağladım, her veri geldiğinde DataReceivedHandler fonksiyonu çalışıyo ve fonksiyon içinde string gelen = serialPort1. ReadExisting ; bulunan veriyi okutup daha sonra serialPort1. DiscardInBuffer ; bufferı temizliyorum. :)

" serialPort. BaudRate = 5760" denediniz mi hocam portu açmadan nce?

sorun cozuldumu bilmiyorum ama ReadExisting ile okumak cok saglikli bi yontem degil oncelik ile bunu belirtiyim. ben byte arrayi olarak okumayi daha saglikli buluyorum. bytesToRead ile datanin tamaminin gelmesini bekleyebilirsin veya receivetimeout suresini degistirip tekrar dene diyecegim. Byte olarak okumak icin : serialPort_DataReceived Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.