Files
LL17-honghai/C-Windows-1/Form1.cs
2025-11-21 10:50:27 +08:00

2476 lines
93 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using HslCommunication;
using HslCommunication.ModBus;
using Microsoft.Win32;
using System;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
using ZXing;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.HSSF.UserModel;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Button;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using NPOI.SS.Formula.Functions;
namespace C_Windows_1
{
public partial class Form1 : Form
{
// Token: 0x06000003 RID: 3
[DllImport("ATS_Station_Managment.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int ATS_SelectTestYorN_Batch_LineName(string MainSN, string ATSStationName, string MaterialCode, string Batch, string LineName, string Value2, string Value3, out char TestYorN);
// Token: 0x06000004 RID: 4
[DllImport("ATS_Station_Managment.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int ATS_InsertDataRow_JIG_V2(string strlinename, string strbatch, string strlocation, string strstation, string strsn, int iresult, string errorinfo, string JIG_Number, string strswversion, string strremark, string strkeys, string strvalues);
public int stage = 10;
private int write = 0;
private string timestamp;
private string fullpressure;
private string balanpressure;
public static Form1 f1;
private double delaytime;
private float X, Y;
private string DLeakPressure = "0";
private string DLeak = "0";
public OperateResult operateResult21;
public OperateResult operateResult22;
public OperateResult<bool> operateResult23;
public ModbusRtu CH1 = new ModbusRtu();
public ModbusRtu CH2 = new ModbusRtu();
//产测计数
public string codeBaudrate;
public int ChanSum;
public int ChanPass;
public static UInt16[] ReadData = new UInt16[1000];
public static UInt16[] ReadData2 = new UInt16[1000];
public string codeport;
public static int TIME; //已经使用时间
public static int timeflag = 0;
public static int Stipulatetime;//规定时间
public static string tablename;
string CODE;
public Form1()
{
f1 = this;
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
}
//窗口自适应分辨率
private void setTag(Control cons)
{
foreach (Control con in cons.Controls)
{
con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size;
if (con.Controls.Count > 0)
setTag(con);
}
}
private void setControls(float newx, float newy, Control cons)
{
try
{
foreach (Control con in cons.Controls)
{
string[] mytag = con.Tag.ToString().Split(new char[] { ':' });
float a = Convert.ToSingle(mytag[0]) * newx;
con.Width = (int)a;
a = Convert.ToSingle(mytag[1]) * newy;
con.Height = (int)(a);
a = Convert.ToSingle(mytag[2]) * newx;
con.Left = (int)(a);
a = Convert.ToSingle(mytag[3]) * newy;
con.Top = (int)(a);
Single currentSize = Convert.ToSingle(mytag[4]) * newy;
con.Font = new System.Drawing.Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
if (con.Controls.Count > 0)
{
setControls(newx, newy, con);
}
}
}
catch (Exception)
{
}
}
//窗口改变尺寸事件
private void Form1_Resize(object sender, EventArgs e)
{
// throw new Exception("The method or operation is not implemented.");
float newx = (this.Width) / X;
// float newy = (this.Height - this.statusStrip1.Height) / (Y - y);
float newy = this.Height / Y;
setControls(newx, newy, this);
// this.Text = this.Width.ToString() + " " + this.Height.ToString();
}
public enum yiqi
{
start,//启动 0
rst,//复位 1
prepare,//准备 2
test,//测试 3
finish,//完成导出数据4
writedate,//写入数据 5
standby,//待机 6
};
//UInt16转float
public static float TwoUInt16ToFloat(UInt16 high, UInt16 low)
{
Int32 sum = (high << 16) + (low & 0XFFFF);
byte[] bs = BitConverter.GetBytes(sum);
float f1 = BitConverter.ToSingle(BitConverter.GetBytes(sum), 0);
return f1;
}
public int workstation;
public int workstation2;
//sta 起始寄存器
//number 读取数量
//shangweiji 存入数组
/// <summary>
/// //////////////////
/// </summary>
/// <param name="sta"></起始寄存器>
/// <param name="number"></读取数量>
/// <param name="shangweiji"></存入数组>
public OperateResult<byte[]> Modbusread(int sta, int number, UInt16[] shangweiji)
{
try
{
int start = number;
OperateResult<byte[]> reslutget;
reslutget = CH1.Read(Convert.ToString(sta), Convert.ToUInt16(number));
int i, j;
i = 0;
j = 0;
int aaa2 = sta;
if (reslutget.IsSuccess == true)
for (; sta < aaa2 + number; sta++)
{
{
shangweiji[sta] = (ushort)((reslutget.Content[2 * i] << 8) + reslutget.Content[2 * i + 1]);
}
i++;
}
return reslutget;
}
catch (Exception)
{
throw;
}
}
public OperateResult<byte[]> Modbusread2(int sta, int number, UInt16[] shangweiji)
{
try
{
int start = number;
OperateResult<byte[]> reslutget;
reslutget = CH2.Read(Convert.ToString(sta), Convert.ToUInt16(number));
int i, j;
i = 0;
j = 0;
int aaa2 = sta;
if (reslutget.IsSuccess == true)
for (; sta < aaa2 + number; sta++)
{
{
shangweiji[sta] = (ushort)((reslutget.Content[2 * i] << 8) + reslutget.Content[2 * i + 1]);
}
i++;
}
return reslutget;
}
catch (Exception)
{
throw;
}
}
public void ModbusRtuint(int CH, ModbusRtu X, byte station, string COM, int Bund, int numberbit, StopBits stopbit, Parity parity)
{
try
{
X.Close();
X.Station = station;
X.SerialPortInni(COM, Bund, numberbit, stopbit, parity);
X.Open();
X.ReceiveTimeout = 300;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
if(CH == 1)
{
lb_CH1ConnectionStatus.Text = "未连接";
lb_CH1ConnectionStatus.ForeColor = Color.Red;
}
else if (CH == 2)
{
lb_CH2ConnectionStatus.Text = "未连接";
lb_CH2ConnectionStatus.ForeColor = Color.Red;
}
}
}
public void CH1machine()//主要负责测试数据读取,写入
{
switch (workstation)
{
case (int)yiqi.start:
operateResult22 = CH1.WriteCoil("540", true);
if (operateResult22.IsSuccess)
{
workstation = (int)yiqi.prepare;
}
break;
case (int)yiqi.rst:
operateResult21 = CH1.WriteCoil("86", true);
pb_CH1progressBar.Value = 0;
if (operateResult21.IsSuccess)
{
workstation = (int)yiqi.standby;
}
break;
case (int)yiqi.prepare:
ReadData[9] = 0;
operateResult21 = Modbusread(25, 6, ReadData);
lb_CH1Result.Text = "";
if (operateResult21.IsSuccess == true)
{
int aaa;
aaa = ReadData[25] + ReadData[26] + ReadData[27] + ReadData[28] + ReadData[30];
pb_CH1progressBar.Value = 0;
pb_CH1progressBar.Maximum = aaa;
workstation = (int)yiqi.test;
}
break;
case (int)yiqi.test:
Modbusread(8, 2, ReadData);
Modbusread(16, 4, ReadData);
Modbusread(25, 24, ReadData);
int ba = pb_CH1progressBar.Value + 2;
if (ba >= pb_CH1progressBar.Maximum)
ba = pb_CH1progressBar.Maximum;
pb_CH1progressBar.Value = ba;
if (ReadData[8] != 0 && (ReadData[9] == 1 || ReadData[9] == 2))//当仪器状态位不为0且有结果时
{
workstation = (int)yiqi.finish;
}
if (ReadData[8] == 0)
{
System.Threading.Thread.Sleep(300);
Modbusread(8, 2, ReadData);
if (ReadData[9] == 1 || ReadData[9] == 2)
{
workstation = (int)yiqi.finish;
}
else
{
pb_CH1progressBar.Value = 0;
workstation = (int)yiqi.standby;
}
}
break;
case (int)yiqi.standby:
Modbusread(8, 2, ReadData);
if (ReadData[8] != 0 && ReadData[9] == 0)
{
workstation = (int)yiqi.prepare;
}
break;
case (int)yiqi.finish:
Modbusread(8, 2, ReadData);
Modbusread(16, 4, ReadData);
pb_CH1progressBar.Value = pb_CH1progressBar.Maximum;
Display(1, tb_CH1Code.Text);
CreateFile(1, tb_CH1Code.Text);
tb_CH1Code.Clear();
workstation = (int)yiqi.standby;
break;
default:
break;
}
}
public void CH1MachineDisplay()
{
switch (workstation)
{
case (int)yiqi.start:
//MachineStatus.Text = "开始测试";
break;
case (int)yiqi.rst:
lb_CH1yiqiStatus.Text = "复位";
lb_CH1LeakPressure.Text = "";
lb_CH1PressureUnit.Text = "";
lb_CH1LeakUnit.Text = "";
lb_CH1Leak.Text = "";
label2.Text = "";
lb_CH1Result.Text = "";
break;
case (int)yiqi.standby:
lb_CH1yiqiStatus.Text = "待机中";
tb_CH1Code.Enabled = true;
break;
case (int)yiqi.prepare:
lb_CH1Result.Text = "";
textBox3.Text = "";
textBox3.BackColor = Color.White;
break;
case (int)yiqi.test:
lb_CH1yiqiStatus.Text = "测试中";
switch (ReadData[41])
{
case 1: lb_CH1PressureUnit.Text = "KPa"; break;
case 2: lb_CH1PressureUnit.Text = "bar"; break;
case 0: lb_CH1PressureUnit.Text = "Pa"; break;
case 3: lb_CH1PressureUnit.Text = "atm"; break;
case 4: lb_CH1PressureUnit.Text = "psi"; break;
case 5: lb_CH1PressureUnit.Text = "mmHg";break;
}
switch (ReadData[40])
{
case 0: lb_CH1LeakUnit.Text = "Pa"; break;
case 1: lb_CH1LeakUnit.Text = "Kpa"; break;
case 2: lb_CH1LeakUnit.Text = "mbar"; break;
case 3: lb_CH1LeakUnit.Text = "sccm"; break;
case 4: lb_CH1LeakUnit.Text = "CCM/S";break;
case 5: lb_CH1LeakUnit.Text = "Pa/s"; break;
}
if (ReadData[9] == 2)
{
lb_CH1Result.Text = "NG";
lb_CH1Result.ForeColor = Color.Red;
}
if (ReadData[9] == 1)
{
lb_CH1Result.Text = "OK";
lb_CH1Result.ForeColor = Color.Green;
}
// CH1文本框读取的压力和泄漏量
lb_CH1LeakPressure.Text = TwoUInt16ToFloat(ReadData[17], ReadData[16]).ToString("f3");
lb_CH1Leak.Text = TwoUInt16ToFloat(ReadData[19], ReadData[18]).ToString("f1");
break;
case (int)yiqi.finish:
if (ReadData[9] == 2)
{
lb_CH1Result.Text = "NG";
lb_CH1Result.ForeColor = Color.Red;
}
if (ReadData[9] == 1)
{
lb_CH1Result.Text = "OK";
lb_CH1Result.ForeColor = Color.Green;
}
lb_CH1LeakPressure.Text = TwoUInt16ToFloat(ReadData[17], ReadData[16]).ToString("f3");
lb_CH1Leak.Text = TwoUInt16ToFloat(ReadData[19], ReadData[18]).ToString("f1");
lb_CH1yiqiStatus.Text = "测试结束";
break;
default: break;
}
}
public void CH2machine()
{
switch (workstation2)
{
case (int)yiqi.start:
OperateResult operateResult = CH2.WriteCoil("540", true);
if (operateResult.IsSuccess)
{
workstation2 = (int)yiqi.prepare;
}
break;
case (int)yiqi.rst:
OperateResult operateResult86 = CH2.WriteCoil("86", true);
pb_CH2progressBar.Value = 0;
if (operateResult86.IsSuccess)
{
workstation2 = (int)yiqi.standby;
}
break;
case (int)yiqi.prepare:
ReadData2[9] = 0;
OperateResult operateResult25 = Modbusread2(25, 6, ReadData2);
lb_CH2Result.Text = "";
if (operateResult25.IsSuccess == true)
{
int aaa;
aaa = ReadData2[25] + ReadData2[26] + ReadData2[27] + ReadData2[28] + ReadData2[30];
pb_CH2progressBar.Value = 0;
pb_CH2progressBar.Maximum = aaa;
workstation2 = (int)yiqi.test;
}
break;
case (int)yiqi.test:
Modbusread2(8, 2, ReadData2);
Modbusread2(16, 4, ReadData2);
Modbusread2(25, 24, ReadData2);
int ba = pb_CH2progressBar.Value + 2;
if (ba >= pb_CH2progressBar.Maximum)
ba = pb_CH2progressBar.Maximum;
pb_CH2progressBar.Value = ba;
if (ReadData2[8] != 0 && (ReadData2[9] == 1 || ReadData2[9] == 2)) // 当仪器状态位不为0且有结果时
{
workstation2 = (int)yiqi.finish;
}
if (ReadData2[8] == 0)
{
System.Threading.Thread.Sleep(300);
Modbusread2(8, 2, ReadData2);
if (ReadData2[9] == 1 || ReadData2[9] == 2)
{
workstation2 = (int)yiqi.finish;
}
else
{
pb_CH2progressBar.Value = 0;
workstation2 = (int)yiqi.standby;
}
}
break;
case (int)yiqi.standby:
Modbusread2(8, 2, ReadData2);
if (ReadData2[8] != 0 && ReadData2[9] == 0)
{
workstation2 = (int)yiqi.prepare;
}
break;
case (int)yiqi.finish:
Modbusread2(8, 2, ReadData2);
Modbusread2(16, 4, ReadData2);
pb_CH2progressBar.Value = pb_CH2progressBar.Maximum;
Display(2, tb_CH2Code.Text);
CreateFile(2, tb_CH2Code.Text);
tb_CH2Code.Clear();
workstation2 = (int)yiqi.standby;
break;
default:
break;
}
}
public void CH2MachineDisplay()
{
switch (workstation2)
{
case (int)yiqi.start:
//MachineStatus.Text = "开始测试";
break;
case (int)yiqi.rst:
lb_CH2yiqiStatus.Text = "复位";
lb_CH2LeakPressure.Text = "";
lb_CH2PressureUnit.Text = "";
lb_CH2LeakUnit.Text = "";
lb_CH2Leak.Text = "";
label2.Text = "";
lb_CH2Result.Text = "";
break;
case (int)yiqi.standby:
lb_CH2yiqiStatus.Text = "待机中";
tb_CH2Code.Enabled = true;
break;
case (int)yiqi.prepare:
lb_CH2Result.Text = "";
textBox3.Text = "";
textBox3.BackColor = Color.White;
break;
case (int)yiqi.test:
lb_CH2yiqiStatus.Text = "测试中";
// 判断单位
switch (ReadData2[41])
{
case 0: lb_CH2PressureUnit.Text = "Pa"; break;
case 1: lb_CH2PressureUnit.Text = "KPa"; break;
case 2: lb_CH2PressureUnit.Text = "bar"; break;
case 3: lb_CH2PressureUnit.Text = "atm"; break;
case 4: lb_CH2PressureUnit.Text = "psi"; break;
case 5: lb_CH2PressureUnit.Text = "mmHg"; break;
}
switch (ReadData2[40])
{
case 0: lb_CH2LeakUnit.Text = "Pa"; break;
case 1: lb_CH2LeakUnit.Text = "Kpa"; break;
case 2: lb_CH2LeakUnit.Text = "mbar"; break;
case 3: lb_CH2LeakUnit.Text = "sccm"; break;
case 4: lb_CH2LeakUnit.Text = "CCM/S"; break;
case 5: lb_CH2LeakUnit.Text = "Pa/s"; break;
}
if (ReadData2[9] == 2)
{
lb_CH2Result.Text = "NG";
lb_CH2Result.ForeColor = Color.Red;
}
if (ReadData2[9] == 1)
{
lb_CH2Result.Text = "OK";
lb_CH2Result.ForeColor = Color.Green;
}
// CH2文本框读取的压力和泄漏量
lb_CH2LeakPressure.Text = TwoUInt16ToFloat(ReadData2[17], ReadData2[16]).ToString("f3");
lb_CH2Leak.Text = TwoUInt16ToFloat(ReadData2[19], ReadData2[18]).ToString("f1");
break;
case (int)yiqi.finish:
if (ReadData2[9] == 2)
{
lb_CH2Result.Text = "NG";
lb_CH2Result.ForeColor = Color.Red;
}
if (ReadData2[9] == 1)
{
lb_CH2Result.Text = "OK";
lb_CH2Result.ForeColor = Color.Green;
}
lb_CH2LeakPressure.Text = TwoUInt16ToFloat(ReadData2[17], ReadData2[16]).ToString("f3");
lb_CH2Leak.Text = TwoUInt16ToFloat(ReadData2[19], ReadData2[18]).ToString("f1");
lb_CH2yiqiStatus.Text = "测试结束";
break;
default: break;
}
}
private void ReadINI()
{
string path = System.Environment.CurrentDirectory + "\\Config";
//生成目录
//创建文件夹
if (Directory.Exists(path) == false)//如果不存在就创建file文件夹
{
Directory.CreateDirectory(path);
}
path = path + "\\Config";
if (File.Exists(path))
{
ConfigINI config = new ConfigINI(path);
this.JIG_Number1.Text = config.IniReadValue("Mes", "JIG_Number1");
this.strlinename.Text = config.IniReadValue("Mes", "strlinename");
this.strbatch.Text = config.IniReadValue("Mes", "strbatch");
this.strlocation.Text = config.IniReadValue("Mes", "strlocation");
this.strbatch.Text = config.IniReadValue("Mes", "strbatch");
this.strstation.Text = config.IniReadValue("Mes", "strstation");
}
}
//窗口初始化
private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
// 窗口自适应分辨率
this.Resize += new EventHandler(Form1_Resize);
X = this.Width;
Y = this.Height;
// y = this.statusStrip1.Height;
setTag(this);
// 界面初始化
lb_CH1ConnectionStatus.Text = "未连接";
lb_CH1ConnectionStatus.ForeColor = Color.Red;
lb_CH2ConnectionStatus.Text = "未连接";
lb_CH2ConnectionStatus.ForeColor = Color.Red;
Station.SelectedIndex = 0;
lb_CH1Result.Text = " ";
lb_CH1yiqiStatus.Text = "待机中";
lb_CH1yiqiStatus.ForeColor = Color.Red;
lb_CH1Leak.Text = " ";
lb_CH1LeakPressure.Text = " ";
MESStatus.Text = "";
CH1Tlight.Text = "";
CH1Tlight.BackColor = Color.White;
button1.BackColor = Color.White;
button2.BackColor = Color.White;
button3.BackColor = Color.White;
button4.BackColor = Color.White;
chk_CodeLengthSwitch.Checked = true;
pb_MESstatus.BackColor = Color.Green;
lb_CH2yiqiStatus.Text = "待机中";
lb_CH2yiqiStatus.ForeColor = Color.Red;
lb_CH2yiqiPort.Text = "";
lb_CH2ConnectionStatus.Text = "";
lb_CH2LeakPressure.Text = "";
lb_CH2Leak.Text = "";
lb_CH2yiqiStatus.Text = "";
lb_CH2Result.Text = "";
//Scancode.Checked = true;
//修改密码ToolStripMenuItem.Enabled = false;
//串口设置ToolStripMenuItem.Enabled = false;
//基本设置ToolStripMenuItem.Enabled = false;
//测试参数ToolStripMenuItem.Enabled = false;
//存储设置ToolStripMenuItem.Enabled = false;
Baudrate.Visible=false;
label7.Visible=false;
Read();
ReadINI();
// 通道1
try
{
Form1.f1.ModbusRtuint(1, Form1.f1.CH1,
Convert.ToByte(Station.Text),
lb_CH1yiqiPort.Text,
Convert.ToInt32(Baudrate.Text),
8,
System.IO.Ports.StopBits.One,
System.IO.Ports.Parity.None
);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
if (Form1.f1.CH1.IsOpen())
{
bt_CH1Connect.Enabled = false;
lb_CH1ConnectionStatus.Text = "已连接";
lb_CH1ConnectionStatus.ForeColor = Color.Green;
}
Task.Run(() =>
{
workstation = (int)yiqi.standby;
while (true)
{
CH1machine(); // 仪器读取线程
CH1MachineDisplay(); // 仪器显示线程
}
});
// 通道2
try
{
var regName = new JsonConfig("config.json");
lb_CH2yiqiPort.Text = regName.GetValue<string>($"CH2yiqiPort", "COM9");
string CH2yiqiBaudrate = regName.GetValue<string>($"CH2yiqiBaudrate", "9600");
Form1.f1.ModbusRtuint(2, Form1.f1.CH2,
Convert.ToByte(Station.Text),
lb_CH2yiqiPort.Text,
Convert.ToInt32(CH2yiqiBaudrate),
8,
System.IO.Ports.StopBits.One,
System.IO.Ports.Parity.None
);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
if (Form1.f1.CH2.IsOpen())
{
bt_CH2Connect.Enabled = false;
lb_CH2ConnectionStatus.Text = "已连接";
lb_CH2ConnectionStatus.ForeColor = Color.Green;
}
Task.Run(() =>
{
workstation2 = (int)yiqi.standby;
while (true)
{
CH2machine(); // 仪器读取线程
CH2MachineDisplay(); // 仪器显示线程
}
});
}
// 点击“连接串口”按钮,连接串口
private void BtnCon1_Click(object sender, EventArgs e)
{
try
{
Form1.f1.ModbusRtuint(1, Form1.f1.CH1,
Convert.ToByte(Form1.f1.Station.Text),
lb_CH1yiqiPort.Text,
Convert.ToInt32(Baudrate.Text),
8,
System.IO.Ports.StopBits.One,
System.IO.Ports.Parity.None);
if (CH1.IsOpen() is true)
{
lb_CH1ConnectionStatus.Text = "已连接";
lb_CH1ConnectionStatus.ForeColor = Color.Green;
bt_CH1Connect.Enabled = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// CH1关闭串口
private void BtnBreak_Click(object sender, EventArgs e)
{
try
{
if(CH1.IsOpen())
{
CH1.Close();
}
if (CH1.IsOpen() is false)
{
lb_CH1ConnectionStatus.Text = "未连接";
lb_CH1ConnectionStatus.ForeColor = Color.Red;
bt_CH1Connect.Enabled = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//接收数据
private void SerialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
//try
//{
// System.Threading.Thread.Sleep(50);
// if (!SerialPort1.IsOpen) return;
// int len = SerialPort1.BytesToRead;//获取可以读取的字节数
// if (MachineStatus.Text == "测试中")
// {
// SerialPort1.DiscardInBuffer();
// }
// else if (len > 1)
// {
// byte[] buff = new byte[len];//创建缓存数据数组
// SerialPort1.Read(buff, 0, len);//把数据读取到buff数组
// Invoke((new System.Action(() => //接收计数
// {
// string code = Encoding.Default.GetString(buff);
// if (!code.Contains("ERROR"))
// {
// Code.Text = string.Empty;
// CodeJudge(code, 1);
// }
// //CodePort1.DiscardInBuffer();
// })));
// }
// else
// {
// return;
// }
//}
//catch (Exception ex)
//{
// //MessageBox.Show("Code:" + ex.Message);
// MessageBox.Show(ex.StackTrace);
//}
}
Log log = new Log();
//一百毫秒读状态位的定时器
private void Timer1_Tick(object sender, EventArgs e)
{
TIME++;
if (TIME >= Stipulatetime)
{
Timer1.Stop();
this.Hide();
Activationcode atc = new Activationcode();
atc.ShowDialog();
}
}
//启动仪器
private void BtnStart_Click(object sender, EventArgs e)
{
try
{
workstation = (int)yiqi.start;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//复位按钮
private void BtnReset_Click(object sender, EventArgs e)
{
try
{
workstation = (int)yiqi.rst;
//Code.Clear();
tb_CH1Code.Focus();
tb_CH1Code.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// CH2仪器启动
private void bt_CH2yiqiStart_Click(object sender, EventArgs e)
{
try
{
workstation2 = (int)yiqi.start;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void bt_CH2yiqiReset_Click(object sender, EventArgs e)
{
try
{
workstation2 = (int)yiqi.rst;
tb_CH2Code.Focus();
tb_CH2Code.Enabled = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
public short Digitalconversion(ushort readdata)
{
int Z;
if (readdata > 32768)
Z = (int)readdata - 65536;
else
Z = readdata;
return (short)Z;
}
// 客户需求表格
private void AddExcel_xlsx(int CH, string code)
{
try
{
string fileName;
string date = DateTime.Now.ToString("yyyyMMdd");
string nowDateTime = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff");
if (string.IsNullOrEmpty(path.Text))
{
fileName = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + date + ".xlsx";
}
else
{
fileName = path.Text + "\\leaktest_" + date + ".xlsx";
}
// 准备当前工位数据
string[] chxData = PrepareCHxData(CH, code, nowDateTime);
List<string> rowData = new List<string>();
rowData.Add(nowDateTime);
rowData.Add(code);
rowData.Add(CH == 1 ? "左":"右");
rowData.AddRange(chxData);
if (File.Exists(fileName))
{
// 文件存在则追加数据
using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
{
XSSFWorkbook workbook = new XSSFWorkbook(file);
ISheet sheet = workbook.GetSheet("Sheet1");
// 检查唯一
if (!IsTimeUnique(sheet, nowDateTime))
{
// 毫秒加1
DateTime originalTime = DateTime.ParseExact(nowDateTime, "yyyy/MM/dd HH:mm:ss.fff", null);
DateTime newTime = originalTime.AddMilliseconds(1);
nowDateTime = newTime.ToString("yyyy/MM/dd HH:mm:ss.fff");
rowData[0] = nowDateTime;
}
// 尾行添加数据
int lastRowNum = sheet.LastRowNum + 1;
IRow newRow = sheet.CreateRow(lastRowNum);
for (int i = 0; i < rowData.Count; i++)
{
newRow.CreateCell(i).SetCellValue(rowData[i]);
}
using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
workbook.Write(fs);
}
}
}
else
{
// 文件不存在则创建新文件
XSSFWorkbook workbook = new XSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");
// 设置列宽
SetColumnWidths(sheet);
// 创建表头
string[] headers = CreateHeaders();
IRow headerRow = sheet.CreateRow(0);
for (int i = 0; i < headers.Length; i++)
{
headerRow.CreateCell(i).SetCellValue(headers[i]);
}
// 添加数据行
IRow dataRow = sheet.CreateRow(1);
for (int i = 0; i < rowData.Count; i++)
{
dataRow.CreateCell(i).SetCellValue(rowData[i]);
}
using (FileStream file = new FileStream(fileName, FileMode.Create, FileAccess.Write))
{
workbook.Write(file);
}
}
}
catch (Exception ex)
{
MessageBox.Show($"保存Excel文件异常{ex.Message}");
}
}
// 准备数据
private string[] PrepareCHxData(int channel, string code, string testTime)
{
if (channel == 1)
{
return new string[] {
TwoUInt16ToFloat(ReadData[17], ReadData[16]).ToString("f3"),
(ReadData[26] / 10.0).ToString("f1"),
(ReadData[27] / 10.0).ToString("f1"),
TwoUInt16ToFloat(ReadData[19], ReadData[18]).ToString("f1")
};
}
else if (channel == 2)
{
return new string[] {
TwoUInt16ToFloat(ReadData2[17], ReadData2[16]).ToString("f3"),
(ReadData2[26] / 10.0).ToString("f1"),
(ReadData2[27] / 10.0).ToString("f1"),
TwoUInt16ToFloat(ReadData2[19], ReadData2[18]).ToString("f1"),
};
}
return Array.Empty<string>();
}
// 设置列宽
private void SetColumnWidths(ISheet sheet)
{
sheet.SetColumnWidth(0, 24 * 256);
sheet.SetColumnWidth(1, 20 * 256);
sheet.SetColumnWidth(3, 25 * 256);
sheet.SetColumnWidth(4, 22 * 256);
sheet.SetColumnWidth(5, 18 * 256);
sheet.SetColumnWidth(6, 23 * 256);
}
// 创建表头
private string[] CreateHeaders()
{
return new string[] {
"测试时间",
"条形码",
"工位",
$"气密性测试充气气压({lb_CH1PressureUnit.Text}",
$"气密性测试保压时间s",
$"气密性测试时间s",
$"气密性测试泄露量({lb_CH1LeakUnit.Text}",
};
}
// 检查时间是否唯一
private bool IsTimeUnique(ISheet sheet, string testTime)
{
for (int i = 1; i <= sheet.LastRowNum; i++) // 从第1行开始跳过表头
{
IRow row = sheet.GetRow(i);
if (row != null && row.GetCell(0) != null)
{
string existingTime = row.GetCell(0).ToString();
if (existingTime == testTime)
{
return false;
}
}
}
return true;
}
private void AddExcel2(int CH, string code)
{
try
{
string FileName;
string Date = DateTime.Now.ToString("yyyyMMdd");
string nowdate = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
if (path.Text == "") // 若路径处不输入则获取桌面路径
{
FileName = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".xls";
}
else
{
FileName = path.Text + "\\" + "leaktest" + Date + ".xls";
}
if (File.Exists(FileName))
{
FileStream file = new FileStream(FileName, FileMode.Open, FileAccess.ReadWrite);
HSSFWorkbook workbook = new HSSFWorkbook(file);
ISheet sheet = workbook.GetSheet("Sheet1");
int startRow = sheet.LastRowNum + 1;
IRow newRow = sheet.CreateRow(startRow);
string[] data = Array.Empty<string>();
if (CH == 1)
{
data = new string[] { DateTime.Now.ToString(),
code,
ReadData[25] / 10.0 + "s",
ReadData[26] / 10.0 + "s",
ReadData[27] / 10.0 + "s",
ReadData[28] / 10.0 + "s",
TwoUInt16ToFloat(ReadData[33], ReadData[32]).ToString(),
TwoUInt16ToFloat(ReadData[47], ReadData[46]).ToString(),
ReadData[36].ToString(),
(Digitalconversion(ReadData[37])).ToString(),
TwoUInt16ToFloat(ReadData[39], ReadData[38]).ToString(),
TwoUInt16ToFloat(ReadData[45], ReadData[44]).ToString(),
lb_CH1Result.Text,
TwoUInt16ToFloat(ReadData[17], ReadData[16]).ToString(),
lb_CH1PressureUnit.Text,
TwoUInt16ToFloat(ReadData[19], ReadData[18]).ToString("f1") ,
lb_CH1LeakUnit.Text }; //行名
}
else if (CH == 2)
{
data = new string[] { DateTime.Now.ToString(),
code,
ReadData2[25] / 10.0 + "s",
ReadData2[26] / 10.0 + "s",
ReadData2[27] / 10.0 + "s",
ReadData2[28] / 10.0 + "s",
TwoUInt16ToFloat(ReadData2[33], ReadData2[32]).ToString(),
TwoUInt16ToFloat(ReadData2[47], ReadData2[46]).ToString(),
ReadData2[36].ToString(),
(Digitalconversion(ReadData2[37])).ToString(),
TwoUInt16ToFloat(ReadData2[39], ReadData2[38]).ToString(),
TwoUInt16ToFloat(ReadData2[45], ReadData2[44]).ToString(),
lb_CH2Result.Text,
TwoUInt16ToFloat(ReadData2[17], ReadData2[16]).ToString(),
lb_CH2PressureUnit.Text,
TwoUInt16ToFloat(ReadData2[19], ReadData2[18]).ToString("f1") ,
lb_CH2LeakUnit.Text }; //行名
}
for (int i = 0; i < data.Length; i++)
{
newRow.CreateCell(i).SetCellValue(data[i]);
}
using (FileStream fileStream = new FileStream(FileName, FileMode.Create, FileAccess.Write))
{
workbook.Write(fileStream);
fileStream.Close();
}
}
else
{
// 如果文件不存在,则创建文件并添加数据
HSSFWorkbook workbook = new HSSFWorkbook();
ISheet sheet = workbook.CreateSheet("Sheet1");
string[] headers = new string[] {
"时间",
"条形码",
"充气时间",
"平衡时间",
"检测时间",
"排气时间",
"充气压力上限",
"充气压力下限",
"大漏压差上限",
"大漏压差下限",
"泄漏量上限",
"泄漏量下限",
"测试结果",
"测试压力",
"压力单位",
"泄漏量",
"泄漏量单位" };//列名;
IRow headerRow = sheet.CreateRow(0);
for (int i = 0; i < headers.Length; i++)
{
headerRow.CreateCell(i).SetCellValue(headers[i]);
}
string[] data = Array.Empty<string>();
if (CH == 1)
{
data = new string[] { DateTime.Now.ToString(),
code,
ReadData[25] / 10.0 + "s",
ReadData[26] / 10.0 + "s",
ReadData[27] / 10.0 + "s",
ReadData[28] / 10.0 + "s",
TwoUInt16ToFloat(ReadData[33], ReadData[32]).ToString(),
TwoUInt16ToFloat(ReadData[47], ReadData[46]).ToString(),
ReadData[36].ToString(),
(Digitalconversion(ReadData[37])).ToString(),
TwoUInt16ToFloat(ReadData[39], ReadData[38]).ToString(),
TwoUInt16ToFloat(ReadData[45], ReadData[44]).ToString(),
lb_CH1Result.Text,
TwoUInt16ToFloat(ReadData[17], ReadData[16]).ToString(),
lb_CH1PressureUnit.Text,
TwoUInt16ToFloat(ReadData[19], ReadData[18]).ToString("f1"),
lb_CH1LeakUnit.Text }; // 行名
}
else if (CH == 2)
{
data = new string[] { DateTime.Now.ToString(),
code,
ReadData2[25] / 10.0 + "s",
ReadData2[26] / 10.0 + "s",
ReadData2[27] / 10.0 + "s",
ReadData2[28] / 10.0 + "s",
TwoUInt16ToFloat(ReadData2[33], ReadData2[32]).ToString(),
TwoUInt16ToFloat(ReadData2[47], ReadData2[46]).ToString(),
ReadData2[36].ToString(),
(Digitalconversion(ReadData2[37])).ToString(),
TwoUInt16ToFloat(ReadData2[39], ReadData2[38]).ToString(),
TwoUInt16ToFloat(ReadData2[45], ReadData2[44]).ToString(),
lb_CH2Result.Text,
TwoUInt16ToFloat(ReadData2[17], ReadData2[16]).ToString(),
lb_CH2PressureUnit.Text,
TwoUInt16ToFloat(ReadData2[19], ReadData2[18]).ToString("f1"),
lb_CH2LeakUnit.Text }; // 行名
}
IRow dataRow = sheet.CreateRow(1);
for (int i = 0; i < data.Length; i++)
{
dataRow.CreateCell(i).SetCellValue(data[i]);
}
using (FileStream file = new FileStream(FileName, FileMode.Create, FileAccess.Write))
{
workbook.Write(file);
file.Close();
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void AddExcel()
{
if (path.Text.Length == 0)
{
path.Text = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
}
string FileDialog = path.Text;
//创建文件夹
if(!Directory.Exists(FileDialog))//如果不存在就创建file文件夹
{
Directory.CreateDirectory(FileDialog);
}
string file = DateTime.Now.ToString("yyyyMMdd");
string FileName = FileDialog + "\\" + file+"测试记录" + ".xlsx";
string filepath;
filepath = FileName;
Excel.Application xapp = new Excel.Application();
if (!File.Exists(filepath))//判断所选路径是否有文件
{
//若不存在该文件,则创建新文件
var str1 = new Microsoft.Office.Interop.Excel.Application();
Excel.Workbooks xbook1 = str1.Workbooks;
Excel.Workbook xbook2 = str1.Workbooks.Add(true);
xbook2.SaveAs(filepath);//按照指定路径存储新文件
xbook2.Close();
}
//若存在该文件,则打开文件并写入数据
Excel.Workbook xbook = xapp.Workbooks._Open(filepath, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Excel.Worksheet xsheet = (Excel.Worksheet)xbook.Sheets[1];
string nowdate = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
//string[] fieldArr = { "时间", "条形码", "充气时间", "平衡时间", "检测时间", "排气时间", "充气压力上限", "充气压力下限", "大漏压差上限", "大漏压差下限", "泄漏量上限", "泄漏量下限", "测试结果", "测试压力", "压力单位", "泄漏量", "泄漏量单位" };//列名
//string[] dataArr = { DateTime.Now.ToString(), Code.Text, FullTime.Text + "s", BalanTime.Text + "s", TestTime1.Text + "s", ExhaustTime.Text + "s", FPtoplimit.Text + PressureUnit.Text, FPlowlimit.Text + PressureUnit.Text, BLeakTPre.Text + "Pa", BLeakLPre.Text + "Pa", Leaktoplimit.Text + LeakUnit.Text, Leaklowlimit.Text + LeakUnit.Text, Tlight.Text, DLeakPressure, PressureUnit.Text, DLeak, LeakUnit.Text }; //行名
string[] fieldArr = { "时间", "条形码", "充气时间", "平衡时间", "检测时间", "排气时间", "充气压力上限", "充气压力下限", "大漏压差上限", "大漏压差下限", "泄漏量上限", "泄漏量下限", "测试结果", "测试压力", "压力单位", "泄漏量", "泄漏量单位" };//列名
//string[] fieldArr = { I18N.GetLangText(dicLang, "时间"), I18N.GetLangText(dicLang, "条形码"), I18N.GetLangText(dicLang, "充气时间"), I18N.GetLangText(dicLang, "平衡时间"), I18N.GetLangText(dicLang, "检测时间"), I18N.GetLangText(dicLang, "排气时间"),
// I18N.GetLangText(dicLang, "充气压力上限"), I18N.GetLangText(dicLang, "充气压力下限"), I18N.GetLangText(dicLang, "大漏压差上限"), I18N.GetLangText(dicLang, "大漏压差下限"),
// I18N.GetLangText(dicLang, "泄漏量上限") , I18N.GetLangText(dicLang, "泄漏量下限"),I18N.GetLangText(dicLang, "测试结果"), I18N.GetLangText(dicLang, "测试压力"), I18N.GetLangText(dicLang, "压力单位"), I18N.GetLangText(dicLang, "泄漏量"),
// I18N.GetLangText(dicLang, "泄漏量单位") };//列名
string[] dataArr = {DateTime.Now.ToString(),tb_CH1Code.Text, ReadData[25] / 10.0 + "s", ReadData[26] / 10.0 + "s", ReadData[27] / 10.0 + "s", ReadData[28] / 10.0 + "s",
TwoUInt16ToFloat(ReadData[33], ReadData[32]).ToString(), TwoUInt16ToFloat(ReadData[47], ReadData[46]).ToString(),
ReadData[36].ToString() , ( Digitalconversion( ReadData[37])).ToString() , TwoUInt16ToFloat(ReadData[39], ReadData[38]).ToString() , TwoUInt16ToFloat(ReadData[45], ReadData[44]).ToString() ,lb_CH1Result.Text ,
TwoUInt16ToFloat(ReadData[17], ReadData[16]).ToString() , lb_CH1PressureUnit.Text , TwoUInt16ToFloat(ReadData[19], ReadData[18]).ToString() , lb_CH1LeakUnit.Text};
int c = xsheet.UsedRange.Rows.Count;
// label1.Text = c.ToString();
int a;
for (a = 0; a < fieldArr.Length; a++)
{
xsheet.Cells[a + 1][1] = fieldArr[a];
}
int b;
// int j;
for (b = 0; b < dataArr.Length; b++)
{
Excel.Range cell = (Excel.Range)xsheet.Cells[b + 1][c + 1];
cell.NumberFormat = "@";
xsheet.Cells[b + 1][c + 1] = dataArr[b];//将数据插入
}
// string result="40";
// xsheet.Cells[1][1] = result;
xbook.Save();
xsheet = null;
xbook.Close();
xapp.DisplayAlerts = false;
xapp.Quit();
xapp = null;
GC.Collect();
}
//将数据写入TXT
private void AddTXT(int CH, string code)
{
string fileName;
string file = DateTime.Now.ToString("yyyyMMdd");
if (path.Text == "")
{
fileName = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\leaktest.txt";
}
else
{
fileName = path.Text + "\\" + file + ".txt";
}
string str1 = "";
if (CH == 1)
{
str1 = "时间 " + DateTime.Now +
" 条形码 " + code +
" 充气时间 " + ReadData[25] / 10.0 + "s" +
" 平衡时间 " + ReadData[26] / 10.0 + "s" +
" 检测时间 " + ReadData[27] / 10.0 + "s" +
" 排气时间 " + ReadData[28] / 10.0 + "s" +
" 充气压力上限 " + TwoUInt16ToFloat(ReadData[33], ReadData[32]).ToString() + lb_CH1PressureUnit.Text +
" 充气压力下限 " + TwoUInt16ToFloat(ReadData[47], ReadData[46]).ToString() + lb_CH1PressureUnit.Text +
" 大漏压差上限 " + ReadData[36] + lb_CH1LeakUnit.Text +
" 大漏压差下限 " + (Digitalconversion(ReadData[37])).ToString() + lb_CH1LeakUnit.Text +
" 泄漏量上限 " + TwoUInt16ToFloat(ReadData[39], ReadData[38]).ToString() + lb_CH1LeakUnit.Text +
" 泄漏量下限 " + TwoUInt16ToFloat(ReadData[45], ReadData[44]).ToString() + lb_CH1LeakUnit.Text +
" 测试结果 " + lb_CH1Result.Text +
" 测试压力 " + TwoUInt16ToFloat(ReadData[17], ReadData[16]).ToString() +
" 压力单位 " + lb_CH1PressureUnit.Text +
" 泄漏量 " + lb_CH1Leak +
" 泄漏量单位 " + lb_CH1LeakUnit.Text + " \n";
}
else if (CH == 2)
{
str1 = "时间 " + DateTime.Now +
" 条形码 " + code +
" 充气时间 " + ReadData2[25] / 10.0 + "s" +
" 平衡时间 " + ReadData2[26] / 10.0 + "s" +
" 检测时间 " + ReadData2[27] / 10.0 + "s" +
" 排气时间 " + ReadData2[28] / 10.0 + "s" +
" 充气压力上限 " + TwoUInt16ToFloat(ReadData2[33], ReadData2[32]).ToString() + lb_CH2PressureUnit.Text +
" 充气压力下限 " + TwoUInt16ToFloat(ReadData2[47], ReadData2[46]).ToString() + lb_CH2PressureUnit.Text +
" 大漏压差上限 " + ReadData2[36] + lb_CH2LeakUnit.Text +
" 大漏压差下限 " + (Digitalconversion(ReadData2[37])).ToString() + lb_CH2LeakUnit.Text +
" 泄漏量上限 " + TwoUInt16ToFloat(ReadData2[39], ReadData2[38]).ToString() + lb_CH2LeakUnit.Text +
" 泄漏量下限 " + TwoUInt16ToFloat(ReadData2[45], ReadData2[44]).ToString() + lb_CH2LeakUnit.Text +
" 测试结果 " + lb_CH2Result.Text +
" 测试压力 " + TwoUInt16ToFloat(ReadData2[17], ReadData2[16]).ToString() +
" 压力单位 " + lb_CH2PressureUnit.Text +
" 泄漏量 " + lb_CH2Leak +
" 泄漏量单位 " + lb_CH2LeakUnit.Text + " \n";
}
System.IO.File.AppendAllText(fileName, str1);
}
//将数据写入数据库
private void AddDatebase()
{
try
{
// Form2 Form2 = new Form2();
string database = ReadRegistryKey("datasource");
string userid = ReadRegistryKey("userid");
string pwd = ReadRegistryKey("pwd");
string dataname = ReadRegistryKey("dataname");
string nowday = DateTime.Now.ToString("yyyy_MM_dd");
string connectionString = "Data source=" + database;
connectionString += ";Initial Catalog=master;User Id=" + userid + ";Password=" + pwd;//定义连接字符串
SqlConnection con = new SqlConnection(connectionString);//创建连接
con.Open();//打开并连接数据库
if (dataname == "")
{
dataname = "LeakTest";
}
string selectString = "Select * FROM master..SYSDATABASES WHERE name ='" + dataname + "'";//输入sql语句,判断是否存在名为LeakTest的数据库
SqlCommand cmd = new SqlCommand(selectString, con);
var str1 = cmd.ExecuteScalar();
if (str1 is null)
{
cmd.CommandText = "CREATE DATABASE " + dataname;//如果不存在则新建数据库
cmd.ExecuteNonQuery();
}
con.Close();
connectionString = "Data source=" + database;
connectionString += ";Initial Catalog=" + dataname + "; User Id=" + userid + ";Password=" + pwd;
SqlConnection con2 = new SqlConnection(connectionString);//和名为LeakTest的数据库建立连接
con2.Open();
string selectString2 = $"select * from dbo.sysobjects where name=('{tablename}')";
SqlCommand cmd2 = new SqlCommand(selectString2, con2);
var str2 = cmd2.ExecuteScalar();
if (str2 is null)
{
//若没有表格则新建表格
cmd2.CommandText = $"CREATE TABLE {tablename} ([时间] DATETIME ,[条形码] VarChar(50),[充气时间] INT,[平衡时间] INT,[检测时间]" +
" INT,[排气时间] INT,[充气压力上限] FLOAT,[充气压力下限] FLOAT,[大漏压差上限] FLOAT,[大漏压差下限] FLOAT,[泄漏量上限] " +
"FLOAT,[泄漏量下限] FLOAT,[测试结果] VarChar(50),[测试压力] FLOAT,[压力单位] VarChar(50),[泄漏量] FLOAT,[泄漏量单位] VarChar(50))"; //Office is the named range.
cmd2.ExecuteNonQuery();
}
//往表格插入数据
cmd2.CommandText = $"INSERT INTO {tablename} (时间, 条形码, 充气时间, 平衡时间, 检测时间," +
" 排气时间, 充气压力上限, 充气压力下限, 大漏压差上限, 大漏压差下限, 泄漏量上限, 泄漏量下限, 测试结果, 测试压力, 压力单位, 泄漏量, 泄漏量单位) VALUES(" +
"'" + DateTime.Now + "', '" + tb_CH1Code.Text + "', '" + ReadData[25] / 10.0 + "', '" + ReadData[26] / 10.0 + "', '" + ReadData[27] / 10.0 +
"', '" + ReadData[28] / 10.0 + "', '" + TwoUInt16ToFloat(ReadData[33], ReadData[32]).ToString() + "', '" + TwoUInt16ToFloat(ReadData[47], ReadData[46]).ToString()
+ "', '" + ReadData[36].ToString() + "', '" + (Digitalconversion(ReadData[37])).ToString() + "', '" + TwoUInt16ToFloat(ReadData[39], ReadData[38]).ToString()
+ "', '" + TwoUInt16ToFloat(ReadData[45], ReadData[44]).ToString() + "', '" + lb_CH1Result.Text + "', '" + TwoUInt16ToFloat(ReadData[17], ReadData[16]).ToString()
+ "', '" + lb_CH1PressureUnit.Text + "', '" + TwoUInt16ToFloat(ReadData[19], ReadData[18]).ToString() + "', '" + lb_CH1LeakUnit.Text + "')";
cmd2.ExecuteNonQuery();
con2.Close();
}
catch (SqlException ex)
{
MessageBox.Show(ex.Message);
}
}
//将数据写入CSV文件中
private void AddCSV()
{
try
{
string file = DateTime.Now.ToString("yyyyMMdd");
string fileName;
if (path.Text == "")
{
fileName = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\" + file + ".csv";
}
else
{
fileName = path.Text + "\\" + file + ".csv";
}
if (File.Exists(fileName) == false)
{
StreamWriter fileWriter1 = new StreamWriter(fileName, true, Encoding.UTF8);
fileWriter1.Write("时间,条形码,充气时间,平衡时间,检测时间,排气时间,充气压力上限,充气压力下限,大漏压差上限,大漏压差下限,泄漏量上限,泄漏量下限,测试结果,测试压力,压力单位,泄漏量,泄漏量单位" + "\r\n");
fileWriter1.Flush();
fileWriter1.Close();
}
StreamWriter fileWriter = new StreamWriter(fileName, true, Encoding.UTF8);
string nowdate = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
fileWriter.Write(nowdate + "," + tb_CH1Code.Text + ",");
fileWriter.Write(FullTime.Text + "s" + ",");
fileWriter.Write(BalanTime.Text + "s" + ",");
fileWriter.Write(TestTime1.Text + "s" + ",");
fileWriter.Write(ExhaustTime.Text + "s" + ",");
fileWriter.Write(FPtoplimit.Text + PUnit.Text + ",");
fileWriter.Write(FPlowlimit.Text + PUnit.Text + ",");
fileWriter.Write(BLeakTPre.Text + PUnit.Text + ",");
fileWriter.Write(BLeakLPre.Text + PUnit.Text + ",");
fileWriter.Write(Leaktoplimit.Text + LUnit.Text + ",");
fileWriter.Write(Leaklowlimit.Text + LUnit.Text + ",");
fileWriter.Write(lb_CH1Result.Text + ",");
fileWriter.Write(DLeakPressure + ",");
fileWriter.Write(PUnit.Text + ",");
fileWriter.Write(DLeak + ",");
fileWriter.Write(LUnit.Text + "\n");
fileWriter.Flush();
fileWriter.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
//将数据上传至MES系统
private void ADDMES()
{
string result;
if (lb_CH1Result.Text.Contains("OK"))
{
result = "PASS";
}
else
{
result = "FAIL";
}
string mesresult = MESInfo.MESInformation(URL.Text, appid.Text, appkey.Text, method.Text, Dept.Text,
Type.Text, Machinemodel.Text, MESStation.Text, timestamp, tb_CH1Code.Text, result, FPtoplimit.Text + lb_CH1PressureUnit.Text, FPlowlimit.Text + lb_CH1PressureUnit.Text,
fullpressure + lb_CH1PressureUnit.Text, BLeakTPre.Text + "Pa", BLeakLPre.Text + "Pa", balanpressure + "Pa",
Leaktoplimit.Text + LUnit.Text, Leaklowlimit.Text + LUnit.Text, DLeak + LUnit.Text);
if (mesresult.Contains("\"code\":200"))
{
MESStatus.Text = "PASS";
MESStatus.ForeColor = Color.Green;
}
else
{
MESStatus.Text = "FAIL";
MESStatus.ForeColor = Color.Red;
MessageBox.Show(mesresult);
}
}
//写入数据
private void CreateFile(int CH, string code)
{
if (ChkExcel.Checked)
{
AddExcel_xlsx(CH, code);
}
if (ChkTXT.Checked)
{
AddTXT(CH, code);
}
//if (ChkSql.Checked)
//{
// AddDatebase();
//}
//if (ChkCSV.Checked)
//{
// AddCSV();
//}
//if (ChkMES.Checked && Code.TextLength > 0)
//{
// ADDMES();
//}
}
//在界面显示数据
private void Display(int CH, string code)
{
//DataGridView1.Rows.Add(
// DateTime.Now.ToString(), Code.Text, ReadData[25] / 10.0 + "s", ReadData[26] / 10.0 + "s", ReadData[27] / 10.0 + "s", ReadData[28] / 10.0 + "s",
// TwoUInt16ToFloat(ReadData[33], ReadData[32]).ToString(), TwoUInt16ToFloat(ReadData[47], ReadData[46]).ToString(),
// ReadData[36].ToString(), (Digitalconversion(ReadData[37])).ToString(), TwoUInt16ToFloat(ReadData[39], ReadData[38]).ToString(), TwoUInt16ToFloat(ReadData[45], ReadData[44]).ToString(), Tlight.Text,
// TwoUInt16ToFloat(ReadData[17], ReadData[16]).ToString(), PressureUnit.Text, TwoUInt16ToFloat(ReadData[19], ReadData[18]).ToString(), LeakUnit.Text);
DataGridViewRow row = new DataGridViewRow();
row.CreateCells(DataGridView1);
if (CH == 1)
{
row.SetValues(
DateTime.Now.ToString(),
code,
(ReadData[25] / 10.0).ToString() + "s",
(ReadData[26] / 10.0).ToString() + "s",
(ReadData[27] / 10.0).ToString() + "s",
(ReadData[28] / 10.0).ToString() + "s",
TwoUInt16ToFloat(ReadData[33], ReadData[32]).ToString() + lb_CH1PressureUnit.Text,
TwoUInt16ToFloat(ReadData[47], ReadData[46]).ToString() + lb_CH1PressureUnit.Text,
ReadData[36].ToString()+"Pa",
Digitalconversion(ReadData[37]).ToString()+"Pa",
TwoUInt16ToFloat(ReadData[39], ReadData[38]).ToString()+ lb_CH1LeakUnit.Text,
TwoUInt16ToFloat(ReadData[45], ReadData[44]).ToString() + lb_CH1LeakUnit.Text,
lb_CH1Result.Text,
TwoUInt16ToFloat(ReadData[17], ReadData[16]).ToString() + lb_CH1PressureUnit.Text,
lb_CH1PressureUnit.Text,
TwoUInt16ToFloat(ReadData[19], ReadData[18]).ToString() + lb_CH1LeakUnit.Text,
lb_CH1LeakUnit.Text
);
}
else if (CH == 2)
{
row.SetValues(
DateTime.Now.ToString(),
code,
(ReadData2[25] / 10.0).ToString() + "s",
(ReadData2[26] / 10.0).ToString() + "s",
(ReadData2[27] / 10.0).ToString() + "s",
(ReadData2[28] / 10.0).ToString() + "s",
TwoUInt16ToFloat(ReadData2[33], ReadData2[32]).ToString() + lb_CH2PressureUnit.Text,
TwoUInt16ToFloat(ReadData2[47], ReadData2[46]).ToString() + lb_CH2PressureUnit.Text,
ReadData2[36].ToString() + "Pa",
Digitalconversion(ReadData2[37]).ToString() + "Pa",
TwoUInt16ToFloat(ReadData2[39], ReadData2[38]).ToString() + lb_CH2LeakUnit.Text,
TwoUInt16ToFloat(ReadData2[45], ReadData2[44]).ToString() + lb_CH2LeakUnit.Text,
lb_CH2Result.Text,
TwoUInt16ToFloat(ReadData2[17], ReadData2[16]).ToString() + lb_CH2PressureUnit.Text,
lb_CH2PressureUnit.Text,
TwoUInt16ToFloat(ReadData2[19], ReadData2[18]).ToString() + lb_CH2LeakUnit.Text,
lb_CH2LeakUnit.Text
);
}
// 将新行插入到第一行位置
DataGridView1.Rows.Insert(0, row);
}
// 条形码
private void Code_TextChanged(object sender, EventArgs e)
{
if (tb_CH1Code.Text.Length > 0)
{
if (string.IsNullOrEmpty(tb_CodeLength.Text))
{
tb_CodeLength.Text = "21";
}
if (tb_CH1Code.TextLength > 0)
{
int Count = BarcodeInfo.QueryBarcodeCount(tb_CH1Code.Text);
if (Count > 0)
{
this.tb_CH1Code.ResetText();
this.tb_CH1Code.Focus();
MessageBox.Show("条形码重码,请检查");
}
if (tb_CH1Code.TextLength.ToString() == CodeLength.Text && this.chk_CodeLengthSwitch.Checked)
{
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
BarcodeInfo.InsertBarcodeData(time, tb_CH1Code.Text, "", "", "", "", "", "");
}
else
{
if (tb_CH1Code.TextLength > 0 && chk_CodeLengthSwitch.Checked)
{
MessageBox.Show(string.Format("条形码长度错误!当前条码长度:{0},设置长度为:{1}", this.tb_CH1Code.Text.Length, this.CodeLength.Text));
this.tb_CH1Code.ResetText();
this.tb_CH1Code.Focus();
}
}
}
}
}
private void tb_CH2Code_TextChanged(object sender, EventArgs e)
{
if (tb_CH2Code.Text.Length > 0)
{
if (string.IsNullOrEmpty(tb_CodeLength.Text))
{
tb_CodeLength.Text = "21";
}
if (tb_CH2Code.TextLength > 0)
{
int Count = BarcodeInfo.QueryBarcodeCount(tb_CH2Code.Text);
if (Count > 0)
{
tb_CH2Code.ResetText();
tb_CH2Code.Focus();
MessageBox.Show("条形码重码,请检查");
}
if ((tb_CH2Code.TextLength.ToString() == CodeLength.Text) && chk_CodeLengthSwitch.Checked)
{
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
BarcodeInfo.InsertBarcodeData(time, tb_CH2Code.Text, "", "", "", "", "", "");
}
else
{
if (tb_CH2Code.TextLength > 0 && chk_CodeLengthSwitch.Checked)
{
MessageBox.Show($"条形码长度错误!当前条码长度:{tb_CH2Code.Text.Length},设置长度为:{CodeLength.Text}");
tb_CH2Code.ResetText();
tb_CH2Code.Focus();
}
}
}
}
}
private async void timer5_Tick(object sender, EventArgs e)
{
timerCH1.Stop();
bool flag = this.tb_CodeLength.Text == "";
if (flag)
{
this.tb_CodeLength.Text = "21";
}
bool flag2 = this.tb_CH1Code.TextLength > 0;
if (flag2)
{
int Count = BarcodeInfo.QueryBarcodeCount(tb_CH1Code.Text);
if (Count > 0)
{
this.tb_CH1Code.ResetText();
this.tb_CH1Code.Focus();
MessageBox.Show("条形码重码,请检查");
}
bool flag3 = this.tb_CH1Code.TextLength == int.Parse(this.CodeLength.Text) && this.chk_CodeLengthSwitch.Checked;
if (flag3)
{
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
BarcodeInfo.InsertBarcodeData(time, tb_CH1Code.Text, "", "", "", "", "", "");
}
else
{
if (tb_CH1Code.TextLength > 0 && chk_CodeLengthSwitch.Checked)
{
MessageBox.Show(string.Format("条形码长度错误!当前条码长度:{0},设置长度为:{1}", this.tb_CH1Code.Text.Length, this.CodeLength.Text));
this.tb_CH1Code.ResetText();
this.tb_CH1Code.Focus();
}
}
}
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
LogOn l1 = new LogOn();
OpenForm(l1);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
UserPassword u1 = new UserPassword();
OpenForm(u1);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
PortSetting p1 = new PortSetting();
OpenForm(p1);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
Config c1 = new Config();
OpenForm(c1);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
Timer1.Stop();
TestPara t1 = new TestPara();
OpenForm(t1);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
Save s1 = new Save();
OpenForm(s1);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form3 form3 = new Form3();
OpenForm(form3);
}
private void ToolStripMenuItem_Click(object sender, EventArgs e)
{
ToolStripMenuItem.Enabled = false;
ToolStripMenuItem.Enabled = false;
ToolStripMenuItem.Enabled = false;
ToolStripMenuItem.Enabled = false;
ToolStripMenuItem.Enabled = false;
}
//说明帮助
private void Manual_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Form3 form3 = new Form3();
OpenForm(form3);
}
//防止打开多个相同的窗口
public void OpenForm(System.Windows.Forms.Form frm)
{
if (frm == null) return;
foreach (System.Windows.Forms.Form f in System.Windows.Forms.Application.OpenForms)
{
if (f.Name == frm.Name)
{
f.Activate();
f.Show();
frm.Dispose();
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
return;
}
}
frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
frm.Show();
System.GC.Collect();
System.GC.WaitForPendingFinalizers();
}
//读取数据库设置的注册表
private string ReadRegistryKey(string str)
{
RegistryKey regName;
regName = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\PMD\\1.0\\User-LL18", true);
if (regName.GetValue(str) is null)
{
return null;
}
else
{
regName.OpenSubKey("User");
string str1 = regName.GetValue(str).ToString();
// textBox3.Text = str1;
regName.Close();
return str1;
}
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
RegistryKey regName;
regName = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\PMD\\1.0\\User-LL18-Set", true);
if (regName is null)
{
regName = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\PMD\\1.0\\User-LL18-Set");
}
regName.SetValue("time", TIME);
regName.SetValue("timeflag", 1);
regName.Close();
Timer1.Stop();
this.Hide();
SerialPort1.Dispose();
SerialPort1.Close();
System.Environment.Exit(0);
}
//public static void domain2ip()
//{
// try
// {
// }
// catch (Exception e)
// {
// }
//}
// //测试用的事件,此处调用了类里面的方法
//private void button1_Click(object sender, EventArgs e)
//{
// //IPHostEntry ipHostInfo = Dns.GetHostEntry("http://xms.be.test.xiaomi.com/xmsapi");
// //IPAddress myip = ipHostInfo.AddressList[0];
// string ss= MESInfo.MESInformation("https://xms.be.xiaomi.com/xmsapi", "xm_1004", "1a3015121bb93b05de89128de42f98ca", "outrepair.importWRTresult", "XZCN00114", "SA", "Mi8", "3", "2021-03-22 12:10:50",
// "8000000022", "FAIL", "53","53","2","111","222",
// "32","26","86","464");
// MessageBox.Show(ss);
//}
//读取系统设置
private void Read()
{
RegistryKey regName;
regName = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\PMD\\1.0\\User-LL18-Set", true);
if (regName is null)
{
regName = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\PMD\\1.0\\User-LL18-Set");
}
regName.OpenSubKey("User");
if (regName.GetValue("port") is null)
{
lb_CH1yiqiPort.Text = "COM2";
}
else
{
lb_CH1yiqiPort.Text = regName.GetValue("port").ToString();
}
if (regName.GetValue("codeport") is null)
{
codeport = "COM1";
}
else
{
codeport = regName.GetValue("codeport").ToString();
}
if (regName.GetValue("codeBaudrate") is null)
{
codeBaudrate = "9600";
}
else
{
codeBaudrate = regName.GetValue("codeBaudrate").ToString();
}
if (regName.GetValue("codelengthcheck") is null)
{
chk_CodeLengthSwitch.Checked = true;
}
else
{
chk_CodeLengthSwitch.Checked = Convert.ToBoolean(regName.GetValue("codelengthcheck"));
}
if (regName.GetValue("Baudrate") is null)
{
Baudrate.Text = "9600";
}
else
{
Baudrate.Text = regName.GetValue("Baudrate").ToString();
}
if (regName.GetValue("station") is null)
{
Station.Text = "01";
}
else
{
Station.Text = regName.GetValue("station").ToString();
}
if (regName.GetValue("codelength") is null)
{
CodeLength.Text = "21";
tb_CodeLength.Text = "21";
}
else
{
CodeLength.Text = regName.GetValue("codelength").ToString();
tb_CodeLength.Text = regName.GetValue("codelength").ToString();
}
if (regName.GetValue("excel") is null)
{
ChkExcel.Checked = false;
}
else
{
ChkExcel.Checked = Convert.ToBoolean(regName.GetValue("excel").ToString());
}
if (regName.GetValue("txt") is null)
{
ChkTXT.Checked = false;
}
else
{
ChkTXT.Checked = Convert.ToBoolean(regName.GetValue("txt").ToString());
}
if (regName.GetValue("sql") is null)
{
ChkSql.Checked = false;
}
else
{
ChkSql.Checked = Convert.ToBoolean(regName.GetValue("sql").ToString());
}
if (regName.GetValue("mes") is null)
{
ChkMES.Checked = false;
}
else
{
ChkMES.Checked = Convert.ToBoolean(regName.GetValue("mes").ToString());
}
if (regName.GetValue("path") is null)
{
path.Text = "";
}
else
{
path.Text = regName.GetValue("path").ToString();
}
if (regName.GetValue("csv") is null)
{
ChkCSV.Checked = false;
}
else
{
ChkCSV.Checked = Convert.ToBoolean(regName.GetValue("csv").ToString());
}
if (regName.GetValue("url") is null)
{
URL.Text = "https://xms.be.xiaomi.com/xmsapi";
}
else
{
URL.Text = regName.GetValue("url").ToString();
}
if (regName.GetValue("appid") is null)
{
appid.Text = "xm_1004";
}
else
{
appid.Text = regName.GetValue("appid").ToString();
}
if (regName.GetValue("appkey") is null)
{
appkey.Text = "1a3015121bb93b05de89128de42f98ca";
}
else
{
appkey.Text = regName.GetValue("appkey").ToString();
}
if (regName.GetValue("method") is null)
{
method.Text = "outrepair.importWRTresult";
}
else
{
method.Text = regName.GetValue("method").ToString();
}
if (regName.GetValue("dept") is null)
{
Dept.Text = "";
}
else
{
Dept.Text = regName.GetValue("dept").ToString();
}
if (regName.GetValue("type") is null)
{
Type.Text = "";
}
else
{
Type.Text = regName.GetValue("type").ToString();
}
if (regName.GetValue("model") is null)
{
Machinemodel.Text = "";
}
else
{
Machinemodel.Text = regName.GetValue("model").ToString();
}
if (regName.GetValue("teststation") is null)
{
MESStation.Text = "";
}
else
{
MESStation.Text = regName.GetValue("teststation").ToString();
}
if (regName.GetValue("CeckScanning") is null)
{
CeckScanning.Checked = false;
}
else
{
CeckScanning.Checked = Convert.ToBoolean(regName.GetValue("CeckScanning").ToString());
}
regName.Close();
}
/// <summary>
/// 16进制格式字符串转普通文本
/// </summary>
/// <param name="hexString">16进制格式字符串</param>
/// <param name="encode">编码规则</param>
/// <returns></returns>
public static string ToStringFromHexString(string hexString, Encoding encode)
{
byte[] _bytes = ToBytesFromHexString(hexString);
//if (BitConverter.IsLittleEndian) // 若为 小端模式
//{
// Array.Reverse(_bytes); // 转换为 大端模式
//}
return encode.GetString(_bytes);
}
private void SetcheckBox1(bool check)
{
RegistryKey regName;
regName = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\PMD\\1.0\\User-LL18-Set", true);
if (regName is null)
{
regName = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\PMD\\1.0\\User-LL18-Set");
}
regName.SetValue("codelengthcheck", check);
regName.Close();
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
//if (checkBox1.Checked)
// if (/*Code.Text != "" ||*/Code.Text.Length != Convert.ToInt32(codecheck.Text))
// {
// MessageBox.Show("条形码长度不正确");
// Code.ResetText();
// Code.Focus();
// }
if (chk_CodeLengthSwitch.Checked)
{
SetcheckBox1(true);
}
else
{
SetcheckBox1(false);
}
}
private void Setcodecheck()
{
RegistryKey regName;
regName = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\PMD\\1.0\\User-LL18-Set", true);
if (regName is null)
{
regName = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\PMD\\1.0\\User-LL18-Set");
}
regName.SetValue("codelength", tb_CodeLength.Text);
regName.Close();
}
private void codecheck_TextChanged(object sender, EventArgs e)
{
Setcodecheck();
}
private void SetScancode()
{
RegistryKey regName;
regName = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\PMD\\1.0\\User-LL18-Set", true);
if (regName is null)
{
regName = Registry.CurrentUser.CreateSubKey("SOFTWARE\\Microsoft\\PMD\\1.0\\User-LL18-Set");
}
regName.SetValue("Scancode", Scancode.Checked);
regName.Close();
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult dialogResult = MessageBox.Show("确定要清空计数吗?", "确认", MessageBoxButtons.YesNo);
// 如果用户点了“确定”按钮,则执行某些事件
if (dialogResult == DialogResult.Yes)
{
Sunzong.Text = "0";
Passzong.Text = "0";
ChanPass = 0;
ChanSum = 0;
string path = System.Environment.CurrentDirectory + "\\Config\\Config.ini";
ConfigINI config = new ConfigINI(path);
config.IniWriteValue("Config", "Sunzong", Sunzong.Text);
config.IniWriteValue("Config", "Passzong", Passzong.Text);
}
}
private void CodePort1_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
{
try
{
System.Threading.Thread.Sleep(50);
int len = CodePort1.BytesToRead;//获取可以读取的字节数
if (len > 1)
{
byte[] buff = new byte[len];//创建缓存数据数组
CodePort1.Read(buff, 0, len);//把数据读取到buff数组
Invoke((new System.Action(() => //接收计数
{
string code = Encoding.Default.GetString(buff);
string CODE = code.Replace("\r", "");
CODE = CODE.Replace("\n", "");
//if (tb_CH1Code.Text == "")
//{
// tb_CH1Code.Text = CODE;
//}
UpdateCode(CODE);
CodePort1.DiscardInBuffer();
})));
}
else
{
return;
}
}
catch (Exception ex)
{
MessageBox.Show(":" + ex.Message);
}
}
// 最后放的是ch1的
bool lastputInCH1 = true;
// 更新条码
private void UpdateCode(string CODE)
{
if (string.IsNullOrEmpty(tb_CodeLength.Text))
{
tb_CodeLength.Text = "21";
}
if (string.IsNullOrEmpty(CODE) || CODE.Length.ToString() != CodeLength.Text ||
CODE == tb_CH1Code.Text || CODE == tb_CH2Code.Text)
{
return ;
}
if (string.IsNullOrEmpty(tb_CH1Code.Text))
{
tb_CH1Code.Text = CODE;
lastputInCH1 = true;
}
else if (string.IsNullOrEmpty(tb_CH2Code.Text))
{
tb_CH2Code.Text = CODE;
lastputInCH1 = false;
}
else
{
if (lastputInCH1)
{
tb_CH2Code.Text = CODE;
lastputInCH1 = false;
}
else
{
tb_CH1Code.Text = CODE;
lastputInCH1 = true;
}
}
}
private void label32_Click(object sender, EventArgs e)
{
AddDatebase();
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
if (chk_MESswitch.Checked)
{
pb_MESstatus.BackColor = Color.Green;
}
else
{
pb_MESstatus.BackColor = Color.Red;
}
}
private void strlinename_TextChanged(object sender, EventArgs e)
{
string path = System.Environment.CurrentDirectory + "\\Config\\Config";
ConfigINI config = new ConfigINI(path);
config.IniWriteValue("Mes", "strlinename", this.strlinename.Text);
}
private void strlocation_TextChanged(object sender, EventArgs e)
{
string path = System.Environment.CurrentDirectory + "\\Config\\Config";
ConfigINI config = new ConfigINI(path);
config.IniWriteValue("Mes", "strlocation", this.strlocation.Text);
}
private void strbatch_TextChanged(object sender, EventArgs e)
{
string path = System.Environment.CurrentDirectory + "\\Config\\Config";
ConfigINI config = new ConfigINI(path);
config.IniWriteValue("Mes", "strbatch", this.strbatch.Text);
}
private void strstation_TextChanged(object sender, EventArgs e)
{
string path = System.Environment.CurrentDirectory + "\\Config\\Config";
ConfigINI config = new ConfigINI(path);
config.IniWriteValue("Mes", "strstation", this.strstation.Text);
}
private void JIG_Number1_TextChanged(object sender, EventArgs e)
{
string path = System.Environment.CurrentDirectory + "\\Config\\Config";
ConfigINI config = new ConfigINI(path);
config.IniWriteValue("Mes", "JIG_Number1", this.JIG_Number1.Text);
}
private void Form1_Activated(object sender, EventArgs e)
{
//PreCode1.Focus();
tb_CH1Code.Focus();
}
private void PreCode1_TextChanged(object sender, EventArgs e)
{
if (PreCode1.Text.Length > 0)
{
timerCH1.Stop();
timerCH1.Start();
}
}
// CH2 连接串口按钮
private void bt_CH2Connect_Click(object sender, EventArgs e)
{
try
{
Form1.f1.ModbusRtuint(2, Form1.f1.CH2,
Convert.ToByte(Form1.f1.Station.Text),
lb_CH2yiqiPort.Text,
Convert.ToInt32(Baudrate.Text),
8,
System.IO.Ports.StopBits.One,
System.IO.Ports.Parity.None);
if (CH2.IsOpen() is true)
{
lb_CH2ConnectionStatus.Text = "已连接";
lb_CH2ConnectionStatus.ForeColor = Color.Green;
bt_CH2Connect.Enabled = false;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
// CH2 断开串口
private void bt_CH2Break_Click(object sender, EventArgs e)
{
try
{
if (CH2.IsOpen())
{
CH2.Close();
}
if (CH2.IsOpen() is false)
{
lb_CH2ConnectionStatus.Text = "未连接";
lb_CH2ConnectionStatus.ForeColor = Color.Red;
bt_CH2Connect.Enabled = true;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void label33_Click(object sender, EventArgs e)
{
// AddExcel_xlsx(2, "12345");
}
// 测试按钮
private void button5_Click(object sender, EventArgs e)
{
Random rand = new Random();
string random12Digits = "";
for (int i = 0; i < 12; i++)
{
random12Digits += rand.Next(0, 10);
}
AddExcel_xlsx(1, random12Digits);
random12Digits = "";
for (int i = 0; i < 12; i++)
{
random12Digits += rand.Next(0, 10);
}
AddExcel_xlsx(2, random12Digits);
}
/// <summary>
/// 16进制格式字符串转字节数组
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
public static byte[] ToBytesFromHexString(string hexString)
{
//以 ' ' 分割字符串,并去掉空字符
string[] chars = hexString.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
byte[] returnBytes = new byte[chars.Length];
//逐个字符变为16进制字节数据
for (int i = 0; i < chars.Length; i++)
{
returnBytes[i] = Convert.ToByte(chars[i], 16);
}
// byte[] ss= returnBytes.Reverse().ToArray();
return returnBytes;
}
}
}