◎陳意和 謝紅群 曾爽爽
(作者單位:中車長江銅陵車輛有限公司信息檔案處)
公司目前車軸生產(chǎn)過程已實現(xiàn)報工,目前采用手工輸入軸號的方式獲取車軸軸號,存在軸號輸入錯誤等多種問題,無法保證車軸軸號的唯一性。目前,條形碼在生成過程中已應(yīng)用廣泛,公司計劃采用掃描報工的方式替代原先的手工輸入軸號方式報工。從而提高公司車軸生產(chǎn)報工的準(zhǔn)確性。條碼打印程序是其源頭環(huán)節(jié),條碼打印程序設(shè)計的好壞影響到公司條碼報工的推進(jìn)。
條碼打印程序與公司車軸質(zhì)量管理系統(tǒng)相關(guān)聯(lián)。它從車軸質(zhì)量系統(tǒng)中獲取可打印車軸信息,并將打印記錄和結(jié)果返寫到車軸質(zhì)量管理系統(tǒng)中。
1.條碼標(biāo)簽內(nèi)容。條碼標(biāo)簽大小為60mm*30mm,標(biāo)簽上面部位為車軸的基本信息包括熱處理爐號、車軸類型、軸號信息。方便員工通過標(biāo)簽即可了解車軸的基本信息。標(biāo)簽的下部為CODE_128 條形碼,條形碼內(nèi)容長度為13 位字母和數(shù)據(jù)組成。前面兩位為校驗碼,由隨機(jī)的字母數(shù)字組成,后面11 位為車軸在車軸質(zhì)量管理系統(tǒng)中的ID 號,兩者組合成唯一的條碼。條碼重新打印后,會生成一個新的校驗碼,并將前面打印的條碼信息禁用。在報工系統(tǒng)中,會對條碼有效性進(jìn)行判斷,禁用的條碼無法進(jìn)行報工,確保一個軸號只有一個有效條碼,避免重復(fù)的問題。
2.條碼打印的方式。根據(jù)調(diào)研需求確定了條碼打印的兩種方式:單張打印和批量打印。單張打印適用于在生產(chǎn)過程中條碼損壞、丟失等異常情況進(jìn)行補(bǔ)打。由專門人員在車軸質(zhì)量管理系統(tǒng)中進(jìn)行補(bǔ)打授權(quán),授權(quán)后的軸號變?yōu)榭纱蛴顟B(tài)。打印人員登錄打印程序,進(jìn)入單張打印功能,輸入軸號即可打印出條碼標(biāo)簽。批量打印用于首次條碼打印,根據(jù)車軸質(zhì)量管理系統(tǒng)中的車軸毛坯檢查清單,打印人員登錄打印程序,進(jìn)入批量打印功能,可查看到可打印的毛坯檢查清單,進(jìn)入檢查清單選擇打印的軸號(可多選),即可將選中的軸號的條碼標(biāo)簽批量生成,并提交給打印機(jī)批量打印出來。
本程序為一個winform 程序,采用C#編程語言和oracle 數(shù)據(jù)庫。涉及到圖片生成、隨機(jī)碼生成、標(biāo)簽打印等多個方法。
1.圖片生成方法。本方法主要用于生成軸號信息圖片,合成條碼標(biāo)簽圖片等。
public void wztp(string str2,string nr)//軸號信息圖片生成方法
{
string content=nr;//文字內(nèi)容
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.隨機(jī)碼生成方法。本方法主要用于生成條形碼中前兩位的隨機(jī)碼。
public string randomzf(int length)//生成指定長度的隨機(jī)碼
{
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.條碼打印方法。本方法主要用于判斷條碼生成前軸號的合規(guī)性、以及生成打印條碼標(biāo)簽,并更改對應(yīng)數(shù)據(jù)庫信息。 private void button1_Click(object sender,EventArgs e)//點擊打印按鈕觸發(fā) { …… 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+"'");//更改打印標(biāo)識 } 本程序于2019 年10 月開發(fā)完成并投入使用,在運用過程中,根據(jù)用戶意見,對程序界面進(jìn)行過優(yōu)化。到目前為止已經(jīng)打印9 萬余根車軸條形碼標(biāo)簽,程序使用過程中未出現(xiàn)差錯,運行平穩(wěn),滿足了公司車軸條形碼標(biāo)簽打印的需求。四、總結(jié)