Bu yazımızda C# Hex to Float Converter programı ile seri porttan gelen bir bilgiyi hex olarak ekrana basmayı ve daha sonra bu veriyi float değerine dönüştürmeyi göreceğiz. Bildiğiniz gibi tüm veriler ilk katmanda 1 ve 0 olarak gelmektedir. Bu sinyaller bizim daha rahat bir şekilde anlayabilmemiz için çeşitli sayı formatlarına dönüştürülür.

Aşağıdaki c sharp kod satırlarında seri porta veri düştüğünde SerialPort_DataRecieved() fonksiyonu çalışmaktadır. İlk önce serial buffer daki veri okunarak hex’ e dönüştürülür sonra hex bilgisi float değerine dönüştürülerek text box ta basılır.

// www.kaizen40.com
        
private void SerialPort_DataRecieved(object sender, SerialDataReceivedEventArgs e)
{
    try
    {
         Thread.Sleep(30);   // verinin tamamen gelmesini bekle

         //GelenVeri = serialPort.ReadLine();                 // string olarak oku

         byte[] data = new Byte[serialPort.BytesToRead];       // seriportta kaç adet data var
         serialPort.Read(data, 0, data.Length);                // byte olarak datayı oku
         GelenVeri = BitConverter.ToString(data).Replace("-", "");
         //GelenAscii = enc8.GetString(data);                  // ascii ye çevir

         uint num = uint.Parse(GelenVeri, System.Globalization.NumberStyles.AllowHexSpecifier);

         byte[] floatVals = BitConverter.GetBytes(num);
         fdeger = BitConverter.ToSingle(floatVals, 0);

         Invoke(new EventHandler(Goster));                    // textbox a yazmak için invoke oluştur
    }
    catch (Exception hata)
    {
         MessageBox.Show(hata.StackTrace);
    }
}

private void Goster(object sender, EventArgs e)
{
    // textbox veya diğer objelerde göstermek için burada yazın
    TextBox1.Text = fdeger.ToString();
}

Ben bu kodu bir sensorden gelen modbus bilgilerini serialport ile hex olarak okuyup float’a çevirip ekrana basmak için kullandım.


0 yorum

Bir yanıt yazın

Avatar placeholder

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

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.