You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi 11 FMX安卓蓝牙标签打印机打印空白问题求助

问题描述

我们正在开发基于Delphi 11 FMX的移动端应用,需通过蓝牙标签打印机打印小标签。在安卓设备测试时,蓝牙连接成功,但发送ESC/POS打印指令后,打印机虽有响应(蜂鸣、屏幕显示“等待数据”),却仅走纸无内容打印。两款谷歌商店的标签打印应用均可正常打印文本。

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

// 连接蓝牙打印机
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
      Label1.Text := 'Connected'
    else
      Label1.Text := 'Disconnected';
  end
  else
    ShowMessage('No device name provided');
end;

// 向蓝牙打印机发送打印文本
procedure TForm1.Button3Click(Sender: TObject);
begin
  if (FSocket <> nil) and (FSocket.Connected) then
  begin 
    FSocket.SendData(TEncoding.UTF8.GetBytes(chr(27) + chr(64)));  // 初始化打印机
    // 打印机有蜂鸣响应,小屏幕显示“等待数据”
    FSocket.SendData(TEncoding.UTF8.GetBytes(chr(27) + chr(97) + chr(0)));     // 左对齐
    FSocket.SendData(TEncoding.UTF8.GetBytes(chr(27) + chr(33) + chr(0)));      // 设置字符参数
    FSocket.SendData(TEncoding.UTF8.GetBytes(chr(29) + chr(33) + chr(0)));      // 默认字体大小 
    FSocket.SendData(TEncoding.UTF8.GetBytes('Print via Bluetooth ')); // 发送文本到打印机
    FSocket.SendData(TEncoding.UTF8.GetBytes(chr(27) + chr(100) + chr(1))); // 打印并走纸1行
    // 打印机走纸1行,但标签上无内容打印
  end;
end;
打印机状态截图

打印机屏幕显示“等待数据”

内容的提问来源于stack exchange,提问作者Kevin Xu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 18:30:58