Code C# Kết Nối Cân Điện Tử

Viết chương trình Code C# kết nối cân điện tử và lấy giá trị của cân hiển thị lên Form trong Window Form.

Bài này chúng tôi sẽ hướng dẫn các bạn viết chương trình kiểm soát cân điện tử tự động.Nghĩa là chương trình có thể kết nối tới cân điện tử và lấy giá trị của cân hiển thị lên Form và kiểm soát giá trị cân đó.

Ví dụ khi bạn cân 1 vật nào đó nếu trọng lượng của vật đó lớn hơn giới hạn hoặc nhỏ hơn giới hạn mà bạn quy định thì nó sẽ có thông báo lỗi cho bạn biết.

Tôi đang làm về chủ để về kiểm soát việc cân sản phẩm của công đoạn đóng gói trên chuyền sản xuất trong nhà máy.Do đó tôi sẽ viết một chương trình demo này để giúp các bạn hiểu và biết được cách kết nối tới cân điện tử và lấy giá trị từ cân điện tử.

Sau đây là các bước xây dựng chương trình kết nối và kiểm soát cân điện tử tự động.

Bước 1: Kết nối Máy tính với cân điện tử.

- Sử dụng dây kết nối, đầu cổng COM cắm vào cân, đầu USB cắm vào máy tính.

Bước 2: Cài đặt Driver cổng COM.

- Các bạn lưu ý cần phải tải và cài đặt Driver USB to Serial Port.

Bước 3: Viết chương trình Code C#

Chương trình cân sản phẩm và quét mã vạch sản phẩm.Nếu cân trọng lượng của sản phẩm không đúng quy định sẽ có thông báo.

  1. Thiết kế Form:

     Tạo Form : FrmWeight như hình bên dưới.

  1. Viết Code

     Bước 1: Code C# mở và load cổng COM cho nút button “Load COM Port”.

Ví dụ Code

private void btn_SettingCOM_Click(object sender, EventArgs e)
        {
            int comLength, RefreshCount = 0;
            string[] arrayCom;
            string comName;
            try
            {
                comLength = SerialPort.GetPortNames().Length;
                arrayCom = new string[comLength];
                arrayCom = SerialPort.GetPortNames();
                comLength = SerialPort.GetPortNames().Length;
                comName = arrayCom[RefreshCount].ToString();
                btn_SettingCOM.Text = comName;
                RefreshCount = RefreshCount + 1;
                if (serialPort1.IsOpen)
                {
                    serialPort1.Close();
                }
                serialPort1.PortName = comName;
                serialPort1.Open();
                if (RefreshCount == comLength)
                {
                    RefreshCount = 0;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Open COM Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

     Bước 2: Code C# lấy dữ liệu từ cân điện tử và hiển thị lên Form thông qua cổng COM “SerialPort1

Ví dụ Code

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            string tDataFromComPort, Receive_Data, Show_Data, message = "";
            try
            {
                tDataFromComPort = serialPort1.ReadLine();
                if (tDataFromComPort != "")
                {
                   Receive_Data = tDataFromComPort.ToString();
                  Show_Data = Receive_Data.Replace("+", "").Replace("kg", "").Replace("-", "").Replace("g", "").Replace(" ", "").Replace("\r", "").ToString();   
                    if (lbl_Weight.InvokeRequired)
                    {
                      lbl_Weight.Invoke(new MethodInvoker(delegate { lbl_Weight.Text = Show_Data.Trim(); }));   //Lấy giá trị và hiển thị trọng lượng vào lbl_Weiht
                    }
                   
                }
            }
            catch (Exception ex)
            {
                message = ex.Message.ToString();
            }
        }

     Bước 3: Scan mã vạch sản phẩm SN.

Lưu ý: Cần đặt sản phẩm lên cân trước sau đó mới quét mã SN của vạch sản phẩm.Nếu trọng lượng của sản phẩm trong khoảng từ 1kg đến 2 kg thì là ok, ngược lại sẽ là NG.

Ví dụ Code

private void txt_SN_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                txt_SN.Text = txt_SN.Text.Trim();
                lbl_MessageBox.Text = txt_SN.Text + "Put a box to Weight.";
                if(Convert.ToDouble(lbl_Weight.Text) > 1.0000 && Convert.ToDouble(lbl_Weight.Text) < 2.0000)
                {
                    MessageBox.Show("The Weight is Ok.");
                    lbl_Weight.Text = "0.0000";
                }    
                else
                {
                    MessageBox.Show("The Weight is NG.");
                    lbl_Weight.Text = "0.0000";
                    return;
                }    
            }    
        }

Sau đây là toàn bộ source code của chương trình cân điện tử.

Ví dụ Code

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;

namespace PrintBarCode_Demo
{
    public partial class FrmWeight : Form
    {
        public FrmWeight()
        {
            InitializeComponent();
        }

        delegate void ThreadsSynchronization();


        private void btn_SettingCOM_Click(object sender, EventArgs e)
        {
            int comLength, RefreshCount = 0;
            string[] arrayCom;
            string comName;
            try
            {
                comLength = SerialPort.GetPortNames().Length;
                arrayCom = new string[comLength];
                arrayCom = SerialPort.GetPortNames();
                comLength = SerialPort.GetPortNames().Length;
                comName = arrayCom[RefreshCount].ToString();
                btn_SettingCOM.Text = comName;
                RefreshCount = RefreshCount + 1;
                if (serialPort1.IsOpen)
                {
                    serialPort1.Close();
                }
                serialPort1.PortName = comName;
                serialPort1.Open();
                if (RefreshCount == comLength)
                {
                    RefreshCount = 0;
                }
            }
            catch (Exception ex)
            {
           MessageBox.Show(ex.Message, "Open COM Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            string tDataFromComPort, Receive_Data, Show_Data, message = "";
            try
            {
                tDataFromComPort = serialPort1.ReadLine();
                if (tDataFromComPort != "")
                {
                  Receive_Data = tDataFromComPort.ToString();
                  Show_Data = Receive_Data.Replace("+", "").Replace("kg", "").Replace("-", "").Replace("g", "").Replace(" ", "").Replace("\r", "").ToString();   
                   if (lbl_Weight.InvokeRequired)
                   {
                      lbl_Weight.Invoke(new MethodInvoker(delegate { lbl_Weight.Text = Show_Data.Trim(); }));
                    }
                }
            }
            catch (Exception ex)
            {
                message = ex.Message.ToString();
            }
        }

 

        private void txt_SN_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                txt_SN.Text = txt_SN.Text.Trim();
                lbl_MessageBox.Text = txt_SN.Text + "Put a box to Weight.";
                if(Convert.ToDouble(lbl_Weight.Text) > 1.0000 && Convert.ToDouble(lbl_Weight.Text) < 2.0000)
                {
                    MessageBox.Show("The Weight is Ok.");
                    lbl_Weight.Text = "0.0000";
                }    
                else
                {
                    MessageBox.Show("The Weight is NG.");
                    lbl_Weight.Text = "0.0000";
                    return;
                }    
            }    
        }
       
    }
}