如何通过usb控制超市小票打印机.docx
《如何通过usb控制超市小票打印机.docx》由会员分享,可在线阅读,更多相关《如何通过usb控制超市小票打印机.docx(8页珍藏版)》请在冰豆网上搜索。
如何通过usb控制超市小票打印机
如何通过usb控制超市小票打印机?
以前一直用的LPT1端口控制小票打印,现在笔记本都没有并口了,如何打印呢?
请给详细说明,最好有例子。
找了好长时间了,一直没能解决。
谢谢!
回复讨论(解决方案)
买个USB转并口的连接线
买个USB转并口的连接线
这个方法根本不行,小票打印是想端口发送字符串。
默认是向并口发送字符串,你这样转换连接线,其实程序还是向usb发送字符串,不能用。
现在困惑的就是如何向usb发送字符串?
我也用过usb转com口的转接口啊.连接com设备一点问题都没..
重要的是软件能不能设置com口.
引用1楼wintergoes的回复:
买个USB转并口的连接线这个方法根本不行,小票打印是想端口发送字符串。
默认是向并口发送字符串,你这样转换连接线,其实程序还是向usb发送字符串,不能用。
现在困惑的就是如何向usb发送字符串?
你原来的代码是如何打开LPT1:
端口的?
给你我写的一个函数吧,可以直接往打印机写数据:
usesPrinters,WinSpool;
functionSendDataToPrinter(sDeviceName,sDocName,sData:
String):
Boolean;
//功能描述:
发送数据到打印机(PoweredbyJadeluo)
//入口参数:
//sDeviceName-打印机名称
//sDocName-打印文档名称
//sData-发送的数据
//出口参数:
//返回值-True表示成功,False表示失败
var
bResult:
Boolean;
hPrinter:
Cardinal;
tDocInfo:
_DOC_INFO_1A;
iWrited:
Cardinal;
begin
bResult:
=OpenPrinter(PChar(sDeviceName),hPrinter,nil);
ifbResultthen
begin
tDocInfo.pDocName:
=PChar(sDocName);
tDocInfo.pOutputFile:
=nil;
tDocInfo.pDatatype:
=nil;
bResult:
=StartDocPrinter(hPrinter,1,@tDocInfo)<>0;
ifbResultthen
begin
bResult:
=StartPagePrinter(hPrinter);
bResult:
=bResultandWritePrinter(hPrinter,@sData[1],Length(sData),iWrited);
bResult:
=bResultandEndPagePrinter(hPrinter);
EndDocPrinter(hPrinter);
end;
ClosePrinter(hPrinter);
end;
Result:
=bResult;
end;打印机名称即在Windows里安装好打印机后,显示在"打印机和传真"里的打印机名称。
比如,打印机名称为"EPSONLQ-1600K",要发送的数据为#27#78'1'#0(进纸指令),则调用形式为:
SendDataToPrinter('EPSONLQ-1600K','PaperFeed',#27#78'1'#0);//'PaperFeed'内容是可以任意的
路过。
给你我写的一个函数吧,可以直接往打印机写数据:
Delphi(Pascal)code
usesPrinters,WinSpool;functionSendDataToPrinter(sDeviceName,sDocName,sData:
String):
Boolean;//功能描述:
发送数据到打印机(PoweredbyJadeluo)//入口参数:
//sDeviceName-打印机名称//sDocName-打印文档名称//sData-发送的数据//出口参数:
//返回值-True表示成功,False表示失败var
bResult:
Boolean;
hPrinter:
Cardinal;
tDocInfo:
_DOC_INFO_1A;
iWrited:
Cardinal;begin
bResult:
=OpenPrinter(PChar(sDeviceName),hPrinter,nil);ifbResultthenbegin
tDocInfo.pDocName:
=PChar(sDocName);
tDocInfo.pOutputFile:
=nil;
tDocInfo.pDatatype:
=nil;
bResult:
=StartDocPrinter(hPrinter,1,@tDocInfo)<>0;ifbResultthenbegin
bResult:
=StartPagePrinter(hPrinter);
bResult:
=bResultandWritePrinter(hPrinter,@sData[1],Length(sData),iWrited);
bResult:
=bResultandEndPagePrinter(hPrinter);
EndDocPrinter(hPrinter);end;
ClosePrinter(hPrinter);end;
Result:
=bResult;end;打印机名称即在Windows里安装好打印机后,显示在"打印机和传真"里的打印机名称。
比如,打印机名称为"EPSONLQ-1600K",要发送的数据为#27#78'1'#0(进纸指令),则调用形式为:
SendDataToPrinter('EPSONLQ-1600K','PaperFeed',#27#78'1'#0);//'PaperFeed'内容是可以任意的谢谢这位大侠,但是我按照你上面说的调试,结果打印机一点反应都没有,请指教。
用的USB端口,POS58热敏打印机。
我用LPT1端口的时候,使用的是ASSIGNFILE(F,'LPT1')方法输出字符串;
谢谢这位大侠,但是我按照你上面说的调试,结果打印机一点反应都没有,请指教。
用的USB端口,POS58热敏打印机。
我用LPT1端口的时候,使用的是ASSIGNFILE(F,'LPT1')方法输出字符串;调用这个函数时一定要正确填写打印机的名称(例子中的''EPSONLQ-1600K'部分)。
用过USB转COM的没用过并口
去网上找一个读取USB的代码
引用7楼linlingwei的回复:
谢谢这位大侠,但是我按照你上面说的调试,结果打印机一点反应都没有,请指教。
用的USB端口,POS58热敏打印机。
我用LPT1端口的时候,使用的是ASSIGNFILE(F,'LPT1')方法输出字符串;调用这个函数时一定要正确填写打印机的名称(例子中的''EPSONLQ-1600K'部分)。
打印机的名字也没错,就是控制面板里显示的名字。
打印机也设置为默认打印机了。
usesprinters;printer.BeginDoc;
printer.Canvas.TextOut(10,10,'要打印的内容');
printer.EndDoc;
你可以找?
家要?
DEMO?
看看呢
路过。
思路有问题!
不需要直接操作USB,那样相当于自己写驱动,麻烦。
一般现在都是有USB转串口,USB转并口,之类的线。
而且买线的时候会带驱动程序光盘。
正确安装驱动以后显示在电脑上的就是COM口了,再操作串口就可以了。
思路有问题!
不需要直接操作USB,那样相当于自己写驱动,麻烦。
一般现在都是有USB转串口,USB转并口,之类的线。
而且买线的时候会带驱动程序光盘。
正确安装驱动以后显示在电脑上的就是COM口了,再操作串口就可以了。
问题是,用USB转并口之类的线,发送字符串的时候还是要发送到USB口呀,原来发送到并口的代码还是不能用呀。
用网络,控制支持的LPT1终端,打印。
使用驱动程序,添加打印机,设置端口
引用16楼ziseliuxingzh的回复:
思路有问题!
不需要直接操作USB,那样相当于自己写驱动,麻烦。
一般现在都是有USB转串口,USB转并口,之类的线。
而且买线的时候会带驱动程序光盘。
正确安装驱动以后显示在电脑上的就是COM口了,再操作串口就可以了。
问题是,用USB转并口之类的线,发送字符串的时候还是要发送到USB口呀,原来发送到并口的代码还是不能用呀。
驱动后电脑上显示的就不是USB端口了,COM口或者是并口,但是操作都一样了,ASSIGNFILE(F,'LPT1')或者ASSIGNFILE(F,'COM1')。
你试试就明白了。
这个问题到现在还没解决,请求高手出现。
这个需要硬件驱动支持,有了驱动,依据它提供的DLL或者OCX来编程控制就是了。
很久没搞过这个了!
共享驱动就可以了!
安装打印机驱动,选择USB端口,然后共享,在程序中通过文件写入的方式,通过USB端口送出去安装打印机驱动,选择USB端口,然后共享,在程序中通过文件写入的方式,通过USB端口送出去
caseCombobox1.ItemIndexof
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\HPLaserJet2100');
end;
格式:
\\电脑名称+\+共享名称+\打印机驱动
关键是打印机是USB接口的,如果不是并口的,可用转换头。
但要有驱动程序。
给你我写的一个函数吧,可以直接往打印机写数据:
Delphi(Pascal)code
usesPrinters,WinSpool;functionSendDataToPrinter(sDeviceName,sDocName,sData:
String):
Boolean;//功能描述:
发送数据到打印机(PoweredbyJadeluo)//入口参数:
//sDeviceName-打印机名称//sDocName-打印文档名称//sData-发送的数据//出口参数:
//返回值-True表示成功,False表示失败var
bResult:
Boolean;
hPrinter:
Cardinal;
tDocInfo:
_DOC_INFO_1A;
iWrited:
Cardinal;begin
bResult:
=OpenPrinter(PChar(sDeviceName),hPrinter,nil);ifbResultthenbegin
tDocInfo.pDocName