MercanSoftYazılım Teknolojileri Günlüğü
01 Mar 2019

C# ile Baykon BX21S Terazi den bilgi okuma

C# ile Baykon BX21S Terazi

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

C#.Net • Yazılımlarım 12 Comments

12 comments :

  1. 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

  2. Slm ‘lar _Temizle methodu içeriği paylaşılmamış rica etsem paylaşırmısınız. Şidmdiden teşkkürder

  3. 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;
    }

    1. 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

  4. Merhaba hocam. yaş çay üretici programı yapıp kantardan müstahsil bilgisini alıp tartıyı hesabına aktarmak istiyorum. hesabına aktardığında da bütün hesaplamaları yapsın. örneğin 100 kg yaş çay getirdi. bunu hesap kartına işlediğimizde ne kadar alacaklı olduğunu hesaplatmak istiyorum.

    1. bu isteğiniz başlı başına bir uygulamadır müstahsil bilgisini nereden alacak başka bir uygulamadanmı? bir veritabanı kullanılması gerekiyor bilgilerin tutulması için siz böyle bi uygulamayı yazmak mı istiyorsunuz?

      1. herşey tek sistem üzerinden işleyecek. veritabanı olacak. otomasyon sistemi yazmak var niyetime hocam

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir