用js访问COM口来控制打印机
有个需求要用到收银条的打印,决定用Web架构,开始使用用IE的命令控制打印机打印,打印速度太慢,打印20来行要用40秒,在业务量高的情况下是不可以接受的。问EPSON TM-T88IV 打印机厂商,答复:要通过端口直接发打印指令才能发挥这个打印机的速度。指令集是“ESC/POS”。
一般用VC,VB做的桌面应用程序,可以直接控制端口,Web不知道怎么写COM或并口。后经询问得一例子,用javascript 在客户端直接打印输出。
此方案的思路是用windows的FileSystemObject对象,打开COM1或者LPT1,然后就把指令写进去,代码片断如下:
<script Language=JavaScript>
function print_onclick() {
var objfs = new ActiveXObject("Scripting.FileSystemObject");
var objprinter=objfs.CreateTextFile("COM1:",true);objprinter.Write(String.fromCharCode(0x1B) + "@");
objprinter.Writeline("__________________________________");
objprinter.Writeline("| 您打印的数据是:") ;
objprinter.Writeline("|_________________________________|") ;
objprinter.Close();
}
</script>
这样就可以直接打印了。打印的相同的内容几乎是马上就完成了,基本不用等待。
在调用FileSystemObject,出现过一些问题,出现了“Automation server can't create object ”错误,这是两个原因,Microsoft Windows Script 没有安装或版本过低,第二个原因是IE的安全限制了ActiveX的执行。调整这两点就没有问题了。
虽然此方法是直接写端口的,但是好像还是需要安装打印机的驱动程序,在vista下没装驱动程序直接写端口,都是打印乱码,不过后来没有在深究这个问题了。
转自:http://www.makenotes.net/?p=28002
本文永久链接 http://www.houkai.com/2009/09/5/js-com.html转载注明来自 HOUKAI.COM

如果单纯想打印点东西的话,直接用C#,MFC啊的,也非常简单~
差点看成“用X口来控制打飞机”
哎 我这思想
不错,学习了呵呵
我想现在都应该向着USB接口来发展吧
别说COM口,并口都已经很少了(新机)
比如说大家都知道的EPSON针打,基本上都已经配备好了USB接口,我想这才是发展的之道
@kangzj
对呀 如果只是为打印 VC++ C#很容易做。
@zhukun
你看 这么晚 还睡!眼花了吧
@歪歪屋啊
我们这的打印机现在都是用USB的。收银条项目用的可能特殊的配套的便宜的老机子吧!