◎陳意和 謝紅群 曾爽爽
(作者單位:中車長江銅陵車輛有限公司信息檔案處)
公司目前車軸生產過程已實現報工,目前采用手工輸入軸號的方式獲取車軸軸號,存在軸號輸入錯誤等多種問題,無法保證車軸軸號的唯一性。目前,條形碼在生成過程中已應用廣泛,公司計劃采用掃描報工的方式替代原先的手工輸入軸號方式報工。從而提高公司車軸生產報工的準確性。條碼打印程序是其源頭環節,條碼打印程序設計的好壞影響到公司條碼報工的推進。
條碼打印程序與公司車軸質量管理系統相關聯。它從車軸質量系統中獲取可打印車軸信息,并將打印記錄和結果返寫到車軸質量管理系統中。
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 萬余根車軸條形碼標簽,程序使用過程中未出現差錯,運行平穩,滿足了公司車軸條形碼標簽打印的需求。四、總結