NEWS

[C#] Hướng dẫn đọc thông số thiết bị Thiết bị kiểm tra Pin (HIOKI BATTERY HiTESTER BT3562)

[C#] Hướng dẫn đọc thông số thiết bị Thiết bị kiểm tra Pin (HIOKI BATTERY HiTESTER BT3562)
Đăng bởi: Thảo Meo - Lượt xem: 1041 14:18:36, 02/10/2023DEVEXPRESS   In bài viết

Xin chào các bạn, bài viết hôm nay mình chia sẻ các bạn code cách đọc thông số của thiết bị kiêm tra pin (HIOKI BATTERY HiTESTER BT3562) qua Serial port C# winform.

[C#] Đọc thông số thiết bị kiểm tra pin (HIOKI BATTERY HiTESTER BT3562)

hioki_sample

Video demo ứng dụng:

Source code C#:

using System;
using System.Windows.Forms;
using Microsoft.VisualBasic;
using Microsoft.VisualBasic.CompilerServices;

namespace Sample
{
    
    public partial class Form1
    {
        private string MsgBuf = "";       

        public Form1()
        {
            InitializeComponent();
        }

        private void Button1_Click(object sender, EventArgs e)
        {          
            SerialPort1.PortName = TextBox1.Text;       
            SerialPort1.BaudRate = 9600;              
            SerialPort1.NewLine = Constants.vbCrLf;                       
            SerialPort1.Handshake = System.IO.Ports.Handshake.None;     

            btnMeasure.Enabled = false;

            try
            {
                SerialPort1.Open();                                
                                                                     // SendMsg("*RST")                                     'Reset
                SendMsg(":TRIGger EXTernal");                        // Trigger:External
                SendMsg(":COMParator ON");
                // SendMsg(":FREQuency 200E+03")                       'Frequency:200kHz
                SendMsg("*TRG");                                     // Trigger
                SendQueryMsg(":MEASure?");                           // Acquire measured value        
                                   

                CustomShowMessage(MsgBuf);  // Display measured value
            }

            catch (Exception ex)
            {
                Interaction.MsgBox(ex.Message);
            }

            if (SerialPort1.IsOpen)
            {
                try
                {
                    SerialPort1.Close();                            
                }
                catch (Exception ex)
                {
                    Interaction.MsgBox(ex.Message);
                }
            }

            btnMeasure.Enabled = true;

        }

        private void CustomShowMessage(string msgBuf)
        {
            if(msgBuf.Length > 10)
            {
                var temp = msgBuf.Split(new char[] { ' ' });
                var temp2 = temp[1].Split('E')[0];

                txtValue.Text = temp2;  
                var currentValue = double.Parse(temp2);
                if(txtMin.Text .Length > 0 && txtMax.Text.Length >0) {
                    var min = double.Parse(txtMin.Text);
                    var max = double.Parse(txtMax.Text);

                    if (currentValue < min) {
                        MessageBox.Show($"Current value: {currentValue} < {min}");
                        return;
                    }

                    if (currentValue > max)
                    {
                        MessageBox.Show($"Current value: {currentValue} > {min}");
                        return;
                    }

                }
             
            }
        }

        private void SendMsg(string strMsg)
        {
            try
            {
                strMsg = strMsg + Constants.vbCrLf;
                SerialPort1.WriteLine(strMsg);                      
            }
            catch (Exception Ex)
            {
                Interaction.MsgBox(Ex.Message);
            }
        }

        private void SendQueryMsg(string strMsg)
        {
            try
            {
                SendMsg(strMsg);
                int Check;
                string a;
                MsgBuf = null;
                MsgBuf = SerialPort1.ReadByte().ToString();
                do                                                  // Wait until response is received                
                {
                    Check = SerialPort1.ReadByte();
                    if (Conversions.ToString(Strings.Chr(Check)) == Constants.vbLf)
                    {
                        break;
                    }
                    else if (Conversions.ToString(Strings.Chr(Check)) == Constants.vbCr)
                    {
                    }
                    else
                    {
                        MsgBuf = MsgBuf + Strings.Chr(Check);
                    }
                }
                while (true);
            }

            catch (Exception Ex)
            {
                Interaction.MsgBox(Ex.Message);
            }
        }
    }
}

 

Thanks for watching!

DOWNLOAD SOURCE

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[C#] Hướng dẫn đọc thông số thiết bị Thiết bị kiểm tra Pin (HIOKI BATTERY HiTESTER BT3562)
Đăng bởi: Thảo Meo - Lượt xem: 1041 14:18:36, 02/10/2023DEVEXPRESS   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.