lu
10 天以前 878aad490fc15b11d63fb4fa7ab7ada260f66310
DevApp/Gs.DevApp/DevFrm/Work/Frm_Work09.cs
@@ -1,8 +1,12 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Timers;
using System.Windows.Forms;
using DevExpress.Utils;
using Gs.DevApp.Entity;
using Gs.DevApp.ToolBox;
using Newtonsoft.Json;
@@ -11,26 +15,21 @@
{
    public partial class Frm_Work09 : DevExpress.XtraEditors.XtraForm
    {
        string _strType = "";
        string _webServiceName = "WorkWeight/";
        string value = string.Empty;
        /// <summary>
        /// 串口类
        /// </summary>
        private SerialPort Sp = new SerialPort();
        /// <summary>
        /// 更新UI委托,只定义,不实现
        /// gridview定时刷新
        /// </summary>
        /// <param name="text"></param>
        public delegate void HandleInterfaceUpdataDelegate(string text);
        /// <summary>
        /// 更新UI委托,实现
        /// </summary>
        private HandleInterfaceUpdataDelegate interfaceUpdataHandle;
        System.Timers.Timer timer = new System.Timers.Timer(10000); // 1000毫秒间隔
        public Frm_Work09()
        System.Timers.Timer timer = new System.Timers.Timer(10000);
        public Frm_Work09(string strType)
        {
            InitializeComponent();
            this._strType = strType;
            this.Text = _strType + ":" + this.Text;
            this.FormClosing += (s, e) =>
            {
                if (Sp.IsOpen)
@@ -42,8 +41,35 @@
                }
            };
            GetComList();
            this.comLine.getSuppler("");
            Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameterMx(gvMx1);
            if (this._strType == QcSeason.产线称重.ToString())
            {
                this.comLine.getSuppler("");
            }
            gvMx1.OptionsFind.ShowSearchNavButtons = false;
            gvMx1.OptionsView.ShowAutoFilterRow = false;
            gvMx1.OptionsView.ShowGroupPanel = false;
            gvMx1.RowStyle += (s, e) =>
            {
                //默认选中行不变色
                gvMx1.OptionsSelection.EnableAppearanceFocusedRow = false;
                //默认选中单元格不变色
                gvMx1.OptionsSelection.EnableAppearanceFocusedCell = false;
                if (e.RowHandle >= 0)
                {
                    DataRow row = gvMx1.GetDataRow(e.RowHandle);
                    if (row == null)
                        return;
                    string colorString = row["bgColor"].ToString(); // 使用十六进制表示颜色的ARGB值
                    Color color = ColorTranslator.FromHtml(colorString);
                    e.Appearance.BackColor = color;
                }
            };
            gvMx1.IndicatorWidth = 60;
            gvMx1.CustomDrawRowIndicator += (s, e) =>
            {
                if (e.Info.IsRowIndicator && e.RowHandle >= 0)
                    e.Info.DisplayText = (e.RowHandle + 1).ToString();
            };
        }
        /// <summary> 
@@ -65,17 +91,21 @@
        /// <param name="e"></param>
        private void btnStart_Click(object sender, EventArgs e)
        {
            string _comLine = comLine.GetId();
            Sp.DataReceived -= new SerialDataReceivedEventHandler(Sp_DataReceived);
            string _cmbSerialPortNum = cmbSerialPortNum.Text.Trim();
            string _cmbBaudRate = cmbBaudRate.Text.Trim();
            string _comSjw = comSjw.Text.Trim();
            string _comStopBits = comStopBits.Text.Trim();
            string _comParity = comParity.Text.Trim();
            if (string.IsNullOrEmpty(_comLine))
            if (this._strType == QcSeason.产线称重.ToString())
            {
                Gs.DevApp.ToolBox.MsgHelper.ShowError("请选择线体");
                this.comLine.Focus();
                return;
                string _comLine = comLine.GetId();
                if (string.IsNullOrEmpty(_comLine))
                {
                    Gs.DevApp.ToolBox.MsgHelper.ShowError("请选择线体");
                    this.comLine.Focus();
                    return;
                }
            }
            if (cmbSerialPortNum.SelectedIndex < 0)
            {
@@ -109,7 +139,6 @@
            }
            try
            {
                interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(UpdateTextBox);//实例化委托对象
                Sp.ReceivedBytesThreshold = 1;
                Sp.PortName = _cmbSerialPortNum;
                Sp.BaudRate = Convert.ToInt32(_cmbBaudRate);//设置波特率
@@ -130,6 +159,8 @@
                    Gs.DevApp.ToolBox.MsgHelper.ShowError("无法识别的停止位");
                }
                Sp.DataBits = int.Parse(_comSjw); // 设置数据位
                //Sp.ReadTimeout = 500; // 设置超时时间,例如500毫秒
                //Sp.ReadBufferSize = 4096; // 设置缓冲区大小
                Sp.DataReceived += new SerialDataReceivedEventHandler(Sp_DataReceived);
                Sp.ReceivedBytesThreshold = 1;
                LogHelper.Debug(this.ToString(), "打开串口通信PortName-" + Sp.PortName.ToString() + ",BaudRate-" + Sp.BaudRate.ToString() + ",StopBits-" + Sp.StopBits.ToString() + ",Parity-" + Sp.Parity.ToString());
@@ -143,7 +174,7 @@
            }
            catch (Exception exe)
            {
                LogHelper.Debug(this.ToString(), "打开失败:" + exe.Message);
                LogHelper.Debug(this.ToString(), "打开串口通信失败:" + exe.Message);
                Gs.DevApp.ToolBox.MsgHelper.ShowError("打开失败" + exe.Message);
            }
        }
@@ -155,15 +186,39 @@
        /// <param name="e"></param>
        public void Sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            string abc = string.Empty;
            string _tmpStr = string.Empty;
            try
            {
                int i = Sp.BytesToRead;
                if (i > 0)
                {
                    abc = Sp.ReadExisting();
                    LogHelper.Debug(this.ToString(), $"监听到数据:{abc}");
                    this.Invoke(interfaceUpdataHandle, abc);
                    _tmpStr = Sp.ReadExisting();
                    // Thread.Sleep(1000);
                    LogHelper.Debug(this.ToString(), $"监听到数据,字节长度:{i.ToString()},{_tmpStr}");
                    this.BeginInvoke(new Action(() =>
                    {
                        txtMsg.AppendLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff->字节数字" + i.ToString() + "->") + _tmpStr);
                        //ST,GS,+  250.2kg
                        if (_tmpStr.Length <= 0)
                        {
                            LogHelper.Debug(this.ToString(), "_tmpStr长度<=0,退出上报");
                            return;
                        }
                        if (!_tmpStr.Contains("ST"))
                        {
                            LogHelper.Debug(this.ToString(), "_tmpStr重量状态不为ST,退出上报");
                            return;
                        }
                        if (!_tmpStr.Contains("+"))
                        {
                            LogHelper.Debug(this.ToString(), "_tmpStr不包含重量+,退出上报");
                            return;
                        }
                        string[] _ary = _tmpStr.Split('+');
                        string abc = _ary.Last();//ST,GS,
                        txtNum.Text = (abc.Trim().Replace("k", "").Replace("g", "").Replace("S", "").Replace("T", "").Replace("G", "").Replace(",", ""));
                        addModel(txtNum.Text, _tmpStr);
                    }));
                }
            }
            catch (Exception ex)
@@ -173,33 +228,7 @@
            }
        }
        /// <summary>
        /// 接受到数据,开始处理数据
        /// </summary>
        /// <param name="text"></param>
        private void UpdateTextBox(string text)
        {
            //ST,GS,+  250.2kg
            string _tmpStr = text.Trim();
            if (_tmpStr.Length <= 0)
            {
                LogHelper.Debug(this.ToString(), "_tmpStr长度<=0,退出上报");
                return;
            }
            if (!_tmpStr.Contains("ST"))
            {
                LogHelper.Debug(this.ToString(), "_tmpStr重量状态不为ST,退出上报");
                return;
            }
            if (!_tmpStr.Contains("+"))
            {
                LogHelper.Debug(this.ToString(), "_tmpStr重量+,退出上报");
                return;
            }
            _tmpStr = _tmpStr.Substring(7);
            txtNum.Text = _tmpStr;
            addModel(_tmpStr);
        }
        /// <summary>
        /// 启用或禁用
        /// </summary>
@@ -217,13 +246,22 @@
        /// <summary>
        /// 上传称重数据
        /// </summary>
        private void addModel(string _realWeight)
        /// <param name="_realWeight">截取后的数量</param>
        /// <param name="_realWeightTxt">原子串</param>
        private void addModel(string _realWeight, string _realWeightTxt)
        {
            string _lineId = comLine.GetId();
            string _lineId = "";
            if (this._strType == QcSeason.产线称重.ToString())
            {
                _lineId = comLine.GetId();
            }
            else
                _lineId = "0";
            var _obj = new
            {
                lineId = _lineId,
                realWeight = _realWeight,
                realWeight = _realWeight.Trim(),
                realWeightTxt = _realWeightTxt.Trim(),
            };
            try
            {
@@ -237,7 +275,7 @@
            }
            catch (Exception ex)
            {
                ToolBox.MsgHelper.Warning("提示:" + ex.Message);
                ToolBox.MsgHelper.ShowError("提示:" + ex.Message);
            }
        }
@@ -248,13 +286,14 @@
        /// <param name="e"></param>
        private void OnTimedEvent(Object source, ElapsedEventArgs e)
        {
            if (this._strType == QcSeason.iqc称重.ToString())
                return;
            var _obj = new
            {
                lineId = comLine.GetId(),
            };
            try
            {
                var lst = new List<string>();
                var strReturn = UtilityHelper.HttpPost("", _webServiceName + "GetModelList", JsonConvert.SerializeObject(_obj), false);
                var dd = UtilityHelper.ReturnToList(strReturn);
                var dt = dd.rtnData;
@@ -268,9 +307,9 @@
            }
            catch (Exception ex)
            {
                MessageBox.Show("gvMx1:" + ex.Message);
                Toast vm = new Toast(-1, "gvMx1:" + ex.Message);
                vm.Show();
            }
        }
    }
}