在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → 条码信息采集系统

条码信息采集系统

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:3.68M
  • 下载次数:20
  • 浏览次数:204
  • 发布时间:2021-05-04
  • 实例类别:C#语言基础
  • 发 布 人:dream110412
  • 文件格式:.rar
  • 所需积分:20
 相关标签: 信息 条码 系统 采集

实例介绍

【实例简介】工业现场总线串口通信,定制化界面,文件处理,参数配置,数据显示,自动检测端口,条码自动获取或手动输入
【实例截图】from clipboard
【核心代码】 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);
        }

        
    }
}


实例下载地址

条码信息采集系统

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

第 1 楼 dream110412 发表于: 2021-05-05 09:38 56
友好界面设计,通讯工程案例,不同界面的数据交互机制,文件读写功能,数据显示,是学习C#和工业控制及现场总线的支撑案例

支持(0) 盖楼(回复)

第 2 楼 dream110412 发表于: 2021-05-07 18:48 20
一起学习,共同进步!e_dream@126.com

支持(0) 盖楼(回复)

第 3 楼 dream110412 发表于: 2021-05-18 16:03 22
欢迎多提宝贵建议,完善自我,提升自我!有好的想法和要求,请发邮件e_dream@126.com,收到邮件,第一时间回复!

支持(0) 盖楼(回复)

发表评论

(您的评论需要经过审核才能显示)

查看所有3条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
;
报警