如何通过usb控制超市小票打印机?

linlingwei 2009-10-13 08:24:17
以前一直用的LPT1端口控制小票打印,现在笔记本都没有并口了,如何打印呢?
请给详细说明,最好有例子。找了好长时间了,一直没能解决。谢谢!
...全文
1791 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangbin151 2011-08-27
  • 打赏
  • 举报
回复
某些系统或软件只支持LPT接口的打印机,如果打印机刚好没有LPT口,这就需要我们用USB接口来虚拟LPT口,实现打印

第一步,配置网卡的IP地址,指定一个固定IP与子网掩码;

第二步,共享USB接口的条码打印机,记得起一个简单易记的名字,我的打印机起名叫Zebra888;

第三步,映射出刚才共享的打印机到LPT1端口,在命令行端口运行NET USE LPT1: \\计算机名或IP\打印机名 /Persistent:YES,回车;(把计算机名或IP和打印机名改成你自己的)

第四步,电脑重启后需要重新执行一下四步的命令,我们可以建立一个批处理文件,放到启动项中

这样可以,我试了!
houenyu 2011-05-07
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
f : TextFile;
i : Integer;
begin
AssignPrn(f);
Rewrite(f);
Printer.Canvas.Font.Name := '宋体';
Printer.Canvas.Font.Size := 8;
for i := 0 to Memo1.Lines.Count - 1 do
Writeln(f,memo1.Lines[i]);
CloseFile(f);
end;

//上面的方法是没有问题了,呵呵。Memo1中是要打印的文本。
zyai001 2010-11-13
  • 打赏
  • 举报
回复
对了,,我们这个打印机是不需要装驱动程序的,呵呵,,
我们软件直接操作打印机,,如果安装驱动的话,就会调用windows打印服务,
那么所有的打印内容就会被windows自动转化成图形模式打印,打印速度超级慢,
我们只需要打印文字,不需要图形。
zyai001 2010-11-13
  • 打赏
  • 举报
回复
我目前也遇到楼主一样的问题,,
呵呵,,以上各位虽然解答很热心,但是却全部无效答案。呵呵,,
在串口,LPT打印口,,我们可以直接通过 CreateFile("LPT1",,,,,,,)
这种方式,打开打印口,然后发送对应的数据以及指令,,
可是在USB的时候,这个函数却无效。不管是你"\\\\usb001"管道,还别的方式,,
查看MSDN只有一句话,USB打印机,IO端口设置查询指令
IOCTL_USBPRINT_VENDOR_GET_COMMAND

IOCTL_USBPRINT_VENDOR_SET_COMMAND

通过 DeviceIoControl,来取得设置字符,

一直都没闹清楚,,这个USB设置字符串怎么取得,所有例程都是HID设备的。没有打印设备的。
wanglaoji60 2010-09-11
  • 打赏
  • 举报
回复
给你我写的一个函数吧, 可以直接往打印机写数据:
Delphi(Pascal) code
uses Printers, WinSpool;function SendDataToPrinter(sDeviceName, sDocName, sData: String): Boolean;//功能描述: 发送数据到打印机 (Powered by Jadeluo)//入口参数:// sDeviceName- 打印机名称// sDocName- 打印文档名称// sData- 发送的数据//出口参数:// 返回值- True表示成功, False表示失败var
bResult : Boolean;
hPrinter : Cardinal;
tDocInfo : _DOC_INFO_1A;
iWrited : Cardinal;begin
bResult := OpenPrinter(PChar(sDeviceName), hPrinter,nil);if bResultthenbegin
tDocInfo.pDocName := PChar(sDocName);
tDocInfo.pOutputFile :=nil;
tDocInfo.pDatatype :=nil;
bResult := StartDocPrinter(hPrinter,1, @tDocInfo)<>0;if bResultthenbegin
bResult := StartPagePrinter(hPrinter);
bResult := bResultand WritePrinter(hPrinter, @sData[1], Length(sData), iWrited);
bResult := bResultand EndPagePrinter(hPrinter);
EndDocPrinter(hPrinter);end;
ClosePrinter(hPrinter);end;
Result := bResult;end;

我也是按这位高手的代码来控制USB打印机打印,数据确实存入了打印机的打印列表,但打印机无任何反应(打印机名字无误)...超级郁闷,盼更高的高手解决!
贝隆 2009-12-02
  • 打赏
  • 举报
回复
这个需要硬件驱动支持,有了驱动,依据它提供的DLL或者OCX来编程控制就是了。
linlingwei 2009-12-02
  • 打赏
  • 举报
回复
这个问题到现在还没解决,请求高手出现。
lyhoo163 2009-12-02
  • 打赏
  • 举报
回复
关键是打印机是USB接口的,如果不是并口的,可用转换头。但要有驱动程序。
思远周 2009-12-02
  • 打赏
  • 举报
回复
安装打印机驱动,选择USB端口,然后共享,在程序中通过文件写入的方式,通过USB端口送出去
case Combobox1.ItemIndex of
0 : assignfile(Fprt,'LPT1');
1 : assignfile(Fprt,'LPT2');
2 : assignfile(Fprt,'COM1');
3 : assignfile(Fprt,'COM2');
4 : assignfile(Fprt,'PrintOut.txt');
5 : assignfile(Fprt,'\\S4\HPLaserJ\HP LaserJet 2100');
end;
格式:\\电脑名称+\+共享名称+\打印机驱动
思远周 2009-12-02
  • 打赏
  • 举报
回复
安装打印机驱动,选择USB端口,然后共享,在程序中通过文件写入的方式,通过USB端口送出去
思远周 2009-12-02
  • 打赏
  • 举报
回复
共享驱动就可以了!
wxsan 2009-12-02
  • 打赏
  • 举报
回复
很久没搞过这个了!
金卯刀 2009-12-02
  • 打赏
  • 举报
回复
http://zhidao.baidu.com/question/126575298.html?fr=newQuestion
ziseliuxingzh 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 linlingwei 的回复:]
引用 16 楼 ziseliuxingzh 的回复:
思路有问题!
不需要直接操作USB,那样相当于自己写驱动,麻烦。
一般现在都是有USB转串口,USB转并口,之类的线。而且买线的时候会带驱动程序光盘。正确安装驱动以后显示在电脑上的就是COM口了,再操作串口就可以了。

问题是,用USB转并口之类的线,发送字符串的时候还是要发送到USB口呀,原来发送到并口的代码还是不能用呀。
[/Quote]
驱动后电脑上显示的就不是USB端口了,COM口或者是并口,但是操作都一样了,ASSIGNFILE(F,'LPT1')或者ASSIGNFILE(F,'COM1')。你试试就明白了。
xjq2003 2009-10-18
  • 打赏
  • 举报
回复
使用驱动程序,添加打印机,设置端口
lyhoo163 2009-10-18
  • 打赏
  • 举报
回复
用网络,控制支持的LPT1终端,打印。
linlingwei 2009-10-18
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 ziseliuxingzh 的回复:]
思路有问题!
不需要直接操作USB,那样相当于自己写驱动,麻烦。
一般现在都是有USB转串口,USB转并口,之类的线。而且买线的时候会带驱动程序光盘。正确安装驱动以后显示在电脑上的就是COM口了,再操作串口就可以了。
[/Quote]
问题是,用USB转并口之类的线,发送字符串的时候还是要发送到USB口呀,原来发送到并口的代码还是不能用呀。
newfang 2009-10-15
  • 打赏
  • 举报
回复
uses printers;

printer.BeginDoc;
printer.Canvas.TextOut(10,10,'要打印的内容');
printer.EndDoc;
linlingwei 2009-10-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jadeluo 的回复:]
引用 7 楼 linlingwei 的回复:
谢谢这位大侠,但是我按照你上面说的调试,结果打印机一点反应都没有,请指教。用的USB端口,POS58热敏打印机。
我用LPT1端口的时候,使用 的是ASSIGNFILE(F,'LPT1')方法输出字符串;


调用这个函数时一定要正确填写打印机的名称(例子中的''EPSON LQ-1600K'部分)。
[/Quote]

打印机的名字也没错,就是控制面板里显示的名字。打印机也设置为默认打印机了。
ziseliuxingzh 2009-10-15
  • 打赏
  • 举报
回复
思路有问题!
不需要直接操作USB,那样相当于自己写驱动,麻烦。
一般现在都是有USB转串口,USB转并口,之类的线。而且买线的时候会带驱动程序光盘。正确安装驱动以后显示在电脑上的就是COM口了,再操作串口就可以了。
加载更多回复(13)

5,390

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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