| | |
| | | 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; |
| | | |
| | | |
| | | namespace Gs.DevApp.DevFrm.Work |
| | | { |
| | | public partial class Frm_Work09 : DevExpress.XtraEditors.XtraForm |
| | | { |
| | | string _webServiceName = "WorkWeight/"; |
| | | string value = string.Empty; |
| | | /// <summary> |
| | | /// 串口类 |
| | | /// </summary> |
| | | private SerialPort Sp = new SerialPort(); |
| | | /// <summary> |
| | | /// 更新UI委托,只定义,不实现 |
| | | /// 定时刷新 |
| | | /// </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毫秒间隔 |
| | | |
| | | System.Timers.Timer timer = new System.Timers.Timer(10000); |
| | | public Frm_Work09() |
| | | { |
| | | InitializeComponent(); |
| | | this.FormClosing += (s, e) => |
| | | { |
| | | if (Sp.IsOpen) |
| | | Sp.Close(); |
| | | if (timer != null) |
| | | { |
| | | timer.Stop(); |
| | | timer.Dispose(); |
| | | } |
| | | }; |
| | | GetComList(); |
| | | this.comLine.getSuppler(""); |
| | | Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameterMx(gvMx1); |
| | | 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> |
| | |
| | | cmbSerialPortNum.Properties.Items.Add(port); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 启动事件 |
| | | /// </summary> |
| | |
| | | /// <param name="e"></param> |
| | | private void btnStart_Click(object sender, EventArgs e) |
| | | { |
| | | Sp.DataReceived -= new SerialDataReceivedEventHandler(Sp_DataReceived); |
| | | string _comLine = comLine.GetId(); |
| | | string _cmbSerialPortNum = cmbSerialPortNum.SelectedText.Trim(); |
| | | string _cmbBaudRate = cmbBaudRate.SelectedText.Trim(); |
| | | string _comSjw = comSjw.SelectedText.Trim(); |
| | | string _comStopBits = comStopBits.SelectedText.Trim(); |
| | | string _comParity = comParity.SelectedText.Trim(); |
| | | 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)) |
| | | { |
| | | Gs.DevApp.ToolBox.MsgHelper.ShowError("请选择线体"); |
| | |
| | | } |
| | | if (comStopBits.SelectedIndex < 0) |
| | | { |
| | | Gs.DevApp.ToolBox.MsgHelper.ShowError("请选择数停止位"); |
| | | Gs.DevApp.ToolBox.MsgHelper.ShowError("请选择停止位"); |
| | | this.comStopBits.Focus(); |
| | | return; |
| | | } |
| | |
| | | } |
| | | try |
| | | { |
| | | interfaceUpdataHandle = new HandleInterfaceUpdataDelegate(UpdateTextBox);//实例化委托对象 |
| | | Sp.RtsEnable = true; |
| | | Sp.DtrEnable = true; |
| | | Sp.ReceivedBytesThreshold = 1; |
| | | Sp.PortName = this.cmbSerialPortNum.Text.Trim(); |
| | | Sp.BaudRate = Convert.ToInt32(this.cmbBaudRate.Text.Trim()); |
| | | // Sp.Parity = Parity.Even; |
| | | Sp.PortName = _cmbSerialPortNum; |
| | | Sp.BaudRate = Convert.ToInt32(_cmbBaudRate);//设置波特率 |
| | | if (Enum.TryParse(_comParity, out Parity pt1)) |
| | | { |
| | | Sp.Parity = pt1; |
| | | Sp.Parity = pt1;// 设置校验位 |
| | | } |
| | | else |
| | | { |
| | | Gs.DevApp.ToolBox.MsgHelper.ShowError("无法识别的校验"); |
| | | } |
| | | // Sp.StopBits = StopBits.One; |
| | | if (Enum.TryParse(_comStopBits, out StopBits pt2)) |
| | | { |
| | | Sp.StopBits = pt2; |
| | | Sp.StopBits = pt2;//设置停止位 |
| | | } |
| | | else |
| | | { |
| | | 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(), "打开串口通信"); |
| | | LogHelper.Debug(this.ToString(), "打开串口通信PortName-" + Sp.PortName.ToString() + ",BaudRate-" + Sp.BaudRate.ToString() + ",StopBits-" + Sp.StopBits.ToString() + ",Parity-" + Sp.Parity.ToString()); |
| | | if (!Sp.IsOpen) |
| | | Sp.Open(); |
| | | setEnable(false); |
| | | //timer1.Enabled = false; |
| | | // LogHelper.Debug(this.ToString(), "启动刷新数据定时器"); |
| | | // timer1.Start(); |
| | | timer.Elapsed += OnTimedEvent; |
| | | timer.AutoReset = true; // 设置为true表示重复执行,false表示执行一次后停止 |
| | | timer.Enabled = true; // 开始计时 |
| | | |
| | | Gs.DevApp.ToolBox.MsgHelper.ShowInformation("打开成功!"); |
| | | } |
| | | catch (Exception exe) |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 串收到数据 |
| | | /// 串口收到数据 |
| | | /// </summary> |
| | | /// <param name="sender"></param> |
| | | /// <param name="e"></param> |
| | | public void Sp_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) |
| | | { |
| | | //string start = "\nwn"; |
| | | string abc = string.Empty; |
| | | string strTemp = ""; |
| | | string _tmpStr = string.Empty; |
| | | try |
| | | { |
| | | LogHelper.Debug(this.ToString(), $"1监听到数据开始: "); |
| | | int i = Sp.BytesToRead; |
| | | LogHelper.Debug(this.ToString(), $"2监听到字节数:{i}"); |
| | | if (i > 0) |
| | | { |
| | | abc = Sp.ReadExisting(); |
| | | LogHelper.Debug(this.ToString(), $"3监听到数据:{abc}"); |
| | | //strTemp = abc.Substring(7, 7); |
| | | //LogHelper.Debug(this.ToString(), :截取数据:{strTemp}"); |
| | | //value = Math.Round(float.Parse(strTemp), 2).ToString(); |
| | | //LogHelper.Debug(this.ToString(), :转换数据:{value}"); |
| | | //this.Invoke(interfaceUpdataHandle, value); |
| | | 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) |
| | | { |
| | | LogHelper.Debug(this.ToString(), ex.Message); |
| | | Gs.DevApp.ToolBox.MsgHelper.ShowError("收到数据:" + ex.Message); |
| | | LogHelper.Debug(this.ToString(), $"监听到数据error:{ex.Message}"); |
| | | return; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 接受到数据,开始处理数据 |
| | | /// </summary> |
| | | /// <param name="text"></param> |
| | | private void UpdateTextBox(string text) |
| | | { |
| | | txtNum.Text = text; |
| | | addModel(); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 启用或禁用 |
| | | /// </summary> |
| | |
| | | /// <summary> |
| | | /// 上传称重数据 |
| | | /// </summary> |
| | | private void addModel() |
| | | /// <param name="_realWeight">截取后的数量</param> |
| | | /// <param name="_realWeightTxt">原子串</param> |
| | | private void addModel(string _realWeight, string _realWeightTxt) |
| | | { |
| | | string _lineId = comLine.GetId(); |
| | | string _realWeight = txtNum.Text.Trim(); |
| | | var _obj = new |
| | | { |
| | | lineId = _lineId, |
| | | realWeight = _realWeight, |
| | | realWeight = _realWeight.Trim(), |
| | | realWeightTxt = _realWeightTxt.Trim(), |
| | | }; |
| | | try |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | private void OnTimedEvent(Object source, ElapsedEventArgs e) |
| | | /// <summary> |
| | | /// 定时读取列表 |
| | | /// </summary> |
| | | /// <param name="source"></param> |
| | | /// <param name="e"></param> |
| | | private void OnTimedEvent(Object source, ElapsedEventArgs e) |
| | | { |
| | | var _obj = new |
| | | { |
| | |
| | | try |
| | | { |
| | | var lst = new List<string>(); |
| | | var strReturn = UtilityHelper.HttpPost("", _webServiceName + "GetModelList", JsonConvert.SerializeObject(_obj),false); |
| | | var strReturn = UtilityHelper.HttpPost("", _webServiceName + "GetModelList", JsonConvert.SerializeObject(_obj), false); |
| | | var dd = UtilityHelper.ReturnToList(strReturn); |
| | | var dt = dd.rtnData; |
| | | BeginInvoke(new Action(() => { |
| | | // txtNum.Text = DateTime.Now.ToString(); |
| | | BeginInvoke(new Action(() => |
| | | { |
| | | gcMx1.BindingContext = new BindingContext(); |
| | | gcMx1.DataSource = dt; |
| | | gcMx1.ForceInitialize(); |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | MessageBox.Show(ex.Message); |
| | | Toast vm = new Toast(-1, "gvMx1:" + ex.Message); |
| | | vm.Show(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |