收藏 分销(赏)

通用小票打印程序.doc

上传人:xrp****65 文档编号:6634193 上传时间:2024-12-18 格式:DOC 页数:6 大小:47KB 下载积分:10 金币
下载 相关 举报
通用小票打印程序.doc_第1页
第1页 / 共6页
通用小票打印程序.doc_第2页
第2页 / 共6页


点击查看更多>>
资源描述
怎样做出通用的pos小票打印程序 POS小票打印机分为热敏和针式俩种。 打印纸的宽度分为58毫米、76毫米和80毫米三种。 打印接口分为:串口、并口、USB和网口(以太网)。 热敏打印机速度较快,打印的时候噪音少,针打可以使用多联纸自动复印。 热敏打印机价格一般比较便宜,不需要频繁地更换色带。 并口打印机,可直接"端口输出",不需要安装打印机的驱动程序。 几乎所有的POS小票打印机都可以兼容EPSON的ESC POS打印机指令。 const // 末尾走纸几行 c_run_paper_lines = 6; // ESC指令 开钱箱 c_OpenMoneyBoxCommand = CHR(27) + CHR(112) + CHR(0) + CHR(17) + CHR(8); // ESC指令 自动切纸 c_cut_paper = CHR(29) + CHR(86) + CHR(66) + CHR(0);   type // usb接口票打用 TOutBufPassThrough = record nDataLen: word; sEscData: array [0 .. 1024] of AnsiChar; end; // usb接口开钱箱 procedure OpenUSBMoneyBox; var prt: TPrinter; esc: TOutBufPassThrough; begin try prt := Printers.Printer; prt.beginDoc; esc.nDataLen := Length(c_OpenMoneyBoxCommand); strpCopy(esc.sEscData, c_OpenMoneyBoxCommand); windows.ExtEscape(prt.Handle, PASSTHROUGH, sizeOf(esc), @esc, 0, nil); prt.endDoc; except end; end; // usb接口切纸 procedure usbCutPaper; var prt: TPrinter; esc: TOutBufPassThrough; begin try prt := Printers.Printer; prt.beginDoc; esc.nDataLen := Length(c_cut_paper); strpCopy(esc.sEscData, c_cut_paper); windows.ExtEscape(prt.Handle, PASSTHROUGH, sizeOf(esc), @esc, 0, nil); prt.endDoc; except end; end; procedure TfrmReprint.Print80; var sPort: string; RPrinter: TextFile; i: Integer; sBill, sBarcode, sXH, sPortType: string; MyList: TStringList; BillId: string; sTmp: string; iTmp: Integer; sMoney: string; sGoodName: string; iLen: Integer; sTmp2: string; begin // 生成一个小票的文本文件 sBill := ExtractFilePath(Application.ExeName) + 'bill.txt'; AssignFile(RPrinter, sBill); Rewrite(RPrinter); try // 店名 Writeln(RPrinter, ' ' + UserInfo.ShopName); Writeln(RPrinter, '机号 收款员 交易流水号'); sTmp := UserInfo.MachineId + ' ' + UserInfo.UserCode; iTmp := 32 - Length(sTmp); i := Length(cdsMaster.FieldByName('saleno').Text); while i < iTmp do begin BillId := BillId + ' '; i := i + 1; end; BillId := BillId + cdsMaster.FieldByName('saleno').Text; Writeln(RPrinter, sTmp + BillId); Writeln(RPrinter, '印小票时间:' + FormatDatetime('yyyy-mm-dd hh:nn', now)); Writeln(RPrinter, '-------------------------------------'); cdsDetail.First; while not cdsDetail.Eof do begin // 序号 sXH := cdsDetail.FieldByName('Sequence').Text; while Length(sXH) < 2 do begin sXH := sXH + ' '; end; // 金额 sMoney := FormatFloat('0.00', cdsDetail.FieldByName('amount').AsFloat); i := Length(sMoney); sTmp := ''; while i < 9 do begin sTmp := sTmp + ' '; i := i + 1; end; sMoney := sTmp + sMoney; // 商品名称 sGoodName := cdsDetail.FieldByName('goodsName').Text; iLen := Length(sGoodName); while iLen < 9 do begin sGoodName := sGoodName + ' '; iLen := iLen + 1; end; Writeln(RPrinter, sXH + ' ' + sGoodName + cdsDetail.FieldByName('qty') .Text + '*' + FormatFloat('0.00', cdsDetail.FieldByName('buyPrice') .AsFloat) + sMoney); cdsDetail.Next; end; Writeln(RPrinter, '-------------------------------------'); Writeln(RPrinter, '金额:' + FormatFloat('0.00', cdsMaster.FieldByName('BalanceAmount').AsFloat)); Writeln(RPrinter, sTmp2); Writeln(RPrinter, ' 谢谢惠顾!'); // 末尾走纸 行数 for i := 1 to c_run_paper_lines do Writeln(RPrinter, ''); finally CloseFile(RPrinter); end; if SameText(UserInfo.PrintPort, 'lpt') then // 直接并口输出 不要安装票打驱动 begin // 读取文本文件打印小票 sPort := 'LPT1'; MyList := TStringList.Create; try AssignFile(RPrinter, sPort); try Rewrite(RPrinter); MyList.LoadFromFile(sBill); for i := 0 to MyList.Count - 1 do begin Writeln(RPrinter, MyList.Strings[i]); end; // 开钱箱 write(RPrinter, c_OpenMoneyBoxCommand); write(RPrinter, c_cut_paper); CloseFile(RPrinter); except // 如果LPT1端口不存在,会报错:the specified file not found // 有些主板不提供LPT并口,不屏蔽错误,无法收银 end; finally MyList.Free; end; end else if SameText(UserInfo.PrintPort, 'usb') then // 需要安装票打驱动 begin try RichEdit1.Font.Size := 12; RichEdit1.Lines.Clear; RichEdit1.Lines.LoadFromFile(sBill); RichEdit1.Print(''); if UserInfo.openMoneyBox = 1 then OpenUSBMoneyBox; except on e: Exception do SysLog.WriteLog('TfrmReprint.Print80' + e.Message); end; end; end;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 环境建筑 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服