Merhaba arkadaşlar, Bir seri port haberleşmeli terazim var. Putty ile veri alabiliyorum. C# ile Arduino için daha önceden yapmış olduğum bir arayüzüm vardı ordan da veri okuyabiliyorum. Fakat çok sağlıklı olmadığı için bir kaç düzenleme yaptım ama çözemediğim ve önerilerinizi beklediğim bir kaç sorun ortaya çıktı.
1-) Data'yı timer ile alıyorum. Terazi 9600 baudda çok hızlı gönderiyor ölçtüğü ağırlığı. Bu yüzden daha önceden,
sonuc = serialPort1.ReadExisting();
olan komutu
sonuc = serialPort1.ReadLine();
olarak çevirdim.
Timer Interval süresini 200ms ve daha yukarısı yaptığımda terazi verileri düzgün gelmiyor, geç kalıyor sanki kasıyormuş gibi. Süreyi 5-75 ms civarı yaptığımda da veri tam istediğim gibi geliyor fakat bu sefer de arayüzdeki hiçbir butonu kullanamıyorum, "bağlantıyı kopar" butonum var basıyorum işlemiyor, 20-30 sn sonra işliyor.
2-) Terazinin gönderdiği data "ST,GS, 15.6 g" tarzında geliyor. Sadece sayıyı nasıl çekebilirim. Split modunu tam uygulayamadım. Yardım ederseniz çok sevinirim. Kodlar aşağıda.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.IO;
namespace Data_Okuma { public partial class Form1 : Form { string[] ports = SerialPort.GetPortNames(); public Form1() { InitializeComponent(); }
Şimdi dostum öncelikle timer ın nasıl çalıştığını anlaman lazım. toolboxtaki timer ui threadında çalışıyor. Bu yüzden ui yi meşgul ediyor. Multi threaded asenkron programlamayla felan çok içli dışlı değilim ama senin kullanman gereken şey System.Threading.Timer . Farklı bir threadda çalışacağı için ui yi meşgul etmez sen de istediğin gibi durdurabilirsin. UIde değişiklik yapmak istediğinde hata vericektir. Onun için şuna bakhttp://stackoverflow.com/questions/661561/how-to-update-the-gui-from-another-thread-in-c
Bir seri port haberleşmeli terazim var. Putty ile veri alabiliyorum. C# ile Arduino için daha önceden yapmış olduğum bir arayüzüm vardı ordan da veri okuyabiliyorum. Fakat çok sağlıklı olmadığı için bir kaç düzenleme yaptım ama çözemediğim ve önerilerinizi beklediğim bir kaç sorun ortaya çıktı.
1-) Data'yı timer ile alıyorum. Terazi 9600 baudda çok hızlı gönderiyor ölçtüğü ağırlığı.
Bu yüzden daha önceden,
olan komutu
olarak çevirdim.
Timer Interval süresini 200ms ve daha yukarısı yaptığımda terazi verileri düzgün gelmiyor, geç kalıyor sanki kasıyormuş gibi.
Süreyi 5-75 ms civarı yaptığımda da veri tam istediğim gibi geliyor fakat bu sefer de arayüzdeki hiçbir butonu kullanamıyorum, "bağlantıyı kopar" butonum var basıyorum işlemiyor, 20-30 sn sonra işliyor.
2-) Terazinin gönderdiği data
"ST,GS, 15.6 g" tarzında geliyor. Sadece sayıyı nasıl çekebilirim. Split modunu tam uygulayamadım. Yardım ederseniz çok sevinirim. Kodlar aşağıda.
< Resime gitmek için tıklayın >
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.