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
相关产品推荐
相关产品推荐

