【问题标题】:Print Label by using Bluetooth Label printer and Delphi 11 FMX使用蓝牙标签打印机和 Delphi 11 FMX 打印标签
【发布时间】:2022-12-17 16:53:35
【问题描述】:

我们正在开发一个由 Delphi 11 FMX 编写的移动应用程序,我们需要从中打印小标签到蓝牙标签打印机。

我们在android手机上测试,蓝牙连接成功,但是当我们尝试向打印机发送打印命令(ESC/POS)时,我们可以看到打印机响应(哔哔声,小屏幕上显示'waiting for data'屏幕),然后打印机将标签移动到下一个标签,但它不打印任何内容,只是空白。

一开始我们以为打印机有问题,然后我们从 Google play 下载了 2 个不同的标签打印应用程序,都可以正常工作,并成功打印文本。

这是源代码:

const
 UUID = '{00001101-0000-1000-8000-00805F9B34FB}';
Var
 FSocket: TBluetoothSocket ;

//connect Bluetooth printer 
procedure TForm1.Button2Click(Sender: TObject);  
function ConnectPrinter(pDeviceName: String): boolean;
var
   lDevice: TBluetoothDevice;
begin
  Result := False;
  lDevice := GetDeviceByName(pDeviceName);
  if lDevice <> nil then
    begin
       FSocket := lDevice.CreateClientSocket(StringToGUID(UUID), False);
    if FSocket <> nil then
   begin
      FSocket.Connect;
     Result := FSocket.Connected
   end;
end;
end;

begin
if  (printerName.Text <> '') then
begin
 if ConnectPrinter(printerName.Text) then
begin
  Label1.Text := 'Connected';
end
else
begin
  Label1.Text := 'Disconnected';
end;
end
else
begin
 ShowMessage('No device name provided');
end;
end;

// print text to Bluetooth Printer
procedure TForm1.Button3Click(Sender: TObject);
begin
if (FSocket <> nil) and (FSocket.Connected) then
begin 
FSocket.SendData(TEncoding.UTF8.GetBytes(chr(27) + chr(64)));  //initial printer
//the printer responds with beep, and 'waiting for data' shown on the small screen`
FSocket.SendData(TEncoding.UTF8.GetBytes(chr(27) + chr(97) + chr(0)));     //Left aligned
FSocket.SendData(TEncoding.UTF8.GetBytes(chr(27) + chr(33) + chr(0)));      //Character parameter set
FSocket.SendData(TEncoding.UTF8.GetBytes(chr(29) + chr(33) + chr(0)));      //default font size 
FSocket.SendData(TEncoding.UTF8.GetBytes('Print via Bluetooth ')); // send text to printer
FSocket.SendData(TEncoding.UTF8.GetBytes(chr(27) + chr(100) + chr(1))); // Print and feed paper 1 line
// the printer feeds the paper by 1 line, but nothing printed on the label
end;
end;

【问题讨论】:

    标签: bluetooth firemonkey thermal-printer delphi-11-alexandria


    【解决方案1】:

    你设法解决了这个问题吗? 我需要从 Android 打印到收据打印机 通过 Blueooth,我不能再进一步了。 您是如何声明“GetDeviceByName”或它来自哪个单位的?我有德尔福 10.4

    感谢您的回答,也通过电子邮件:juergen@bukoitz.de

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 2023-03-30
      • 2011-07-05
      • 1970-01-01
      相关资源
      最近更新 更多