自动化设备上位机设计 四

发布于:2024-07-08 ⋅ 阅读:(50) ⋅ 点赞:(0)

目录

一 设计原型

二 后台代码


一 设计原型

二 后台代码

using SimpleTCP;
using SqlSugar;
using System.Text;

namespace 自动化上位机设计
{
    public partial class Form1 : Form
    {


        SqlHelper sqlHelper = new SqlHelper();
        SqlSugarClient dbContent = null;
        bool IsRun = false;
        int Count = 0;

        //数据收集对象
        EntryClass Datas = new EntryClass();

        //网络通讯客户端:长度测试仪器
        SimpleTcpClient client = new SimpleTcpClient();

        public Form1()
        {
            InitializeComponent();

            dbContent = sqlHelper.db;

            timer1.Enabled = true;
            timer1.Tick += Timer1_Tick;

            Task.Run(() =>
            {
                //设置编码格式,默认是UTF8
                client.StringEncoder = System.Text.ASCIIEncoding.UTF8;
                //设置分隔符,默认是0x13
                client.Delimiter = Encoding.ASCII.GetBytes("\r")[0];


                //收到分割数据的事件,遇到分隔符就会触发事件
                client.DelimiterDataReceived += (sender, msg) =>
                {
                    AddLog("DelimiterStr-" + DateTime.Now.ToString() + msg.MessageString);
                };

                //收到数据的事件,可以在这里实现自己的协议
                client.DataReceived += (sender, msg) =>
                {
                    //字节数组
                    AddLog("字节数组Data:" + BitConverter.ToString(msg.Data));
                    //字符串消息
                    AddLog("字符串消息RDataseivedStr:" + msg.MessageString);

                    //记录长度数据
                    Datas.Len = msg.MessageString;
                };

                client.Connect("127.0.0.1", 8899);
            });
        }

        private void Timer1_Tick(object? sender, EventArgs e)
        {
            this.Invoke(() =>
            {
                uiLedDisplay1.Text = DateTime.Now.ToString("HH:mm:ss");
            });
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            sqlHelper.CreateTable<EntryClass>();

            //开始批量插入数据
            Task.Run(() => { AddData(); });
        }

        private void AddData()
        {

            while (true)
            {
                if (!IsRun) continue;


                //Datas.Len = new Random().Next(200, 300).ToString();
                Datas.Width = new Random().Next(40, 300).ToString();
                Datas.Hight = new Random().Next(150, 250).ToString();
                Datas.R = new Random().Next(10, 360).ToString();
                Datas.Weit = new Random().Next(20, 30).ToString();
                Datas.ZY = new Random().Next(50, 90).ToString();
                Datas.DC = new Random().Next(40, 300).ToString();
                Datas.DR = new Random().Next(400, 600).ToString();
                Datas.YL = new Random().Next(28, 88).ToString();
                Datas.WD = new Random().Next(89, 900).ToString();
                Datas.SD = new Random().Next(234, 454).ToString();
                Datas.LJ = new Random().Next(67, 89).ToString();

                //没有测量长度则不增加数据
                if (string.IsNullOrEmpty(Datas.Len)) continue;

                //数据放入数据库中
                dbContent.Insertable(Datas).ExecuteCommand();

                this.Invoke(() =>
                {
                    //同步展示参数
                    CD.Text = Datas.Len;
                    KD.Text = Datas.Width;
                    GD.Text = Datas.Hight;
                    JD.Text = Datas.R;
                    ZL.Text = Datas.Weit;
                    ZY.Text = Datas.ZY;
                    DY.Text = Datas.DC;
                    NZ.Text = Datas.DR;
                    PRESS.Text = Datas.YL;
                    CC.Text = Datas.WD;
                    SD.Text = Datas.SD;
                    LJJ.Text = Datas.LJ;

                    //参数展示到集合中
                    Data.Rows.Add(Datas.Len, Datas.Width, Datas.Hight, Datas.R, Datas.Weit, Datas.ZY, Datas.DC, Datas.DR, Datas.YL, Datas.WD, Datas.SD, Datas.LJ, DateTime.Now.ToShortTimeString(), "OK", "测试数据");

                    //计数
                    Count++;
                    uiLedDisplay2.Text = Count.ToString();

                    //打印日志
                    RunLog.AppendText("设备运行中,数据已加入到数据库\r\n");
                    ErorrLog.AppendText("设备运行中,数据已加入到数据库\r\n");
                    Log.AppendText("设备运行中,数据已加入到数据库\r\n");

                });

                Thread.Sleep(2000);
            }
        }

        private void uiSwitch1_ValueChanged(object sender, bool value)
        {
            if (uiSwitch1.Active)
            {
                uiLight1.OnColor = Color.Green;
                IsRun = true;
                RunLog.AppendText("设备启动。。。\r\n");
                ErorrLog.AppendText("设备启动。。。\r\n");
                Log.AppendText("设备启动。。。\r\n");
            }
            else
            {
                uiLight1.OnColor = Color.Red;
                IsRun = false;
                RunLog.AppendText("设备停止。。。\r\n");
                ErorrLog.AppendText("设备停止。。。\r\n");
                Log.AppendText("设备停止。。。\r\n");
            }
        }



        private void AddLog(string msg)
        {
            this.Invoke(() =>
            {
                //打印日志
                RunLog.AppendText($"{msg}\r\n");
                ErorrLog.AppendText($"{msg}\r\n");
                Log.AppendText($"{msg}\r\n");
            });
        }
    }
}


网站公告

今日签到

点亮在社区的每一天
去签到