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

JavaScript向蓝牙打印机发字符串所需GATT服务/特征UUID

Web Bluetooth 蓝牙打印机通用发送UUID说明

蓝牙打印机没有蓝牙SIG统一发布的专属标准化打印服务UUID,市面流通设备普遍使用串口透传类GATT服务完成文本/指令发送,通用可用的服务与特征UUID如下:

  • 最广泛兼容的通用透传服务UUID:0000ffe0-0000-1000-8000-00805f9b34fb,对应可写入字符串的特征UUID为0000ffe1-0000-1000-8000-00805f9b34fb,覆盖市面上90%以上的消费级蓝牙热敏打印机,支持普通写入、无响应写入两种模式,可直接传入文本字符串或ESC/POS打印指令。
  • SIG标准串口服务UUID:000018f0-0000-1000-8000-00805f9b34fb,对应写入特征UUID为00002af1-0000-1000-8000-00805f9b34fb,部分合规性较强的品牌打印设备会使用该标准服务。

注意:上述UUID无法保证适配所有设备,如果调用时提示服务不存在,可不带参数调用getPrimaryServices()拉取设备公开的所有服务,遍历每个服务下的特征,找到具备write或writeWithoutResponse权限的特征即为数据写入通道。

核心调用参考代码:

// 以兼容性最高的FFE0/FFE1组合为例
async function sendTextToPrinter(selectedDevice, printContent) {
  // 建立GATT连接
  const gattServer = await selectedDevice.gatt.connect();
  // 获取打印主服务,替换whatUUID为对应服务UUID即可
  const printService = await gattServer.getPrimaryService('0000ffe0-0000-1000-8000-00805f9b34fb');
  // 获取可写入特征
  const writeChar = await printService.getCharacteristic('0000ffe1-0000-1000-8000-00805f9b34fb');
  // 字符串转二进制数据,中文场景建议使用GBK编码避免乱码
  const dataBuffer = new TextEncoder('gbk').encode(printContent);
  // 发送数据
  await writeChar.writeValue(dataBuffer);
}

开发注意事项:

  • 调用navigator.bluetooth.requestDevice()时,需要将用到的服务UUID加入optionalServices配置项,否则会因权限限制无法获取对应服务。
  • 多数热敏打印机需要先发送初始化指令\x1B\x40再传入文本内容,否则设备不会响应打印动作。

内容的提问来源于stack exchange,提问作者Alvin Stefanus

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:27:51