实例介绍
【实例简介】工业现场总线串口通信,定制化界面,文件处理,参数配置,数据显示,自动检测端口,条码自动获取或手动输入
【实例截图】
【核心代码】 public partial class frmMain : Form
{
string strBarcodeContext; //条码内容
string strYear; //年
string strMonth; //月
string strDay; //日
string strClass; //班次
string strClassShow; //班次显示
string strFlowNumber; //流水号
string strProductCode; //产品号
string strClientCode; //客户号
string strInnerCode; //内部号
string strProductStatusCode;//产品状态码
string strProductStatusShow;//产品状态显示
string strCompanyCode; //公司代码
string strCompanyShow; //公司代码显示
//string strDateShow; //日期显示
public static char[] hexDigital ={'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'};//十六进制
string strUser; //用户
string strDate; //日期
DataGridViewColumn dgvColDate = new DataGridViewColumn();
DataGridViewColumn dgvColOpr = new DataGridViewColumn();
DataGridViewColumn dgvColBarcode = new DataGridViewColumn();
DataGridViewColumn dgvColClass = new DataGridViewColumn();
DataGridViewColumn dgvColClientCode = new DataGridViewColumn();
DataGridViewColumn dgvColInnerCode = new DataGridViewColumn();
public string strPortName; //端口号
public string strBaudRate; //波特率
public string strDataBits; //数据位
public string strStopBits; //停止位
public string strParity; //校验
public string strPortNameIndex;
public string strBaudRateIndex;
public string strDataBitsIndex;
public string strStopBitsIndex;
public string strParityIndex;
public string strReceive; //条码接收
public string strApplicationPath;//文件路径
//判断字符串是不是纯数字字符字符串函数
public bool IsPureNumberString(string strSource)
{
int i, intStringLength;
byte bytValue;
intStringLength = strSource.Length;
for (i = 0; i < intStringLength; i )
{
bytValue = Convert.ToByte(strSource[i]);
if ((bytValue < 48) || (bytValue > 57))
{
return false;
}
}
return true;
}
//将字符串以十六进制形式显示
public static string ToHexString(byte[] bytAReceive)
{
int iBytALength;
int i;
int iValue;
iBytALength = bytAReceive.Length;
char[] chAReceive = new char[iBytALength * 3];
for (i = 0; i < iBytALength; i )
{
iValue = bytAReceive[i];
chAReceive[i * 3] = hexDigital[iValue >> 4];
chAReceive[i * 3 1] = hexDigital[iValue & 0xF];
chAReceive[i * 3 2] = ' ';
}
return new string(chAReceive);
}
//串口参数文件-写入
private void SPSWrite()
{
FileStream fsSPS = new FileStream(strApplicationPath "\\SPS.cfg", FileMode.OpenOrCreate);
StreamWriter swSPS = new StreamWriter(fsSPS);
swSPS.WriteLine(strPortName);
swSPS.WriteLine(strBaudRate);
swSPS.WriteLine(strDataBits);
swSPS.WriteLine(strStopBits);
swSPS.WriteLine(strParity);
swSPS.WriteLine(strPortNameIndex);
swSPS.WriteLine(strBaudRateIndex);
swSPS.WriteLine(strDataBitsIndex);
swSPS.WriteLine(strStopBitsIndex);
swSPS.WriteLine(strParityIndex);
swSPS.Close();
}
//串口参数文件-读取
private void SPSRead()
{
FileStream fsSPS = new FileStream(strApplicationPath "\\SPS.cfg", FileMode.OpenOrCreate);
StreamReader srSPS = new StreamReader(fsSPS);
strPortName = srSPS.ReadLine();
strBaudRate = srSPS.ReadLine();
strDataBits = srSPS.ReadLine();
strStopBits = srSPS.ReadLine();
strParity = srSPS.ReadLine();
strPortNameIndex = srSPS.ReadLine();
strBaudRateIndex = srSPS.ReadLine();
strDataBitsIndex = srSPS.ReadLine();
strStopBitsIndex = srSPS.ReadLine();
strParityIndex = srSPS.ReadLine();
srSPS.Close();
}
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
strApplicationPath = Application.StartupPath;
sknColor.SkinFile = strApplicationPath "\\WaveBlue.ssk";
strUser = "Admin";
tssUser.Text = "用户:" strUser;
timMain.Enabled = true;
dgvColDate.Name = "InfoDate";
dgvColDate.HeaderText = "日期 ";
dgvColDate.CellTemplate = new DataGridViewTextBoxCell();
dgvColOpr.Name = "InfoOpr";
dgvColOpr.HeaderText = "操作者";
dgvColOpr.CellTemplate = new DataGridViewTextBoxCell();
dgvColBarcode.Name = "InfoBarcode";
dgvColBarcode.HeaderText = "条码";
dgvColBarcode.CellTemplate = new DataGridViewTextBoxCell();
dgvColClass.Name = "InfoClass";
dgvColClass.HeaderText = "班次";
dgvColClass.CellTemplate = new DataGridViewTextBoxCell();
dgvColClientCode.Name = "InfoClientCode";
dgvColClientCode.HeaderText = "客户号";
dgvColClientCode.CellTemplate = new DataGridViewTextBoxCell();
dgvColInnerCode.Name = "InfoInnerCode";
dgvColInnerCode.HeaderText = "内部号";
dgvColInnerCode.CellTemplate = new DataGridViewTextBoxCell();
dgvDisplay.Columns.Add(dgvColDate);
dgvDisplay.Columns.Add(dgvColOpr);
dgvDisplay.Columns.Add(dgvColBarcode);
dgvDisplay.Columns.Add(dgvColClass);
dgvDisplay.Columns.Add(dgvColClientCode);
dgvDisplay.Columns.Add(dgvColInnerCode);
dgvDisplay.RowHeadersVisible = false;
dgvDisplay.AllowUserToAddRows = false;
dgvDisplay.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dgvDisplay.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
dgvDisplay.ReadOnly = true;
if (File.Exists(@strApplicationPath "\\SPS.cfg") == false)
{
this.strPortName = "COM1";
this.strBaudRate = "9600";
this.strDataBits = "8";
this.strStopBits = "1";
this.strParity = "None";
}
else
{
SPSRead();
}
srlBarcode.PortName = this.strPortName;
srlBarcode.BaudRate = Convert.ToInt32(this.strBaudRate);
srlBarcode.DataBits = Convert.ToInt16(this.strDataBits);
srlBarcode.Parity = (Parity)Enum.Parse(typeof(Parity), this.strParity);
srlBarcode.StopBits = (StopBits)Enum.Parse(typeof(StopBits), this.strStopBits, true);
if (srlBarcode.IsOpen == false)
{
try
{
srlBarcode.Open();
this.tssPort.Text = "端口状态:" this.strPortName " 已打开";
}
catch
{
MessageBox.Show("串口打开失败了!\n\n可能原因:端口被占用或端口不存在。", "条码采集系统");
}
}
}
private void tlmExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dlrValue = MessageBox.Show("是否要退退出条码采集系统","条码采集系统",MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2);
if (dlrValue == DialogResult.OK)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
}
private void btnEncode_Click(object sender, EventArgs e)
{
int intBarcodeLength;//定义条码长度变量
strBarcodeContext = txtBarcode.Text.Trim().ToString();//读取条码输入框的内容
intBarcodeLength = strBarcodeContext.Length;
bool bIsNString;
bIsNString = IsPureNumberString(strBarcodeContext);//调用纯数字字符的函数
if (!bIsNString)
{
MessageBox.Show("条码格式错误-包含非数字字符", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (intBarcodeLength != 17)
{
MessageBox.Show("条码长度错误", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
else
{
strYear = strBarcodeContext.Substring(0, 4);
this.txtYear.Text = strYear;
strMonth = strBarcodeContext.Substring(4, 2);
this.txtMonth.Text = strMonth;
strDay = strBarcodeContext.Substring(6, 2);
this.txtDay.Text = strDay;
strClass = strBarcodeContext.Substring(8, 1);
strFlowNumber = strBarcodeContext.Substring(9, 4);
this.txtFlowNumber.Text = strFlowNumber;
strProductCode = strBarcodeContext.Substring(13, 2);
this.txtProductCode.Text = strProductCode;
strProductStatusCode = strBarcodeContext.Substring(15, 1);
strCompanyCode = strBarcodeContext.Substring(16, 1);
switch (strClass)
{
case "1":
{
strClassShow = "A班";
this.txtClass.Text = strClassShow;
break;
}
case "2":
{
strClassShow = "B班";
this.txtClass.Text = strClassShow;
break;
}
case "3":
{
strClassShow = "C班";
this.txtClass.Text = strClassShow;
break;
}
default:
{
MessageBox.Show("条码不合格规范-班次", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strProductCode)
{
case "01":
{
strClientCode = "8WD.881.045";
strInnerCode = "3169847";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "02":
{
strClientCode = "8WD.881.046";
strInnerCode = "3169849";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "03":
{
strClientCode = "8WD.881.045.A";
strInnerCode = "3169851";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "04":
{
strClientCode = "8WD.881.045.B";
strInnerCode = "3169857";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "05":
{
strClientCode = "5QD.881.046.F";
strInnerCode = "3169853";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "06":
{
strClientCode = "5QD.881.045.H";
strInnerCode = "3170386";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "07":
{
strClientCode = "5QD.881.046.H";
strInnerCode = "3170387";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "08":
{
strClientCode = "3QD.881.045.A";
strInnerCode = "3170388";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "09":
{
strClientCode = "3QD.881.045.B";
strInnerCode = "3170389";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "10":
{
strClientCode = "3QD.881.046";
strInnerCode = "Undefined";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "11":
{
strClientCode = "3QD.881.045";
strInnerCode = "3170384";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "12":
{
strClientCode = "5QD.881.046.C";
strInnerCode = "3170385";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
default:
{
MessageBox.Show("条码不合格规范-产品号", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strProductStatusCode)
{
case "1":
{
strProductStatusShow = "03S";
this.txtProductStatus.Text = strProductStatusShow;
break;
}
case "2":
{
strProductStatusShow = "01K";
this.txtProductStatus.Text = strProductStatusShow;
break;
}
default:
{
MessageBox.Show("条码不合格规范-产品状态码", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strCompanyCode)
{
case "1":
{
strCompanyShow = "4RP";
this.txtCompanyCode.Text = strCompanyShow;
break;
}
default:
{
MessageBox.Show("条码不合格规范-公司代码", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
this.dgvDisplay.Rows.Add(this.strDate, this.strUser, this.strBarcodeContext, this.strClassShow, this.strClientCode, this.strInnerCode);
}
}
private void timMain_Tick(object sender, EventArgs e)
{
strDate = DateTime.Now.ToString();
tssDate.Text = "日期:" strDate;
}
private void tsmParameterSerial_Click(object sender, EventArgs e)
{
if (srlBarcode.IsOpen == true)
{
try
{
srlBarcode.Close();
this.tssPort.Text = "端口状态:" this.strPortName "已关闭";
}
catch
{
MessageBox.Show("串口关闭失败了!\n\n可能原因:端口被占用或端口不存在", "条码采集系统");
}
}
frmSPSetting frmSPSDemo = new frmSPSetting();
if (frmSPSDemo.ShowDialog() == DialogResult.OK)
{
this.strPortName = frmSPSDemo.strPortName;
this.strBaudRate = frmSPSDemo.strBaudRate;
this.strDataBits = frmSPSDemo.strDataBits;
this.strStopBits = frmSPSDemo.strStopBits;
this.strParity = frmSPSDemo.strParity;
srlBarcode.PortName = this.strPortName;
srlBarcode.BaudRate = Convert.ToInt32(this.strBaudRate);
srlBarcode.DataBits = Convert.ToInt16(this.strDataBits);
srlBarcode.Parity = (Parity)Enum.Parse(typeof(Parity), this.strParity);
srlBarcode.StopBits = (StopBits)Enum.Parse(typeof(StopBits), this.strStopBits, true);
if (srlBarcode.IsOpen == false)
{
try
{
srlBarcode.Open();
this.tssPort.Text = "端口状态:" this.strPortName " 已打开";
}
catch
{
MessageBox.Show("串口打开失败了!\n\n可能原因:端口被占用或端口不存在。", "条码采集系统");
}
}
}
}
private void srlBarcode_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(50);
this.strReceive = srlBarcode.ReadExisting();
int intReceivedLength;//定义接收数据长度变量
strBarcodeContext = strReceive.Trim().ToString();//接收的内容
intReceivedLength = strBarcodeContext.Length;
bool bIsNString;
bIsNString = IsPureNumberString(strBarcodeContext);//调用纯数字字符的函数
if (!bIsNString)
{
MessageBox.Show("条码格式错误-包含非数字字符", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (intReceivedLength != 17)
{
MessageBox.Show("条码长度错误", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
else
{
strYear = strBarcodeContext.Substring(0, 4);
strMonth = strBarcodeContext.Substring(4, 2);
strDay = strBarcodeContext.Substring(6, 2);
strClass = strBarcodeContext.Substring(8, 1);
strFlowNumber = strBarcodeContext.Substring(9, 4);
strProductCode = strBarcodeContext.Substring(13, 2);
strProductStatusCode = strBarcodeContext.Substring(15, 1);
strCompanyCode = strBarcodeContext.Substring(16, 1);
switch (strClass)
{
case "1":
{
strClassShow = "A班";
break;
}
case "2":
{
strClassShow = "B班";
break;
}
case "3":
{
strClassShow = "C班";
break;
}
default:
{
MessageBox.Show("条码不合格规范-班次", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strProductCode)
{
case "01":
{
strClientCode = "8WD.881.045";
strInnerCode = "3169847";
break;
}
case "02":
{
strClientCode = "8WD.881.046";
strInnerCode = "3169849";
break;
}
case "03":
{
strClientCode = "8WD.881.045.A";
strInnerCode = "3169851";
break;
}
case "04":
{
strClientCode = "8WD.881.045.B";
strInnerCode = "3169857";
break;
}
case "05":
{
strClientCode = "5QD.881.046.F";
strInnerCode = "3169853";
break;
}
case "06":
{
strClientCode = "5QD.881.045.H";
strInnerCode = "3170386";
break;
}
case "07":
{
strClientCode = "5QD.881.046.H";
strInnerCode = "3170387";
break;
}
case "08":
{
strClientCode = "3QD.881.045.A";
strInnerCode = "3170388";
break;
}
case "09":
{
strClientCode = "3QD.881.045.B";
strInnerCode = "3170389";
break;
}
case "10":
{
strClientCode = "3QD.881.046";
strInnerCode = "Undefined";
break;
}
case "11":
{
strClientCode = "3QD.881.045";
strInnerCode = "3170384";
break;
}
case "12":
{
strClientCode = "5QD.881.046.C";
strInnerCode = "3170385";
break;
}
default:
{
MessageBox.Show("条码不合格规范-产品号", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strProductStatusCode)
{
case "1":
{
strProductStatusShow = "03S";
break;
}
case "2":
{
strProductStatusShow = "01K";
break;
}
default:
{
MessageBox.Show("条码不合格规范-产品状态码", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strCompanyCode)
{
case "1":
{
strCompanyShow = "4RP";
break;
}
default:
{
MessageBox.Show("条码不合格规范-公司代码", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
}
this.Invoke(new EventHandler(DisplayReceived));
}
private void DisplayReceived(object sender, EventArgs e)
{
this.txtBarcode.Text = this.strReceive.Trim();
this.txtYear.Text = strYear;
this.txtClass.Text = strClassShow;
this.txtClass.Text = strClassShow;
this.txtClass.Text = strClassShow;
this.txtProductCode.Text = strProductCode;
this.txtFlowNumber.Text = strFlowNumber;
this.txtDay.Text = strDay;
this.txtMonth.Text = strMonth;
this.txtClientCode.Text = strClientCode;
this.txtInnerCode.Text = strInnerCode;
this.txtCompanyCode.Text = strCompanyShow;
this.txtProductStatus.Text = strProductStatusShow;
this.dgvDisplay.Rows.Add(this.strDate, this.strUser, this.strBarcodeContext, this.strClassShow, this.strClientCode, this.strInnerCode);
}
private void tsmHelp_Click(object sender, EventArgs e)
{
MessageBox.Show("开发单位:中德合心国际交流学院\n --教研中心\nE-mail:mengqingzhan@xnyhm.com\n e_dream@126.com\nQQ:49518395\n", "条码采集系统",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
}
}
}
【实例截图】

【核心代码】 public partial class frmMain : Form
{
string strBarcodeContext; //条码内容
string strYear; //年
string strMonth; //月
string strDay; //日
string strClass; //班次
string strClassShow; //班次显示
string strFlowNumber; //流水号
string strProductCode; //产品号
string strClientCode; //客户号
string strInnerCode; //内部号
string strProductStatusCode;//产品状态码
string strProductStatusShow;//产品状态显示
string strCompanyCode; //公司代码
string strCompanyShow; //公司代码显示
//string strDateShow; //日期显示
public static char[] hexDigital ={'0','1','2','3','4','5','6','7',
'8','9','A','B','C','D','E','F'};//十六进制
string strUser; //用户
string strDate; //日期
DataGridViewColumn dgvColDate = new DataGridViewColumn();
DataGridViewColumn dgvColOpr = new DataGridViewColumn();
DataGridViewColumn dgvColBarcode = new DataGridViewColumn();
DataGridViewColumn dgvColClass = new DataGridViewColumn();
DataGridViewColumn dgvColClientCode = new DataGridViewColumn();
DataGridViewColumn dgvColInnerCode = new DataGridViewColumn();
public string strPortName; //端口号
public string strBaudRate; //波特率
public string strDataBits; //数据位
public string strStopBits; //停止位
public string strParity; //校验
public string strPortNameIndex;
public string strBaudRateIndex;
public string strDataBitsIndex;
public string strStopBitsIndex;
public string strParityIndex;
public string strReceive; //条码接收
public string strApplicationPath;//文件路径
//判断字符串是不是纯数字字符字符串函数
public bool IsPureNumberString(string strSource)
{
int i, intStringLength;
byte bytValue;
intStringLength = strSource.Length;
for (i = 0; i < intStringLength; i )
{
bytValue = Convert.ToByte(strSource[i]);
if ((bytValue < 48) || (bytValue > 57))
{
return false;
}
}
return true;
}
//将字符串以十六进制形式显示
public static string ToHexString(byte[] bytAReceive)
{
int iBytALength;
int i;
int iValue;
iBytALength = bytAReceive.Length;
char[] chAReceive = new char[iBytALength * 3];
for (i = 0; i < iBytALength; i )
{
iValue = bytAReceive[i];
chAReceive[i * 3] = hexDigital[iValue >> 4];
chAReceive[i * 3 1] = hexDigital[iValue & 0xF];
chAReceive[i * 3 2] = ' ';
}
return new string(chAReceive);
}
//串口参数文件-写入
private void SPSWrite()
{
FileStream fsSPS = new FileStream(strApplicationPath "\\SPS.cfg", FileMode.OpenOrCreate);
StreamWriter swSPS = new StreamWriter(fsSPS);
swSPS.WriteLine(strPortName);
swSPS.WriteLine(strBaudRate);
swSPS.WriteLine(strDataBits);
swSPS.WriteLine(strStopBits);
swSPS.WriteLine(strParity);
swSPS.WriteLine(strPortNameIndex);
swSPS.WriteLine(strBaudRateIndex);
swSPS.WriteLine(strDataBitsIndex);
swSPS.WriteLine(strStopBitsIndex);
swSPS.WriteLine(strParityIndex);
swSPS.Close();
}
//串口参数文件-读取
private void SPSRead()
{
FileStream fsSPS = new FileStream(strApplicationPath "\\SPS.cfg", FileMode.OpenOrCreate);
StreamReader srSPS = new StreamReader(fsSPS);
strPortName = srSPS.ReadLine();
strBaudRate = srSPS.ReadLine();
strDataBits = srSPS.ReadLine();
strStopBits = srSPS.ReadLine();
strParity = srSPS.ReadLine();
strPortNameIndex = srSPS.ReadLine();
strBaudRateIndex = srSPS.ReadLine();
strDataBitsIndex = srSPS.ReadLine();
strStopBitsIndex = srSPS.ReadLine();
strParityIndex = srSPS.ReadLine();
srSPS.Close();
}
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
strApplicationPath = Application.StartupPath;
sknColor.SkinFile = strApplicationPath "\\WaveBlue.ssk";
strUser = "Admin";
tssUser.Text = "用户:" strUser;
timMain.Enabled = true;
dgvColDate.Name = "InfoDate";
dgvColDate.HeaderText = "日期 ";
dgvColDate.CellTemplate = new DataGridViewTextBoxCell();
dgvColOpr.Name = "InfoOpr";
dgvColOpr.HeaderText = "操作者";
dgvColOpr.CellTemplate = new DataGridViewTextBoxCell();
dgvColBarcode.Name = "InfoBarcode";
dgvColBarcode.HeaderText = "条码";
dgvColBarcode.CellTemplate = new DataGridViewTextBoxCell();
dgvColClass.Name = "InfoClass";
dgvColClass.HeaderText = "班次";
dgvColClass.CellTemplate = new DataGridViewTextBoxCell();
dgvColClientCode.Name = "InfoClientCode";
dgvColClientCode.HeaderText = "客户号";
dgvColClientCode.CellTemplate = new DataGridViewTextBoxCell();
dgvColInnerCode.Name = "InfoInnerCode";
dgvColInnerCode.HeaderText = "内部号";
dgvColInnerCode.CellTemplate = new DataGridViewTextBoxCell();
dgvDisplay.Columns.Add(dgvColDate);
dgvDisplay.Columns.Add(dgvColOpr);
dgvDisplay.Columns.Add(dgvColBarcode);
dgvDisplay.Columns.Add(dgvColClass);
dgvDisplay.Columns.Add(dgvColClientCode);
dgvDisplay.Columns.Add(dgvColInnerCode);
dgvDisplay.RowHeadersVisible = false;
dgvDisplay.AllowUserToAddRows = false;
dgvDisplay.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
dgvDisplay.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
dgvDisplay.ReadOnly = true;
if (File.Exists(@strApplicationPath "\\SPS.cfg") == false)
{
this.strPortName = "COM1";
this.strBaudRate = "9600";
this.strDataBits = "8";
this.strStopBits = "1";
this.strParity = "None";
}
else
{
SPSRead();
}
srlBarcode.PortName = this.strPortName;
srlBarcode.BaudRate = Convert.ToInt32(this.strBaudRate);
srlBarcode.DataBits = Convert.ToInt16(this.strDataBits);
srlBarcode.Parity = (Parity)Enum.Parse(typeof(Parity), this.strParity);
srlBarcode.StopBits = (StopBits)Enum.Parse(typeof(StopBits), this.strStopBits, true);
if (srlBarcode.IsOpen == false)
{
try
{
srlBarcode.Open();
this.tssPort.Text = "端口状态:" this.strPortName " 已打开";
}
catch
{
MessageBox.Show("串口打开失败了!\n\n可能原因:端口被占用或端口不存在。", "条码采集系统");
}
}
}
private void tlmExit_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dlrValue = MessageBox.Show("是否要退退出条码采集系统","条码采集系统",MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2);
if (dlrValue == DialogResult.OK)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
}
private void btnEncode_Click(object sender, EventArgs e)
{
int intBarcodeLength;//定义条码长度变量
strBarcodeContext = txtBarcode.Text.Trim().ToString();//读取条码输入框的内容
intBarcodeLength = strBarcodeContext.Length;
bool bIsNString;
bIsNString = IsPureNumberString(strBarcodeContext);//调用纯数字字符的函数
if (!bIsNString)
{
MessageBox.Show("条码格式错误-包含非数字字符", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (intBarcodeLength != 17)
{
MessageBox.Show("条码长度错误", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
else
{
strYear = strBarcodeContext.Substring(0, 4);
this.txtYear.Text = strYear;
strMonth = strBarcodeContext.Substring(4, 2);
this.txtMonth.Text = strMonth;
strDay = strBarcodeContext.Substring(6, 2);
this.txtDay.Text = strDay;
strClass = strBarcodeContext.Substring(8, 1);
strFlowNumber = strBarcodeContext.Substring(9, 4);
this.txtFlowNumber.Text = strFlowNumber;
strProductCode = strBarcodeContext.Substring(13, 2);
this.txtProductCode.Text = strProductCode;
strProductStatusCode = strBarcodeContext.Substring(15, 1);
strCompanyCode = strBarcodeContext.Substring(16, 1);
switch (strClass)
{
case "1":
{
strClassShow = "A班";
this.txtClass.Text = strClassShow;
break;
}
case "2":
{
strClassShow = "B班";
this.txtClass.Text = strClassShow;
break;
}
case "3":
{
strClassShow = "C班";
this.txtClass.Text = strClassShow;
break;
}
default:
{
MessageBox.Show("条码不合格规范-班次", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strProductCode)
{
case "01":
{
strClientCode = "8WD.881.045";
strInnerCode = "3169847";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "02":
{
strClientCode = "8WD.881.046";
strInnerCode = "3169849";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "03":
{
strClientCode = "8WD.881.045.A";
strInnerCode = "3169851";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "04":
{
strClientCode = "8WD.881.045.B";
strInnerCode = "3169857";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "05":
{
strClientCode = "5QD.881.046.F";
strInnerCode = "3169853";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "06":
{
strClientCode = "5QD.881.045.H";
strInnerCode = "3170386";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "07":
{
strClientCode = "5QD.881.046.H";
strInnerCode = "3170387";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "08":
{
strClientCode = "3QD.881.045.A";
strInnerCode = "3170388";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "09":
{
strClientCode = "3QD.881.045.B";
strInnerCode = "3170389";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "10":
{
strClientCode = "3QD.881.046";
strInnerCode = "Undefined";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "11":
{
strClientCode = "3QD.881.045";
strInnerCode = "3170384";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
case "12":
{
strClientCode = "5QD.881.046.C";
strInnerCode = "3170385";
txtClientCode.Text = strClientCode;
txtInnerCode.Text = strInnerCode;
break;
}
default:
{
MessageBox.Show("条码不合格规范-产品号", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strProductStatusCode)
{
case "1":
{
strProductStatusShow = "03S";
this.txtProductStatus.Text = strProductStatusShow;
break;
}
case "2":
{
strProductStatusShow = "01K";
this.txtProductStatus.Text = strProductStatusShow;
break;
}
default:
{
MessageBox.Show("条码不合格规范-产品状态码", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strCompanyCode)
{
case "1":
{
strCompanyShow = "4RP";
this.txtCompanyCode.Text = strCompanyShow;
break;
}
default:
{
MessageBox.Show("条码不合格规范-公司代码", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
this.dgvDisplay.Rows.Add(this.strDate, this.strUser, this.strBarcodeContext, this.strClassShow, this.strClientCode, this.strInnerCode);
}
}
private void timMain_Tick(object sender, EventArgs e)
{
strDate = DateTime.Now.ToString();
tssDate.Text = "日期:" strDate;
}
private void tsmParameterSerial_Click(object sender, EventArgs e)
{
if (srlBarcode.IsOpen == true)
{
try
{
srlBarcode.Close();
this.tssPort.Text = "端口状态:" this.strPortName "已关闭";
}
catch
{
MessageBox.Show("串口关闭失败了!\n\n可能原因:端口被占用或端口不存在", "条码采集系统");
}
}
frmSPSetting frmSPSDemo = new frmSPSetting();
if (frmSPSDemo.ShowDialog() == DialogResult.OK)
{
this.strPortName = frmSPSDemo.strPortName;
this.strBaudRate = frmSPSDemo.strBaudRate;
this.strDataBits = frmSPSDemo.strDataBits;
this.strStopBits = frmSPSDemo.strStopBits;
this.strParity = frmSPSDemo.strParity;
srlBarcode.PortName = this.strPortName;
srlBarcode.BaudRate = Convert.ToInt32(this.strBaudRate);
srlBarcode.DataBits = Convert.ToInt16(this.strDataBits);
srlBarcode.Parity = (Parity)Enum.Parse(typeof(Parity), this.strParity);
srlBarcode.StopBits = (StopBits)Enum.Parse(typeof(StopBits), this.strStopBits, true);
if (srlBarcode.IsOpen == false)
{
try
{
srlBarcode.Open();
this.tssPort.Text = "端口状态:" this.strPortName " 已打开";
}
catch
{
MessageBox.Show("串口打开失败了!\n\n可能原因:端口被占用或端口不存在。", "条码采集系统");
}
}
}
}
private void srlBarcode_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
Thread.Sleep(50);
this.strReceive = srlBarcode.ReadExisting();
int intReceivedLength;//定义接收数据长度变量
strBarcodeContext = strReceive.Trim().ToString();//接收的内容
intReceivedLength = strBarcodeContext.Length;
bool bIsNString;
bIsNString = IsPureNumberString(strBarcodeContext);//调用纯数字字符的函数
if (!bIsNString)
{
MessageBox.Show("条码格式错误-包含非数字字符", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
if (intReceivedLength != 17)
{
MessageBox.Show("条码长度错误", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
else
{
strYear = strBarcodeContext.Substring(0, 4);
strMonth = strBarcodeContext.Substring(4, 2);
strDay = strBarcodeContext.Substring(6, 2);
strClass = strBarcodeContext.Substring(8, 1);
strFlowNumber = strBarcodeContext.Substring(9, 4);
strProductCode = strBarcodeContext.Substring(13, 2);
strProductStatusCode = strBarcodeContext.Substring(15, 1);
strCompanyCode = strBarcodeContext.Substring(16, 1);
switch (strClass)
{
case "1":
{
strClassShow = "A班";
break;
}
case "2":
{
strClassShow = "B班";
break;
}
case "3":
{
strClassShow = "C班";
break;
}
default:
{
MessageBox.Show("条码不合格规范-班次", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strProductCode)
{
case "01":
{
strClientCode = "8WD.881.045";
strInnerCode = "3169847";
break;
}
case "02":
{
strClientCode = "8WD.881.046";
strInnerCode = "3169849";
break;
}
case "03":
{
strClientCode = "8WD.881.045.A";
strInnerCode = "3169851";
break;
}
case "04":
{
strClientCode = "8WD.881.045.B";
strInnerCode = "3169857";
break;
}
case "05":
{
strClientCode = "5QD.881.046.F";
strInnerCode = "3169853";
break;
}
case "06":
{
strClientCode = "5QD.881.045.H";
strInnerCode = "3170386";
break;
}
case "07":
{
strClientCode = "5QD.881.046.H";
strInnerCode = "3170387";
break;
}
case "08":
{
strClientCode = "3QD.881.045.A";
strInnerCode = "3170388";
break;
}
case "09":
{
strClientCode = "3QD.881.045.B";
strInnerCode = "3170389";
break;
}
case "10":
{
strClientCode = "3QD.881.046";
strInnerCode = "Undefined";
break;
}
case "11":
{
strClientCode = "3QD.881.045";
strInnerCode = "3170384";
break;
}
case "12":
{
strClientCode = "5QD.881.046.C";
strInnerCode = "3170385";
break;
}
default:
{
MessageBox.Show("条码不合格规范-产品号", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strProductStatusCode)
{
case "1":
{
strProductStatusShow = "03S";
break;
}
case "2":
{
strProductStatusShow = "01K";
break;
}
default:
{
MessageBox.Show("条码不合格规范-产品状态码", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
switch (strCompanyCode)
{
case "1":
{
strCompanyShow = "4RP";
break;
}
default:
{
MessageBox.Show("条码不合格规范-公司代码", "条码采集系统", MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
}
}
this.Invoke(new EventHandler(DisplayReceived));
}
private void DisplayReceived(object sender, EventArgs e)
{
this.txtBarcode.Text = this.strReceive.Trim();
this.txtYear.Text = strYear;
this.txtClass.Text = strClassShow;
this.txtClass.Text = strClassShow;
this.txtClass.Text = strClassShow;
this.txtProductCode.Text = strProductCode;
this.txtFlowNumber.Text = strFlowNumber;
this.txtDay.Text = strDay;
this.txtMonth.Text = strMonth;
this.txtClientCode.Text = strClientCode;
this.txtInnerCode.Text = strInnerCode;
this.txtCompanyCode.Text = strCompanyShow;
this.txtProductStatus.Text = strProductStatusShow;
this.dgvDisplay.Rows.Add(this.strDate, this.strUser, this.strBarcodeContext, this.strClassShow, this.strClientCode, this.strInnerCode);
}
private void tsmHelp_Click(object sender, EventArgs e)
{
MessageBox.Show("开发单位:中德合心国际交流学院\n --教研中心\nE-mail:mengqingzhan@xnyhm.com\n e_dream@126.com\nQQ:49518395\n", "条码采集系统",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
}
}
}
好例子网口号:伸出你的我的手 — 分享!
网友评论
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)
支持(0) 盖楼(回复)