Merhaba arkadaşlar,
bu yazımda sizlere Baykon marka bir teraziden veri nasıl okunur onu göstermeye çalışacağım.
bir winform açıyoruz ve 1 combobox , 1 textbox ve 1 tanede buton ekliyoruz.
tüm kaynak kodlarını sizlerle paylaşıyorum açıklamaları kodların arasına yapıyor olacağım hadi şimdi gelin kodları bir inceleyelim.
public partial class Form1 : Form
{
// burada bilgisayarınızdaki tüm açık portları getirmesini istedim ve bunuda bir string arrayine attım. bunu daha sonra bir combo boxta döneceğim.
string[] ports = System.IO.Ports.SerialPort.GetPortNames();
bool durum = false;
public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_Load(object sender, EventArgs e)
{
button3.BackColor = Color.Green;
// evet burada açık portları attığımız string arrayini dönerek comboboxa ekliyoruz.
foreach (string port in ports)
{
_cmbCOM.Items.Add(port);
}
}
private void button3_Click(object sender, EventArgs e)
{
if (durum==false)
{
try
{
// bağlantı için gerekli baudrate databits değerlerini giriyoruz.
serialPort1.BaudRate = 9600;
serialPort1.PortName = _cmbCOM.Text.ToString();
serialPort1.Parity = System.IO.Ports.Parity.None;
serialPort1.StopBits = System.IO.Ports.StopBits.One;
serialPort1.DataBits = 8;
}
catch (Exception ex)
{
_lblDurum.Text = “Bağlantı Hatası :” + ex.Message.ToString();
}
if (!serialPort1.IsOpen)
{
try
{
// portu açıyoruz ve bağlanıyoruz.
serialPort1.Open();
durum = true;
button3.BackColor = Color.Red;
button3.Text = “Bağlantıyı Kes”;
_lblDurum.Text = _cmbCOM.Text.ToString() + ” Portuna Bağlandı.”;
_Kilit(false);
}
catch (Exception ex)
{
_lblDurum.Text = “Bağlantı Hatası :” + ex.Message.ToString();
}
}
}
else
{
serialPort1.Close();
durum = false;
button3.BackColor = Color.Green;
button3.Text = “Bağlan”;
_lblDurum.Text = “Bağlantı Kesildi.”;
_Kilit(true);
}
}
public void _Kilit(bool durum)
{
_cmbCOM.Enabled = durum;
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// evet baykon terazilerde butona basınca terazide yazan veriyi gönderiyor bize gelen veri önünde veya arkasında bazı ekstra veriler olulyor
// örnek : Total : 21.45 gibi sadece veriyi almak için önündeki total ve : gibi karakterleri temizlemeniz gerekli _Temizle() metotunuda o nedenle kullandım
string test = serialPort1.ReadExisting();
string yeni = _Temizle(test);
textBox1.Text = string.Empty;
Thread.Sleep(1000);
textBox1.Text = _Temizle(yeni);
}
}
evet bu kadardır umarım faydalı bir yazı olmuştur sormak istediğiniz soruları lütfen yorum bölümünden sorunuz
herkese iyi kodlamalı günler..
merhabalar tam olarak aradığım bir konuda değinmişsiniz öncelikle paylaşımınız için teşekkürler. web tabanlı program yaptım kantar raporlamalarını sql ile alıyoruz aracı program var kayıt yapıyoruz, benim amacım web üzerinde kantarın değerini almak bunun için nasıl bir yol gerekiyor ,teşekkürler
Merhaba biraz araştırdım web üzerinden blazor teknolojisi ile yapılabilir gibi görünüyor blazor tecrübem yok ne yazıkki o konuda yardımcı olamıyorum ama size örnek olması açısından bir link vereceğim buradan örnek ile ilerleyebilirsiniz umarım
https://stackoverflow.com/questions/60688005/read-from-serial-port-on-blazor
Slm ‘lar _Temizle methodu içeriği paylaşılmamış rica etsem paylaşırmısınız. Şidmdiden teşkkürder
o kısmı atlamışım sanırım:) hemen paylaşıyorum.
public string _Temizle(string veri)
{
string TemizVeri = string.Empty;
TemizVeri = veri.Trim();
TemizVeri = TemizVeri.Replace(“Gross”, “”);
TemizVeri = TemizVeri.Replace(“kg”, “”);
TemizVeri = TemizVeri.Replace(“\r”, “”);
TemizVeri = TemizVeri.Replace(“\n”, “”);
TemizVeri = TemizVeri.Replace(“G”, “”);
TemizVeri = TemizVeri.Replace(“r”, “”);
TemizVeri = TemizVeri.Replace(“o”, “”);
TemizVeri = TemizVeri.Replace(“s”, “”);
TemizVeri = TemizVeri.Replace(“s”, “”);
TemizVeri = TemizVeri.Replace(“.”, “,”);
TemizVeri = TemizVeri.Trim();
return TemizVeri;
}
slm, kodlar her teraziye uygulanır mı?
RS232 çıkışı olan
evet, her teraziye uygulanır fakat port numarası ,BaudRate değişkenlik gösterebilir ayrıca teraziden gelen ascii türü karaterlerin temizlenmesi gerekir yukarıdaki _Temizle metotundaki gibi