更新记录

V1.0(2024-10-17) 下载此版本

V1.0最小可用版本:提供一套完整的蓝牙设备搜索、连接及打印数据发送功能,及适配vue3与uniapp的编解码器,TSPL指令,ESC指令的插件。 蓝牙设备搜索与连接:实现自动重连机制,优化搜索和连接流程。 数据发送与打印指令集:支持ESC和TSPL指令集,兼容多种蓝牙打印机,扩展打印方法,包括自定义条码和二维码设置,以及打印位置和对齐控制。 编码与解码功能:含编码字符集,支持多语言打印需求,提供Vue 3和uni-app优化的编码器和解码器。 打印功能:支持多种打印设置方法,如左边距、打印区域宽度、蜂鸣器声音和位图打印。 API完善与文档更新:jpPrinter类方法详细注释和文档更新,使用export default导出,便于导入和使用。 兼容性提升:针对Vue 3和uni-app框架进行适配,确保稳定运行。


平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
app-vue ×
钉钉小程序 快手小程序 飞书小程序 京东小程序
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

蓝牙打印连接与数据发送常见问题:

1.数据格式和编码问题:

  • 确保您发送的数据格式符合打印机所支持的指令集。对于ESC/POS打印机,您需要按照ESC/POS指令集来格式化您的数据。TSC打印机则使用TSC的指令集。
  • 检查您的数据编码是否为GB18030,这是中国国家标准的编码格式,如果您的打印机设置为这个编码,发送的数据也需要是这个编码,否则可能会导致打印乱码或不打印。

2.蓝牙服务和特征值的选择:

  • 在蓝牙通信中,每个设备都会广播自己的服务(Service),每个服务下会有多个特征值(Characteristic)。对于打印任务,您需要找到正确的服务和特征值来进行数据传输。
  • 特征值的属性(properties)会告诉您这个特征值支持哪些操作,比如读(read)、写(write)等。如果属性中包含写权限(write),那么您可以通过这个特征值向打印机发送数据。
  • 如果有多个特征值都支持写操作,通常任选其一即可。但有时不同的特征值可能对应打印机的不同功能或模式,所以如果默认的特征值不工作,您可能需要尝试其他的。

3.不同手机操作系统的差异:

苹果手机(iOS)和安卓手机(Android)在蓝牙通信上确实存在一些差异。您提到的安卓手机对数据包大小有限制,这可能是因为不同的安卓设备或其蓝牙栈的实现方式不同。

如果您发现安卓设备无法一次性接收较大的数据包,您可以尝试将数据分包发送。确保每个数据包不超过20字节,这是一种常见的做法,可以提高兼容性。

针对上述问题,您可以采取以下步骤进行故障排除:

  1. 检查数据格式:确保您的数据格式和编码符合打印机的要求。
  2. 检查蓝牙特征值:确认您选择的特征值是否支持写操作,并且适用于您的打印机型号。
  3. 分包发送数据:如果您使用的是安卓设备,尝试将数据分成小包(例如每包20字节)发送,看是否能解决问题。
  4. 查看文档和示例:参考打印机的用户手册或开发文档,以及您所使用的蓝牙库或API的文档,了解如何正确使用它们。
  5. 测试和调试:使用一些蓝牙调试工具来监控蓝牙通信,这可以帮助您确定数据是否正确发送到了打印机。

使用案例:

* /pages/index/index.vue:提供一套完整的蓝牙设备搜索、连接及数据发送功能,主要用于实现蓝牙标签打印和票据打印操作。

组件结构

一个按钮用于触发蓝牙搜索。 一个列表显示找到的蓝牙设备,每个设备旁边有一个连接按钮。 一个按钮用于发送标签打印命令。 一个多行文本输入框用于输入票据信息。

脚本逻辑

使用ref和reactive来创建响应式数据。 onMounted和onUnmounted生命周期钩子用于初始化和清理。 searchBle函数用于打开蓝牙适配器并开始搜索设备。 onDevice函数设置一个监听器来处理找到的蓝牙设备。 stopFindBule函数停止蓝牙设备搜索。 onConn函数用于连接选中的蓝牙设备。 getBLEServices函数用于获取连接设备的蓝牙服务。 senBlData函数用于将数据发送到蓝牙设备的特征值。 senBleLabel函数构建并发送打印标签的命令。 // senBleLabel2函数(被注释掉)用于构建并发送票据打印的命令。

核心功能 :

  1. 蓝牙设备搜索:通过点击按钮,用户可以搜索周围的蓝牙设备,并在界面上显示设备名称和ID。
  2. 设备连接:用户可选择一个蓝牙设备进行连接,连接成功后,组件将获取设备的服务和特征值。
  3. 数据发送:连接成功后,用户可通过按钮触发标签打印或票据打印命令,组件会将打印数据发送到蓝牙打印机。

插件文件:

/componets/plugin/encoding-indexes.js:编码字符集

/componets/plugin/encoding.js:自定义的编码器和解码器(支持Vue 3和uni-app框架)

/componets/plugin/tspl.js:类似esc.js,可根据指令集编码文件,自行新增适配其他指令集的蓝牙打印机交互类!!!

/componets/plugin/esc.js: 与蓝牙打印机交互的ESC指令集的JavaScript类。包含多种方法来初始化打印机、设置打印内容、条码、二维码、打印位置、对齐方式以及其他打印参数。

类属性:

​ name: 打印机模式的名称,默认为“账单模式”。 ​ data: 存储发送给打印机的指令和数据。 ​ bar: 包含支持的条码类型数组。

主要方法:(可根据指令集编码文件自行新增)

​ init(): 初始化打印机。 ​ setText(content): 设置文本内容,使用 gb18030 编码。 ​ 条码相关方法: 设置条码的宽度、高度和内容。 ​ 二维码相关方法: 设置二维码的大小、纠错等级、内容和打印二维码。 ​ 打印位置和对齐方法: 设置打印位置和对齐方式。 ​ 其他打印设置: 设置左边距、打印区域宽度、蜂鸣器声音和位图打印。 ​ 打印操作: 执行打印、换行和走纸操作。 ​ getData(): 获取存储的打印数据。 ​ Query(): 查询打印机的实时状态。

导出:

​ 使用 export default 将 jpPrinter 类导出,以便在其他文件中使用。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

蓝牙权限:用于搜索、连接和与蓝牙设备通信

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问