隨著計算機在生產、銷售、管理上應用水平的提高以及internet 、intranet 的普及,條碼技術在生產管理、銷售管理上的使用越來越多,條碼的編碼技術和識別技術也得到了較快的發展。我單位因建設資訊管理系統的需要,使用條碼識別生產中的光纖,並用來管理光纖,需要給多台客戶機配備條碼列印功能。但普通的條碼印表機**比較昂貴,功能比較單一,給每台計算機配條碼印表機是很不合算的,也給工作帶來不便。
---- 我們利用mis系統的前台開發工具powerbuilder 6.0 設計了一套程式,在普通雷射印表機上實現了條碼列印,圓滿的解決了生產管理上的條碼問題。
---- 現在條碼編碼使用較多的是39碼,日常商品上隨處可見。它包括識別的**和前後各乙個'*'區別條碼的起始和結束,其編碼方法是,每個字元的編碼由5條黑線和相鄰黑線之間的間隙來表示。寬的黑線表示 1 ,窄則表示 0,同樣黑線之間的間隙寬的表示 1,窄的表示 0 。這樣的乙個9位的二進位制數就用來表示乙個字元,例如,001100100 (前面5位由線表示,後4位為空格)表示十進位制的 0。在39碼的規則裡,9位數中必須有3位是1。由此規則,鍵盤上的26個字母和10個數字,以及常用的一些符號都有一一對應的39碼編碼。我們就是利用此規則進行程式設計的。
---- powerbuilder 提供了乙個printline()函式:
---- printline ( printjobnumber, x1, y1, x2, y2, thickness )在乙個printjobnumber中可以列印多條直線,線的位置由指定座標確定,線寬由thickness 決定,這樣就可以由程式實現我們預定的功能。
---- 在pb中定義乙個函式,這裡舉例為視窗函式:
wf_barprint(long job, integer x_pos ,
integer y_pos,bar_width as intger,string code )
returns integer
// x_pos ,y_pos 為條碼列印的起始位置
//bar_width 條碼窄線的寬度
//code ,要列印的字串
char bar_card[20],bar_print[22]
char temp_card[12]
string bar_table[40]
int i,j,x_scan,cal_card,y_scan
x_scan = x_pos
y_scan = y_pos
bar_table[1]='00110-0100' // 0
bar_table[2]='10001-0100' // 1
bar_table[3]='01001-0100' // 2
bar_table[4]='11000-0100' // 3
bar_table[5]='00101-0100' // 4
bar_table[6]='10100-0100' // 5
bar_table[7]='01100-0100' // 6
bar_table[8]='00011-0100' // 7
bar_table[9]='10010-0100' // 8
bar_table[10]='01010-0100' // 9
bar_table[11]='10001-0010' // a
bar_table[12]='01001-0010' // b
bar_table[13]='11000-0010' // c
bar_table[14]='00101-0010' // d
bar_table[15]='10100-0010' // e
bar_table[16]='01100-0010' // f
bar_table[17]='00011-0010' // g
bar_table[18]='10010-0010' // h
bar_table[19]='01010-0010' // i
bar_table[20]='00110-0010' // j
bar_table[21]='10001-0001' // k
bar_table[22]='01001-0001' // l
bar_table[23]='11000-0001' // m
bar_table[24]='00101-0001' // n
bar_table[25]='10100-0001' // o
bar_table[26]='01100-0001' // p
bar_table[27]='00011-0001' // q
bar_table[28]='10010-0001' // r
bar_table[29]='01010-0001' // s
bar_table[30]='00110-0001' // t
bar_table[31]='10001-1000' // u
bar_table[32]='01001-1000' // v
bar_table[33]='11000-1000' // w
bar_table[34]='00101-1000' // x
bar_table[35]='10100-1000' // y
bar_table[36]='01100-1000' // z
bar_table[37]='00011-1000' // -
bar_table[38]='10010-1000' // %
bar_table[39]='01010-1000' // $
bar_table[40]='00110-1000' // *
bar_card = upper(code)
if left(bar_card,1) < > '*' then
bar_print = '*' + bar_card // 新增起始符
end if
if right(bar_card,1) < > '*' then
bar_print = bar_card + '*' // 新增結束符
end if
j = 1
do if (bar_print[j] = '*') then
cal_card = 40
elseif (bar_print[j] = '-') then
cal_card = 37
elseif (bar_print[j] >= 'a') then
cal_card = 11 + asc(bar_print[j])
- asc('a')
elseif (bar_print[j] >= '0') then
cal_card = 1 + asc(bar_print[j])
- asc('0')
end if
temp_card = bar_table[cal_card]
for i = 1 to 5
if (temp_card[i] = '0') then
x_scan = x_scan + bar_width / 2
printline(job,x_scan,y_scan,
x_scan,y_scan + 550,bar_width)
x_scan = x_scan + bar_width / 2
else
x_scan = x_scan + bar_width * 3 / 2
printline(job,x_scan,y_scan + 6,
x_scan,y_scan + 544,3 * bar_width)
x_scan = x_scan + bar_width * 3 / 2
end if
if (temp_card[6 + i] = '1') then
x_scan = x_scan + 4 * bar_width
else
x_scan = x_scan + 3 * bar_width /2
end if
next
j = j + 1
loop while (bar_print[j] < > '')
printtext(job,code,x_scan - 1200,y_scan + 600)
return 1
---- 通過呼叫以上自定義函式與printbitmap ( printjobnumber, bitmap, x, y, width, height )、printtext()等函式配合可以在普通雷射印表機上方便的列印出漂亮的條碼和輔助圖案。之所以在呼叫時直接確定printjobnumber,是為了方便在出報表時同乙個printjobnumber下將報表和條碼列印在一張紙,這樣使您的報表顯得非常專業,也很漂亮。
PB程式中在普通雷射印表機上實現條碼列印
分享到 0 隨著計算機在生產 銷售 管理上應用水平的提高以及internet intranet 的普及,條碼技術在生產管理 銷售管理上的使用越來越多,條碼的編碼技術和識別技術也得到了較快的發展。我單位因建設資訊管理系統的需要,使用條碼識別生產中的光纖,並用來管理光纖,需要給多台客戶機配備條碼列印功能...
能看到網路印表機 雷射印表機怎麼選硒鼓
雷射印表機的硒鼓用完了會碰到乙個很尷尬的問題,不知道怎麼買硒鼓。現在雷射印表機的廠商和品牌太多了,想要買印表機的硒鼓不知道從 下手,今天咱們就一塊聊聊雷射印表機到底要怎麼樣選硒鼓呢 1 確定自己使用的雷射印表機使用的品牌 2 確定印表機型號 3 開啟雷射印表機的粉倉 4 確定硒鼓的結構 5 找出硒鼓...
雷射印表機的原理 碳粉分類
第一篇雷射印表機工作原理 雷射列印原理 以hp 反轉顯影方式 為例,雷射頭以雷射束方式將應該成像的照射在opc上 opc本身絕緣,表面已經充上負電,印表機給其內部乙個正電背壓 使opc該上粉的位置電阻降低,表面負電荷消失,形成所謂的靜電潛像。這樣,墨粉本身帶負電,與opc內部正電異性相吸,轉移到op...