公司车轴条形码标签打印程序的设计和开发
2020-02-28陈意和谢红群曾爽爽
◎陈意和 谢红群 曾爽爽
(作者单位:中车长江铜陵车辆有限公司信息档案处)
一、引言
公司目前车轴生产过程已实现报工,目前采用手工输入轴号的方式获取车轴轴号,存在轴号输入错误等多种问题,无法保证车轴轴号的唯一性。目前,条形码在生成过程中已应用广泛,公司计划采用扫描报工的方式替代原先的手工输入轴号方式报工。从而提高公司车轴生产报工的准确性。条码打印程序是其源头环节,条码打印程序设计的好坏影响到公司条码报工的推进。
二、条码打印程序设计思路
条码打印程序与公司车轴质量管理系统相关联。它从车轴质量系统中获取可打印车轴信息,并将打印记录和结果返写到车轴质量管理系统中。
1.条码标签内容。条码标签大小为60mm*30mm,标签上面部位为车轴的基本信息包括热处理炉号、车轴类型、轴号信息。方便员工通过标签即可了解车轴的基本信息。标签的下部为CODE_128 条形码,条形码内容长度为13 位字母和数据组成。前面两位为校验码,由随机的字母数字组成,后面11 位为车轴在车轴质量管理系统中的ID 号,两者组合成唯一的条码。条码重新打印后,会生成一个新的校验码,并将前面打印的条码信息禁用。在报工系统中,会对条码有效性进行判断,禁用的条码无法进行报工,确保一个轴号只有一个有效条码,避免重复的问题。
2.条码打印的方式。根据调研需求确定了条码打印的两种方式:单张打印和批量打印。单张打印适用于在生产过程中条码损坏、丢失等异常情况进行补打。由专门人员在车轴质量管理系统中进行补打授权,授权后的轴号变为可打印状态。打印人员登录打印程序,进入单张打印功能,输入轴号即可打印出条码标签。批量打印用于首次条码打印,根据车轴质量管理系统中的车轴毛坯检查清单,打印人员登录打印程序,进入批量打印功能,可查看到可打印的毛坯检查清单,进入检查清单选择打印的轴号(可多选),即可将选中的轴号的条码标签批量生成,并提交给打印机批量打印出来。
三、程序涉及到的主要方法
本程序为一个winform 程序,采用C#编程语言和oracle 数据库。涉及到图片生成、随机码生成、标签打印等多个方法。
1.图片生成方法。本方法主要用于生成轴号信息图片,合成条码标签图片等。
public void wztp(string str2,string nr)//轴号信息图片生成方法
{
string content=nr;//文字内容
Bitmap image=new Bitmap(240,40);
Graphics g=Graphics.FromImage(image);
g.Clear(System.Drawing.Color.White);
Font font=new Font("Arial",10f,(FontStyle.Regular));System.Drawing.Drawing2D.LinearGradientBrush brush =new
System.Drawing.Drawing2D.LinearGradientBrush (new Rectangle(0,0,image.Width,image.Height),System.Drawing.
Color.Black, System.Drawing.Color.DarkRed, 1f, true);
g.SmoothingMode=System.Drawing.Drawing2D.Smoothing-Mode.AntiAlias;
g.InterpolationMode=
System.Drawing.Drawing2D.InterpolationMode.HighQuality-Bicubic;
g.DrawString(content,font,brush,2,2);image.Save(str2);
g.Dispose();
image.Dispose();
}
2.随机码生成方法。本方法主要用于生成条形码中前两位的随机码。
public string randomzf(int length)//生成指定长度的随机码
{
string chars=
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
Random random=new Random();
string strs=string.Empty;
for(int i=0;i { strs+=chars[random.Next(chars.Length)]; } return strs; } 3.条码打印方法。本方法主要用于判断条码生成前轴号的合规性、以及生成打印条码标签,并更改对应数据库信息。 private void button1_Click(object sender,EventArgs e)//点击打印按钮触发 { …… if(dt.Rows.Count!=1)//是否允许打印 { return; } …… PrintDirectClass print=new PrintDirectClass(); print.imageFile="/codes/"+zh+".bmp"; print.PrintPreview(); OracleHelper.ExcuteSql("update t_axis set tmdy='N'where id='"+zh+"'");//更改打印标识 } 本程序于2019 年10 月开发完成并投入使用,在运用过程中,根据用户意见,对程序界面进行过优化。到目前为止已经打印9 万余根车轴条形码标签,程序使用过程中未出现差错,运行平稳,满足了公司车轴条形码标签打印的需求。四、总结