265 lines
9.0 KiB
C#
265 lines
9.0 KiB
C#
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);
|
||
}
|
||
|
||
}
|
||
}
|