标签:str 介绍 star named printf scheduler int enabled 设备
项目中遇到,要蓝牙针式打印机,用手机打印表单。感谢专家,对厂家提供的SDK进行了封装,实现利用Delphi开发出这一功能。
现在来看看,如何利用这一控件实现打印过程:
procedure startScanDevices; procedure stopScanDevices; function getScanedDevices: TList<TCCFujitsuPrinterDevice>; function openConnection(ADevice: TCCFujitsuPrinterDevice): Integer; procedure printPDFPaper(pdfPath: String; sX: Integer; mode: Integer);
TCCFujitsuPrinter提供了上面几个方法,利用startScanDevices扫描蓝牙打印机,
property Devices: TList<TCCFujitsuPrinterDevice> read FDevices;
然后我们用stopScanDevices停止扫描,调用getScanDevices,将扫描到的设备存到Devices。
接下来就是利用openConnection联接打印机,成功返回1,然后调用printPDFPaper进行打印。
下面,是实际项目中的查询打印机的代码,利用kbmMW Scheduler实现。
procedure TPrintFrame.ScanPrinter; begin if IsConnectPrinter=1 then Exit; AniIndicator1.Visible:=True; AniIndicator1.Enabled:=True; Printer.startScanDevices;//查找打印机 Scheduler.Schedule( procedure (const AScheduledEvent:IkbmMWScheduledEvent) var i:Integer; begin CCButton1.Text:=‘正在查找打印机...‘; Printer.getScanedDevices;//取得扫到的设备 for I := 0 to Printer.Devices.Count-1 do begin if (Printer.Devices[i].DeviceName=‘蓝牙打印机‘) and (Printer.Devices[i].Paired) then//如果找到指定的打印机并已经配对,中止扫描并返回设备号 begin DeviceIndex:=i; printer.stopScanDevices; IsConnectPrinter:=printer.openConnection(Printer.Devices[i]); sleep(500); AniIndicator1.Visible:=False; AniIndicator1.Enabled:=False; CCButton1.Text:=‘开始打印‘; AScheduledEvent.Activate(False);//中止线程 Break; end; end; end) .Synchronized//主线程中执行 .NamedAs(‘ScanPrinter‘) .EverySecond(2)//每两秒检查一次扫到的设备 .Activate; end;
找到了打印机,就可以实现打印了:
procedure TPrintFrame.CCButton1Click(Sender: TObject); begin if DeviceIndex=-1 then//没找到打印机直接返回 Exit; if IsConnectPrinter<>1 then//没联接打印机则执行联接打印机 IsConnectPrinter:=Printer.openConnection(Printer.Devices[DeviceIndex]); Scheduler.Run(procedure begin Printer.printPDFPaper(FInfo.Data[‘FileName‘].AsString,0,2); end) .Activate; end;
上面代码,同样利用kbmMW Scheduler实现在线程中打印。
最后,代码实现完成,发布时要带几个SO文件:
这个控件在即将发布的新版本中集成,如果项目中有需要,可以联系作者购买。
开发的过程中遇到一个问题,就是必须在Release下才能正常打印!
ChinaCock打印控件介绍-TCCFujitsuPrinter实现蓝牙针式打印
标签:str 介绍 star named printf scheduler int enabled 设备
原文地址:https://www.cnblogs.com/kinglandsoft/p/11167832.html