如何提高前台小票打印速度 ?

HBJMSHOP 2011-02-09 09:20:18
请教各位大侠:
我前台小票的打印代码举例如下:
Open LPT1 For Output As #1
Print #1, Chr(27); "E"; " 收款日统计表"
Print #1, Chr(27); "I"; " "
Print #1, Chr(27); "I"; "----------------------------------------"
Print #1, Chr(27); "I"; " 支付方式 金额 "
Print #1, Chr(27); "I"; "----------------------------------------"
Print #1, Chr(27); "I"; "现金:" & Space(15) & Format(.Label3(10), "#0.00")
......
但我觉得上述代码打印不够快,还有什么其它的方式能提高打印速度的吗?

...全文
601 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
vbman2003 2011-02-14
  • 打赏
  • 举报
回复
我这儿设计的pos打印都是open "lpt1" for output as #1,没人反映存在速度问题,只是硬件方面针打应该没热敏的快....
Tiger_Zhao 2011-02-14
  • 打赏
  • 举报
回复
这只是一个表头,关键是你下面的内容如何取数?是否明细输入影响了速度?

你可以用循环直接输出一些固定格式的明细,这就是你用的打印机的极限速度。
如果相同明细数量的真实单据也是差不多的时间,那就没什么好优化的。只能换打印机了。
孤独剑_LPZ 2011-02-12
  • 打赏
  • 举报
回复
看lz的示例,仅是打印文字,不考虑图形
Open “LPT1” For Output As #1 与 printer.print
理论上正如17楼所说的那样,第一种最快,不过这些感觉都不如打印机的作用大,实际测试中感觉还是热敏的快,随发随打,仅打印文字
嗷嗷叫的老马 2011-02-12
  • 打赏
  • 举报
回复
先确认是打印机造成的速度慢,还是代码造成的速度慢。

看楼主的问法,好象已经默认是确定了代码的速度慢。
现在还是人类 2011-02-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 asftrhgjhkjlkttttttt 的回复:]
lz给的代码只是生成文本文件,不是打印...
一般打印小票用热敏打印机速度快,针打的就用printer
[/Quote]
这个观点就错了,虽然楼主贴出来的代码是有点问题,不过还是直接通过并口发送数据的。
他的代码正确的写法应该是这样
Open “LPT1” For Output As #1
...

这样就是直接打开并口通讯了。
他是向并口发送要打印的字符,然后控制板就通过收到的vbLf命令将缓冲区的字符转换成点阵数据驱动
打印机头输出出来。
从单纯的理论上看,这种方式已经是最快的了,因为这种方式在传输过程中最为简短直接。
不会产生通讯上比较多的时间,剩余的就是控制板驱动打印机头输出的过程时间了。
但是也要看看控制板的支持如何还有应用程序和系统资源的占用率如何。
通常用VB开发的应用程序,普通的跑起来在配置低点的机子上都会有30%-80%左右(这要看机子的性能
和系统的任务量来说),当VB进行串口、并口等这种通讯操作时,瞬间的100%CPU占用率是常有的(也是
看机器和系统情况而言)。所以这一块效率控制不好,也会影响到通讯的速度(虽然不会导致通讯失败,
但也会受Windows任务队列的延时影响)。
对于做硬件项目,建议用VC开发,可以很好的控制住资源的占用,这样对主机的要求就没那么高,相对成本
也会降低,如果一定要用VB跑,建议开多线程,然后把机子的配置提高点,这样相对来说要稳定点。
至于VB的多线程处理,虽然不是非常方便(有很多要注意的地方,否则就很容易崩溃),但也是能做到不出
问题的。在线程中加入几个Sleep 也会改善很多CPU占用过多的问题。
还有,图形模式如果是针式打印机相对比较快,因为比较粗糙,通讯数据量不是很大,9600的速度应该可以
接受,如果是热敏打印机,如果采用高分辨率模式打印,每行数据量通常要乘3,这样9600的速度就太慢了,
最好改成57600的速度比较容易接受,如果是并口,就不用考虑速度了,你连续发到缓冲区就可以,系统会
以最快的速度发往控制板,不过这个最快的速度与你机子的性能和系统任务队列有关。
王二.麻子 2011-02-11
  • 打赏
  • 举报
回复
我觉得不及时发送printer.enddoc或者用打开并口写文件方式没有及时关闭文件,会造成操作完成但是打印机不动作问题。

呵呵,以前用红外口操作喷墨打印机也没觉得慢,enddoc之后打印机马上就干活了。至于打印机从开始干活到打印任务完成,那是打印机的事情了,估计涉及打印机设计,内存,与计算机通信速度。。。有关。
dbcontrols 2011-02-09
  • 打赏
  • 举报
回复
第一种不经过驱动,要快一些
[Quote=引用 12 楼 hbjmshop 的回复:]
Open LPT1 For Output As #1 与 printer.print

上述两种方法有何区别?谁打印的快?
[/Quote]
咸清 2011-02-09
  • 打赏
  • 举报
回复
换打印机试试~~
孤独剑_LPZ 2011-02-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hbjmshop 的回复:]
Open LPT1 For Output As #1
我不是生成文件,而是指向了LPT1了,
[/Quote]
哦,看错了
Open LPT1 For Output As #1 与 printer.print估计差不多,没有质的差别,用热敏的快.
与打印机关系很大
HBJMSHOP 2011-02-09
  • 打赏
  • 举报
回复
Open LPT1 For Output As #1 与 printer.print

上述两种方法有何区别?谁打印的快?
dbcontrols 2011-02-09
  • 打赏
  • 举报
回复
这种不经过驱动,直接使用
Open LPT1 For Output As #1
Print #1, "123"
不过哪种速度都不慢,要那么快干嘛
与打印机有很多关系

[Quote=引用 10 楼 hbjmshop 的回复:]
Open LPT1 For Output As #1
我不是生成文件,而是指向了LPT1了,
[/Quote]
HBJMSHOP 2011-02-09
  • 打赏
  • 举报
回复
Open LPT1 For Output As #1
我不是生成文件,而是指向了LPT1了,
lxq19851204 2011-02-09
  • 打赏
  • 举报
回复
1、用串口打印速度比较快。
2、还有就是打印机的有针式和热敏打印,热敏打印要快于针式。针式打印机使用串口打印速度也是快于并口。
孤独剑_LPZ 2011-02-09
  • 打赏
  • 举报
回复
lz给的代码只是生成文本文件,不是打印...
一般打印小票用热敏打印机速度快,针打的就用printer
贝隆 2011-02-09
  • 打赏
  • 举报
回复
针式打印机本来就不快。
还有是不是和你的打印模式有关系?
zdingyun 2011-02-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hbjmshop 的回复:]
打印有点慢,另外不需打印图形
[/Quote]

这是打印时需要临时加载驱动所致.
HBJMSHOP 2011-02-09
  • 打赏
  • 举报
回复
大家做前台系统打印小票一般采用哪种方法?
HBJMSHOP 2011-02-09
  • 打赏
  • 举报
回复
打印机型号,爱普声220

我以前的前台系统有种方法,好像是通过直接写端口操作的,但我不知道如何搞
HBJMSHOP 2011-02-09
  • 打赏
  • 举报
回复
打印有点慢,另外不需打印图形
jhone99 2011-02-09
  • 打赏
  • 举报
回复
lz确认一下,是打印的时间长,还是其他程序导致的?
加载更多回复(1)

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧