当前位置:首页 > > 充电吧
[导读]随着计算机在生产、销售、管理上应用水平的提高以及Internet 、Intranet 的普及,条码技术在生产管理、销售管理上的使用越来越多,条码的编码技术和识别技术也得到了较快的发展。我单位因建设信息

随着计算机在生产、销售、管理上应用水平的提高以及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下将报表和条码打印在一张纸,这样使您的报表显得非常专业,也很漂亮。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭