using LB_SmartVision.CSV;
|
using LB_SmartVision.SQL;
|
using LB_SmartVisionCommon;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.Globalization;
|
using System.IO.Ports;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Windows.Controls;
|
using System.Windows.Forms;
|
|
namespace LB_SmartVision.Forms.Pages.LEDLightSourceControlPage
|
{
|
public partial class LEDLightSourceControlEditPage : System.Windows.Forms.UserControl
|
{
|
LEDControlSerialPort controlSerialPort = new LEDControlSerialPort();
|
LEDControlParams LEDControlParams = new LEDControlParams();
|
|
public Action<string, LogInfoType> LogInfo;
|
|
public LEDLightSourceControlEditPage()
|
{
|
Name = "LEDLightSourceControlEditPage";
|
Text = "光源控制配置";
|
InitializeComponent();
|
controlSerialPort.serialProtStatus += ControlSerialPort_serialProtStatus;
|
controlSerialPort.serialProtDataReceived += ControlSerialPort_serialProtDataReceived;
|
dataGridView1.MinimumSize = new System.Drawing.Size(0, 0);
|
dataGridView1.MaximumSize = new System.Drawing.Size(0, 0); // 0表示无限制
|
}
|
|
private void ControlSerialPort_serialProtDataReceived(string strInfo)
|
{
|
throw new NotImplementedException();
|
}
|
|
private void ControlSerialPort_serialProtStatus(bool status)
|
{
|
throw new NotImplementedException();
|
}
|
|
private void btnSerialPortRemove_Click(object sender, EventArgs e)
|
{
|
if (GlobalVar.dicSerialPort.ContainsKey(this.LEDControlParams.PortName))
|
{
|
GlobalVar.dicSerialPort.Remove(this.LEDControlParams.PortName);
|
}
|
ConfigManager<Dictionary<string, LEDControlParams>>.SaveConfig<Dictionary<string, LEDControlParams>>(GlobalVar.dicSerialPort, GlobalVar.AllSerialPortPath);
|
LoadLEDParamsToGrid(LEDControlParams);
|
}
|
|
private void btnSerialPortAdd_Click(object sender, EventArgs e)
|
{
|
if (InitParams())
|
{
|
//判定本地是否存在串口配置,不存在->添加,存在更新
|
if (!GlobalVar.dicSerialPort.ContainsKey(this.LEDControlParams.PortName))
|
{
|
GlobalVar.dicSerialPort.TryAdd(this.LEDControlParams.PortName, this.LEDControlParams);
|
}
|
else
|
{
|
GlobalVar.dicSerialPort[this.LEDControlParams.PortName] = this.LEDControlParams;
|
}
|
ConfigManager<Dictionary<string, LEDControlParams>>.SaveConfig<Dictionary<string, LEDControlParams>>(GlobalVar.dicSerialPort, GlobalVar.AllSerialPortPath);
|
LoadLEDParamsToGrid(LEDControlParams);
|
}
|
else
|
{
|
MessageBox.Show("串口设置参数存在异常,请检查串口设置参数!");
|
}
|
}
|
|
private void btnSerialPortSave_Click(object sender, EventArgs e)
|
{
|
if (InitParams())
|
{
|
controlSerialPort.LEDControlParams = LEDControlParams;
|
if (!GlobalVar.dicSerialPort.ContainsKey(this.LEDControlParams.PortName))
|
{
|
GlobalVar.dicSerialPort.TryAdd(this.LEDControlParams.PortName, this.LEDControlParams);
|
}
|
else
|
{
|
GlobalVar.dicSerialPort[this.LEDControlParams.PortName] = this.LEDControlParams;
|
}
|
ConfigManager<Dictionary<string, LEDControlParams>>.SaveConfig<Dictionary<string, LEDControlParams>>(GlobalVar.dicSerialPort, GlobalVar.AllSerialPortPath);
|
LoadLEDParamsToGrid(LEDControlParams);
|
}
|
else
|
{
|
MessageBox.Show("串口设置参数存在异常,请检查串口设置参数!");
|
}
|
}
|
|
private void btnOpenPort_Click(object sender, EventArgs e)
|
{
|
controlSerialPort.LEDControlParams = LEDControlParams;
|
if (!controlSerialPort.serialPort.IsOpen)
|
{
|
controlSerialPort.OpenPort();
|
}
|
else
|
{
|
controlSerialPort.ClosePort();
|
Thread.Sleep(100);
|
controlSerialPort.OpenPort();
|
}
|
}
|
|
private void btnClosePort_Click(object sender, EventArgs e)
|
{
|
controlSerialPort.ClosePort();
|
}
|
|
private void LEDLightSourceControlEditPage_Load(object sender, EventArgs e)
|
{
|
if (GlobalVar.dicSerialPort == null && File.Exists(GlobalVar.AllSerialPortPath))
|
{
|
GlobalVar.dicSerialPort = ConfigManager<Dictionary<string, LEDControlParams>>.LoadConfig<Dictionary<string, LEDControlParams>>(GlobalVar.AllSerialPortPath);
|
}
|
else if (File.Exists(GlobalVar.AllSerialPortPath))
|
{
|
GlobalVar.dicSerialPort = ConfigManager<Dictionary<string, LEDControlParams>>.LoadConfig<Dictionary<string, LEDControlParams>>(GlobalVar.AllSerialPortPath);
|
}
|
cobPortName.Items.Clear();
|
cobPortName.Items.AddRange(SerialPort.GetPortNames());
|
cobParityBit.Items.Clear();
|
foreach (var item in Enum.GetValues(typeof(Parity)))
|
{
|
cobParityBit.Items.Add(item.ToString());
|
}
|
|
cobStopBit.Items.Clear();
|
foreach (var item in Enum.GetValues(typeof(StopBits)))
|
{
|
cobStopBit.Items.Add(item.ToString());
|
}
|
|
//切换成本地参数的第一个com配置
|
if (cobPortName.Items.Count > 0)
|
{
|
cobPortName.SelectedIndex = 0;
|
}
|
else
|
{
|
return;
|
}
|
if (cobParityBit.Items.Count > 0)
|
{
|
if (GlobalVar.dicSerialPort != null && GlobalVar.dicSerialPort.Count > 0 && GlobalVar.dicSerialPort.ContainsKey(cobPortName.Text))
|
{
|
cobParityBit.Text = GlobalVar.dicSerialPort[cobPortName.Text].Parity.ToString();
|
}
|
else
|
{
|
cobParityBit.SelectedIndex = 1;
|
}
|
}
|
if (cobStopBit.Items.Count > 1)
|
{
|
if (GlobalVar.dicSerialPort != null && GlobalVar.dicSerialPort.Count > 0 && GlobalVar.dicSerialPort.ContainsKey(cobPortName.Text))
|
{
|
cobStopBit.Text = GlobalVar.dicSerialPort[cobPortName.Text].StopBit.ToString();
|
}
|
else
|
{
|
cobStopBit.SelectedIndex = 1;
|
}
|
}
|
|
if (GlobalVar.dicSerialPort != null && GlobalVar.dicSerialPort.Count > 0 && GlobalVar.dicSerialPort.ContainsKey(cobPortName.Text))
|
{
|
cobDataBit.Text = GlobalVar.dicSerialPort[cobPortName.Text].DataBit.ToString();
|
cobBaudRate.Text = GlobalVar.dicSerialPort[cobPortName.Text].DataBit.ToString();
|
}
|
else
|
{
|
cobDataBit.SelectedIndex = 1;
|
cobBaudRate.SelectedIndex = 1;
|
}
|
LoadLEDParamsToGrid(LEDControlParams);
|
}
|
|
private void cobPortName_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
LEDControlParams.PortName = cobPortName.Text.Trim();
|
}
|
|
private void cobBaudRate_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
LEDControlParams.BaudRate = Convert.ToInt32(cobBaudRate.Text.Trim());
|
}
|
|
private void cobDataBit_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
LEDControlParams.DataBit = Convert.ToInt16(cobDataBit.Text.Trim());
|
}
|
|
private void cobStopBit_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
LEDControlParams.StopBit = (StopBits)Enum.Parse(typeof(StopBits), cobStopBit.Text);
|
}
|
|
private void cobParityBit_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
LEDControlParams.Parity = (Parity)Enum.Parse(typeof(Parity), cobParityBit.Text);
|
}
|
|
private bool InitParams()
|
{
|
if (!string.IsNullOrEmpty(cobPortName.Text.Trim()))
|
{
|
LEDControlParams.PortName = cobPortName.Text.Trim();
|
}
|
else
|
{
|
return false;
|
}
|
if (!string.IsNullOrEmpty(cobBaudRate.Text.Trim()))
|
{
|
LEDControlParams.BaudRate = Convert.ToInt32(cobBaudRate.Text.Trim());
|
}
|
else
|
{
|
return false;
|
}
|
if (!string.IsNullOrEmpty(cobDataBit.Text.Trim()))
|
{
|
LEDControlParams.DataBit = Convert.ToInt16(cobDataBit.Text.Trim());
|
}
|
else
|
{
|
return false;
|
}
|
if (!string.IsNullOrEmpty(cobStopBit.Text.Trim()))
|
{
|
LEDControlParams.StopBit = (StopBits)Enum.Parse(typeof(StopBits), cobStopBit.Text);
|
}
|
else
|
{
|
return false;
|
}
|
if (!string.IsNullOrEmpty(cobParityBit.Text.Trim()))
|
{
|
LEDControlParams.Parity = (Parity)Enum.Parse(typeof(Parity), cobParityBit.Text);
|
}
|
else
|
{
|
return false;
|
}
|
return true;
|
}
|
|
private void trackBarCH1_Scroll(object sender, EventArgs e)
|
{
|
nupdSetValueCH1.Value = trackBarCH1.Value;
|
}
|
|
private void trackBarCH2_Scroll(object sender, EventArgs e)
|
{
|
nupdSetValueCH2.Value = trackBarCH2.Value;
|
}
|
|
private void trackBarCH3_Scroll(object sender, EventArgs e)
|
{
|
nupdSetValueCH3.Value = trackBarCH3.Value;
|
}
|
|
private void trackBarCH4_Scroll(object sender, EventArgs e)
|
{
|
nupdSetValueCH4.Value = trackBarCH4.Value;
|
}
|
|
private void LoadLEDParamsToGrid(LEDControlParams param)
|
{
|
// 创建 DataTable,列名直接使用字段的备注文字
|
DataTable table = new DataTable();
|
table.Columns.Add("端口号");
|
table.Columns.Add("波特率");
|
table.Columns.Add("数据位");
|
table.Columns.Add("停止位");
|
table.Columns.Add("奇偶效验位");
|
table.Columns.Add("发送的指令");
|
|
// 新建一行并赋值
|
DataRow row = table.NewRow();
|
row["端口号"] = param.PortName;
|
row["波特率"] = param.BaudRate.ToString();
|
row["数据位"] = param.DataBit.ToString();
|
row["停止位"] = param.StopBit.ToString(); // 枚举转为字符串
|
row["奇偶效验位"] = param.Parity.ToString(); // 枚举转为字符串
|
row["发送的指令"] = string.Join(";", param.SendData); // 列表转为逗号分隔字符串
|
|
table.Rows.Add(row);
|
|
// 绑定到 DataGridView
|
dataGridView1.DataSource = table;
|
|
// 可选:调整列宽等外观
|
dataGridView1.AutoResizeColumns();
|
dataGridView1.ForeColor = Color.Black;
|
dataGridView1.Dock = DockStyle.Fill;
|
}
|
|
private void nupdSetValueCH1_ValueChanged(object sender, EventArgs e)
|
{
|
try
|
{
|
trackBarCH1.Value = Convert.ToInt32(nupdSetValueCH1.Text);
|
rtxtReceive.AppendText(controlSerialPort.SetIntensity("1", nupdSetValueCH1.Text) + "\r\n");
|
LEDControlParams.SendData.TryAdd("CH1", controlSerialPort.strRend.ToString());
|
rtxtSend.AppendText(LEDControlParams.SendData["CH1"] + "\r\n");
|
rtxtSend.Select(rtxtSend.TextLength, 0);
|
rtxtSend.ScrollToCaret();
|
rtxtReceive.Select(rtxtReceive.TextLength, 0);
|
rtxtReceive.ScrollToCaret();
|
}
|
catch
|
{
|
}
|
}
|
|
private void nupdSetValueCH2_ValueChanged(object sender, EventArgs e)
|
{
|
try
|
{
|
trackBarCH2.Value = Convert.ToInt32(nupdSetValueCH2.Text);
|
rtxtReceive.AppendText(controlSerialPort.SetIntensity("2", nupdSetValueCH2.Text) + "\r\n");
|
LEDControlParams.SendData.TryAdd("CH2", controlSerialPort.strRend.ToString());
|
rtxtSend.AppendText(LEDControlParams.SendData["CH2"] + "\r\n");
|
rtxtSend.Select(rtxtSend.TextLength, 0);
|
rtxtSend.ScrollToCaret();
|
rtxtReceive.Select(rtxtReceive.TextLength, 0);
|
rtxtReceive.ScrollToCaret();
|
}
|
catch
|
{
|
}
|
}
|
|
private void nupdSetValueCH3_ValueChanged(object sender, EventArgs e)
|
{
|
try
|
{
|
trackBarCH3.Value = Convert.ToInt32(nupdSetValueCH3.Text);
|
rtxtReceive.AppendText(controlSerialPort.SetIntensity("3", nupdSetValueCH3.Text) + "\r\n");
|
LEDControlParams.SendData.TryAdd("CH3", controlSerialPort.strRend.ToString());
|
rtxtSend.AppendText(LEDControlParams.SendData["CH3"] + "\r\n");
|
rtxtSend.Select(rtxtSend.TextLength, 0);
|
rtxtSend.ScrollToCaret();
|
rtxtReceive.Select(rtxtReceive.TextLength, 0);
|
rtxtReceive.ScrollToCaret();
|
}
|
catch
|
{
|
}
|
}
|
|
private void nupdSetValueCH4_ValueChanged(object sender, EventArgs e)
|
{
|
try
|
{
|
trackBarCH4.Value = Convert.ToInt32(nupdSetValueCH4.Text);
|
rtxtReceive.AppendText(controlSerialPort.SetIntensity("4", nupdSetValueCH4.Text) + "\r\n");
|
LEDControlParams.SendData.TryAdd("CH4", controlSerialPort.strRend.ToString());
|
rtxtSend.AppendText(LEDControlParams.SendData["CH4"] + "\r\n");
|
rtxtSend.Select(rtxtSend.TextLength, 0);
|
rtxtSend.ScrollToCaret();
|
rtxtReceive.Select(rtxtReceive.TextLength, 0);
|
rtxtReceive.ScrollToCaret();
|
}
|
catch
|
{
|
}
|
}
|
|
private void LEDLightSourceControlEditPage_Resize(object sender, EventArgs e)
|
{
|
dataGridView1.Refresh();
|
}
|
}
|
}
|