using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.IO.Ports;
|
using System.Timers;
|
using System.Windows.Forms;
|
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/";
|
/// <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毫秒间隔
|
|
public Frm_Work09()
|
{
|
InitializeComponent();
|
GetComList();
|
this.comLine.getSuppler("");
|
Gs.DevApp.ToolBox.UtilityHelper.SetGridViewParameterMx(gvMx1);
|
}
|
|
/// <summary>
|
/// 从注册表获取系统串口列表
|
/// </summary>
|
private void GetComList()
|
{
|
this.cmbSerialPortNum.Clear();
|
string[] ports = SerialPort.GetPortNames();
|
foreach (string port in ports)
|
{
|
cmbSerialPortNum.Properties.Items.Add(port);
|
}
|
}
|
|
/// <summary>
|
/// 启动事件
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="e"></param>
|
private void btnStart_Click(object sender, EventArgs e)
|
{
|
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();
|
if (string.IsNullOrEmpty(_comLine))
|
{
|
Gs.DevApp.ToolBox.MsgHelper.ShowError("请选择线体");
|
this.comLine.Focus();
|
return;
|
}
|
if (cmbSerialPortNum.SelectedIndex < 0)
|
{
|
Gs.DevApp.ToolBox.MsgHelper.ShowError("请选择串口号");
|
this.cmbSerialPortNum.Focus();
|
return;
|
}
|
if (cmbBaudRate.SelectedIndex < 0)
|
{
|
Gs.DevApp.ToolBox.MsgHelper.ShowError("请选择波特率");
|
this.cmbBaudRate.Focus();
|
return;
|
}
|
if (comSjw.SelectedIndex < 0)
|
{
|
Gs.DevApp.ToolBox.MsgHelper.ShowError("请选择数据位");
|
this.comSjw.Focus();
|
return;
|
}
|
if (comStopBits.SelectedIndex < 0)
|
{
|
Gs.DevApp.ToolBox.MsgHelper.ShowError("请选择数停止位");
|
this.comStopBits.Focus();
|
return;
|
}
|
if (comParity.SelectedIndex < 0)
|
{
|
Gs.DevApp.ToolBox.MsgHelper.ShowError("请选择校验");
|
this.comParity.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;
|
if (Enum.TryParse(_comParity, out 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;
|
}
|
else
|
{
|
Gs.DevApp.ToolBox.MsgHelper.ShowError("无法识别的停止位");
|
}
|
Sp.DataReceived += new SerialDataReceivedEventHandler(Sp_DataReceived);
|
Sp.ReceivedBytesThreshold = 1;
|
LogHelper.Debug(this.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)
|
{
|
LogHelper.Debug(this.ToString(), "打开失败:" + exe.Message);
|
Gs.DevApp.ToolBox.MsgHelper.ShowError("打开失败" + exe.Message);
|
}
|
}
|
|
/// <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 = "";
|
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);
|
}
|
}
|
catch (Exception ex)
|
{
|
LogHelper.Debug(this.ToString(), ex.Message);
|
Gs.DevApp.ToolBox.MsgHelper.ShowError("收到数据:" + ex.Message);
|
return;
|
}
|
}
|
|
/// <summary>
|
/// 接受到数据,开始处理数据
|
/// </summary>
|
/// <param name="text"></param>
|
private void UpdateTextBox(string text)
|
{
|
txtNum.Text = text;
|
addModel();
|
}
|
/// <summary>
|
/// 启用或禁用
|
/// </summary>
|
/// <param name="bl"></param>
|
private void setEnable(bool bl)
|
{
|
comLine.Enabled = bl;
|
cmbSerialPortNum.Enabled = bl;
|
cmbBaudRate.Enabled = bl;
|
comSjw.Enabled = bl;
|
comStopBits.Enabled = bl;
|
comParity.Enabled = bl;
|
btnStart.Enabled = false;
|
}
|
/// <summary>
|
/// 上传称重数据
|
/// </summary>
|
private void addModel()
|
{
|
string _lineId = comLine.GetId();
|
string _realWeight = txtNum.Text.Trim();
|
var _obj = new
|
{
|
lineId = _lineId,
|
realWeight = _realWeight,
|
};
|
try
|
{
|
string strJson = UtilityHelper.HttpPost("", _webServiceName + "EditModel", JsonConvert.SerializeObject(_obj));
|
ReturnModel<dynamic> _rtn = ToolBox.UtilityHelper.ReturnToDynamic(strJson);
|
if (_rtn.rtnCode <= 0)
|
{
|
Toast vm = new Toast(-1, _rtn.rtnMsg);
|
vm.Show();
|
}
|
}
|
catch (Exception ex)
|
{
|
ToolBox.MsgHelper.Warning("提示:" + ex.Message);
|
}
|
}
|
|
private void OnTimedEvent(Object source, ElapsedEventArgs e)
|
{
|
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;
|
BeginInvoke(new Action(() => {
|
// txtNum.Text = DateTime.Now.ToString();
|
gcMx1.BindingContext = new BindingContext();
|
gcMx1.DataSource = dt;
|
gcMx1.ForceInitialize();
|
gvMx1.BestFitColumns();
|
}));
|
}
|
catch (Exception ex)
|
{
|
MessageBox.Show(ex.Message);
|
}
|
|
}
|
}
|
}
|