按照客户要求将excel导出文件保存为一个条码一条记录,名称为SN_结果_时间.xslx

This commit is contained in:
LL
2025-11-14 17:27:29 +08:00
commit 883060d140
79 changed files with 166110 additions and 0 deletions

264
SLZ_4/ConfigScanner.cs Normal file
View File

@@ -0,0 +1,264 @@
using Microsoft.Office.Interop.Excel;
using System;
using System.Drawing;
using System.Net;
using System.Reflection.Emit;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace SLZ_4
{
public partial class ConfigScanner : Form
{
public string[] ports;
public int scanNum; //扫码枪数量
public int scanType; //扫码枪类型 0普通扫码枪 1工业扫码枪-串口2工业扫码枪-网路
public ConfigScanner()
{
InitializeComponent();
cmbScanType.Items.Add("普通扫码枪");
cmbScanType.Items.Add("工业扫码枪-串口");
cmbScanType.Items.Add("工业扫码枪-网络");
}
private void Form_Load(object sender, EventArgs e)
{
uiGroupNetwork1.Location = uiGroupCom1.Location;
uiGroupNetwork2.Location = uiGroupCom2.Location;
}
public void setConfig()
{
refreshPort();
cmbScanType.SelectedIndex = scanType;
if (scanType == (int)SCANNER_TYPE.COMMON || scanType == (int)SCANNER_TYPE.INDUSTRY_COM)
{
CH1CodeBaud.Text = FormMain.form.arrScannerObj[0].iBaudrate.ToString();
CH1CodePort.Text = FormMain.form.arrScannerObj[0].sPort;
CH2CodeBaud.Text = FormMain.form.arrScannerObj[1].iBaudrate.ToString();
CH2CodePort.Text = FormMain.form.arrScannerObj[1].sPort;
}
else if (scanType == (int)SCANNER_TYPE.INDUSTRY_NETWORK)
{
textIP1.Text = FormMain.form.arrScannerObj[0].sIpaddr;
textPort1.Text = FormMain.form.arrScannerObj[0].iPort.ToString();
textIP2.Text = FormMain.form.arrScannerObj[1].sIpaddr;
textPort2.Text = FormMain.form.arrScannerObj[1].iPort.ToString();
}
showComm1Status();
showComm2Status();
showNetwork1Status();
showNetwork2Status();
ShowScanBox();
}
public void showComm1Status()
{
if (FormMain.form.serialPortCode1.IsOpen)
{
CH1CodeIsComm.Text = "已打开";
CH1CodeIsComm.BackColor = Color.Green;
CH1CodeCon.Enabled = false;
CH1CodeBreak.Enabled = true;
}
else
{
CH1CodeIsComm.Text = "未打开";
CH1CodeIsComm.BackColor = Color.Red;
CH1CodeCon.Enabled = true;
CH1CodeBreak.Enabled = false;
}
}
public void showComm2Status()
{
if (FormMain.form.serialPortCode2.IsOpen)
{
CH2CodeIsComm.Text = "已打开";
CH2CodeIsComm.BackColor = Color.Green;
CH2CodeCon.Enabled = false;
CH2CodeBreak.Enabled = true;
}
else
{
CH2CodeIsComm.Text = "未打开";
CH2CodeIsComm.BackColor = Color.Red;
CH2CodeCon.Enabled = true;
CH2CodeBreak.Enabled = false;
}
}
public void showNetwork1Status()
{
//网口1
if (FormMain.form.arrScanNetwork[0] != null && FormMain.form.arrScanNetwork[0].IsConnected)
{
CH1NetworkComm.Text = "已连接";
CH1NetworkComm.BackColor = Color.Green;
buttonConnect1.Enabled = false;
buttonDisconnect1.Enabled = true;
}
else
{
CH1NetworkComm.Text = "未连接";
CH1NetworkComm.BackColor = Color.Red;
buttonConnect1.Enabled = true;
buttonDisconnect1.Enabled = false;
}
}
public void showNetwork2Status()
{
//网口2
if (FormMain.form.arrScanNetwork[1] != null && FormMain.form.arrScanNetwork[1].IsConnected)
{
CH2NetworkComm.Text = "已连接";
CH2NetworkComm.BackColor = Color.Green;
buttonConnect2.Enabled = false;
buttonDisconnect2.Enabled = true;
}
else
{
CH2NetworkComm.Text = "未连接";
CH2NetworkComm.BackColor = Color.Red;
buttonConnect2.Enabled = true;
buttonDisconnect2.Enabled = false;
}
}
public void refreshPort()
{
CH1CodePort.Items.Clear();
CH2CodePort.Items.Clear();
ports = System.IO.Ports.SerialPort.GetPortNames();
if (ports.Length > 0)
{
CH1CodePort.Items.AddRange(ports);
CH2CodePort.Items.AddRange(ports);
}
}
private void CH1CodeRefresh_Click(object sender, EventArgs e)
{
refreshPort();
}
private void CH1CodeCon_Click(object sender, EventArgs e)
{
FormMain.form.arrScannerObj[0].iBaudrate = int.Parse(CH1CodeBaud.Text);
FormMain.form.arrScannerObj[0].sPort = CH1CodePort.Text;
Config.saveScanner(0);
FormMain.form.openScanner1();
showComm1Status();
}
private void CH1CodeBreak_Click(object sender, EventArgs e)
{
if (FormMain.form.serialPortCode1.IsOpen)
{
FormMain.form.serialPortCode1.Close();
}
showComm1Status();
}
private void CH2CodeCon_Click(object sender, EventArgs e)
{
FormMain.form.arrScannerObj[1].iBaudrate = int.Parse(CH1CodeBaud.Text);
FormMain.form.arrScannerObj[1].sPort = CH2CodePort.Text;
Config.saveScanner(1);
FormMain.form.openScanner2();
showComm2Status();
}
private void CH2CodeBreak_Click(object sender, EventArgs e)
{
if (FormMain.form.serialPortCode2.IsOpen)
{
FormMain.form.serialPortCode2.Close();
}
showComm2Status();
}
private void ShowScanBox()
{
cmbScanNum.SelectedIndex = scanNum - 1;
if (scanType == (int)SCANNER_TYPE.COMMON || scanType == (int)SCANNER_TYPE.INDUSTRY_COM)
{
uiGroupCom1.Visible = true;
uiGroupCom2.Visible = cmbScanNum.SelectedIndex == 1 ? true : false;
uiGroupNetwork1.Visible = false;
uiGroupNetwork2.Visible = false;
CH1CodeRefresh.Visible = true;
}
else if (scanType == (int)SCANNER_TYPE.INDUSTRY_NETWORK)
{
uiGroupNetwork1.Visible = true;
uiGroupNetwork2.Visible = cmbScanNum.SelectedIndex == 1 ? true : false;
uiGroupCom1.Visible = false;
uiGroupCom2.Visible = false;
CH1CodeRefresh.Visible = false;
}
}
private void cmbScanNum_SelectedIndexChanged(object sender, EventArgs e)
{
scanNum = cmbScanNum.SelectedIndex + 1;
Config.saveScanNumber(scanNum);
ShowScanBox();
}
private void cmbScanType_SelectedIndexChanged(object sender, EventArgs e)
{
scanType = cmbScanType.SelectedIndex;
Config.saveScanType(scanType);
ShowScanBox();
}
private void buttonConnect1_Click(object sender, EventArgs e)
{
FormMain.form.arrScannerObj[0].iPort = int.Parse(textPort1.Text);
FormMain.form.arrScannerObj[0].sIpaddr = textIP1.Text;
Config.saveScanner(0);
FormMain.form.addScanNetwork(0);
FormMain.form.openScannerNetwork(0);
showNetwork1Status();
}
private void buttonDisconnect1_Click(object sender, EventArgs e)
{
FormMain.form.closeScannerNetwork(0);
showNetwork1Status();
}
private void buttonConnect2_Click(object sender, EventArgs e)
{
FormMain.form.arrScannerObj[1].iPort = int.Parse(textPort2.Text);
FormMain.form.arrScannerObj[1].sIpaddr = textIP2.Text;
Config.saveScanner(1);
FormMain.form.addScanNetwork(1);
FormMain.form.openScannerNetwork(1);
showNetwork2Status();
}
private void buttonDisconnect2_Click(object sender, EventArgs e)
{
FormMain.form.closeScannerNetwork(1);
showNetwork2Status();
}
public static bool IsValidIp(string ip)
{
// 基础格式检查
if (!IPAddress.TryParse(ip, out _) || ip.Split('.').Length != 4)
return false;
// 每段数值范围检查
string pattern = @"^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$";
return Regex.IsMatch(ip, pattern);
}
}
}