最新资讯 New
2021/8/31
TSC TTP-344M P
搜索   Search

关于条码打印机的思考

2013-7-12 16:41:35

    困惑已久的条码打印机打印问题终于解决了,之后的畅快心情哪一个“爽”字了得,虽然关于条码打印机还是有些疑惑的地方,但问题的解决还是值得我们雀跃。真得感谢在此期间给予大力支持的朋友们,( 许多人对于RFID的感性认识都来自一则IBM的广告:一个在超市购物的青年一边逛一边往风衣里塞商品,到收银台后直接领取账单,而不需要掏钱付款。这则广告非常形象地给人们展示了RFID技术在日常生活中的应用。问题的解决虽然花去了我们很大的精力,但解决问题的过程还是非常有价值的,值得我们去总结和回味。

    本来项目初期就知道要解决自动生成条码的问题,那还是06年9月份的事情,当时只是安排开发人员从网上找来一个现成的程序,并买了一个扫描枪,把程序做适当调整后,通过激光打印机输出,能够识别,当时以为就一切OK了,没想到等系统上线并安装上专用的条码打印机后,打印出的条码却不能识别,并因此影响到了系统的实施,这时条码打印的问题才又被提上“议事日程”,重新投入人力,在网上大量搜索资料,下载新的控件,但问题依旧,之后又采用了条码字体的输出方式,试用了多种字体,还是不行,而后又采用网上所说的直接按条码编码方案绘制条码的方式,不行。令人困惑的是以上几种方式如果用普通激光打印机输出,都能够识别,就是用条码打印机输出不行,而且以上方式也有他人用其他品牌条码打印机能够识别的案例,就是用斑马打印机不行(这是令我们目前还疑惑的地方,客户采购的是斑马TLP 2844条码打印机),这时真是觉得没招了,时间也过去了两三个礼拜,系统的使用因此而搁浅着。
    不能再耽搁了,最后不得不去采纳一直没有去触碰的解决方式,那就是用打印机自身提供的命令输出方式,之所以没有去深入,一是感觉这种方式了解起来很繁琐,二是打印机自带的资料全部是英文的,看起来太费劲(呵呵,看来具备好的英文基础还是必要的)。但知道这种方式应该可以处理,又没有其他的办法,只好硬着头皮去尝试了,最后没想到只用了两天多的时间就搞定了,而且效果近乎完美。以下是解决问题的具体过程:
  (1) 阅读打印机自带的关于EPL2语言的英文资料(名称是EPL2 Programmer’s Manual Programming for Page Mode Printing),一开始只是走马观花,渐入佳境后想着自己去尝试输出,先依照例子自己编写了一个简单的命令文件(其实就是简单的文本命令,类似我们以前在DOS环境下编写的批处理文件),然后尝试着去发送给打印机,资料中提供了用DOS中的COPY命令输送打印机的方式,格式如下:COPY “FILENAME.EXT” LPT1 或COPY “FILENAME.EXT” COM1,但尝试后打印机没任何反应。
  (2) 打印输出出问题后开始找原因,发现条码打印机用的是USB端口,马上把命令修改为COPY “FILENAME.EXT”USB002,但结果是在目录中复制了一个名为USB002的文件,这时开始意识到是不是COPY命令不支持USB端口(DOS命令十几年前就停止升级了,而USB端口是近些年才普及的),电话咨询,果然如此,于是找来了一根并口打印缆,修改打印机端口,然后直接输出到LPT1端口,成功了,不过现在输出的不是条码,还只是简单的文字,但至少知道怎么驱动打印机了,窃喜!
  (3) 之后开始进一步了解用命令编写条码文本的问题,发现打印机提供的条码打印工具中打印时有直接打印到文件的选项(扩展名为.PRN),选择后生成的文本文件用记事本打开一看,正式我想要的,虽然里面的命令还不知所云,但除了条码部分其他都是可以识别的字符(条码部分是乱码),这时把生成的文件用COPY命令输出到打印机,打印出了可识别的条码,大喜!
  (4) 这时就比较有信心了,其实此时已不必去管文件中的字符命令作何用,可以不去研究英文资料了,只要用工具把要打印条码的格式调整好,然后输出到文件就行了,要替换的只是条码部分,所以现在开始研究看似乱码的条码部分,但疑惑的是短短15位的条码,乱码部分居然有十几行,在DOS中用DEBUG命令分析了半天,也没分析出个所以然。电话询问厂商,说是字体问题,调整后问题依旧(过后发现其实是没有正确理解),但意外发现定制好的条码标签属性中有一个“以图形方式打印条码”的选项,去掉该选项,再打印输出到文件,打开一开,乱码没了,惊喜!只是发现此时打印出的条码下面的字符总是比条码部分大一些,但感觉这是个小问题,没有急着马上处理。
  (5) 一路畅通,现在开始着手进行编程了,第一个问题是如何用程序调用DOS下的COPY命令,网上查询,说是用run(“cmd.exe/c copy XXX.prn LPT1”)格式,但尝试后发现不行(执行时一闪就消失了,打印机没反应,也许用于复制文件可以,没有试)。后来开始尝试调用批处理文件的方式(因为资料中有用批处理文件同时输送多个条码文件到打印机的介绍),把COPY命令写到批处理文件中,一开始也不行,最后才发现是批处理文件写错了,耽误了一段时间,修正后就可以了。
  (6) 现在开始编写条码文件生成部分的程序,就是将要生成的条码先写到一条码文件中,然后再输出到打印机,因为是对文本文件进行操作,轻车熟路,只是在保证每行输出三个条码部分费了一些心机,但也就是短短的半个小时。
  (7) 此时心情就轻松多了,还剩下一个小问题就是条码下面的字符过大,咨询后得知可以把条码和下面的字符分开处理,标签属性中有个“没有说明”的选项,去掉后下面的字符就没有了,然后单独加一个文本框,设置后大小没问题了,但字符部分总是很模糊,这时想到当时厂家提示必须采用条码字体,选择了一种打印机提供的字体(共五种,据说是存储在打印机内存中),打印后非常清楚。
    目前,由于国内的打印机随着价格的下降,已经开始逐渐普及,在国外,几乎所有的生产单位都配备有一台条码打印机,应用在产品标识等方面,并且大部分公司都拥有条码阅读器(即SCANNER)和条码数据采集器(盘点机)等打印机的附属设备,形成了公司内部管理的条码管理自动化的管理模式。至此所有问题全部解决了,把编写好的程序给用户调试好,尝试打印,一切OK!


关闭
138-2377-4796 工作时间:
上午8:30-12:00
下午13:30-18:30