Appearance
一些框架
uni-app
Vue风格的语法,跨多端
taro
React风格的语法,跨多端
wepy
腾讯开发团队出品,参考
mpvue
貌似已经不维护了
一些技术难点
微信小程序蓝牙打印机
参考
https://github.com/lerpo/bluethooth/tree/491b9a1d6d7b7027ae90163db14d4c2ae1752ac5
https://www.jianshu.com/p/20419462e381
https://github.com/qihang666/BluetoothPrinter
https://juejin.cn/post/6844903928417681416
https://github.com/benioZhang/miniprogram-bluetoothprinter
http://www.lucklnk.com/godaddy/details/aid/590653954 这篇可以 ,掘金转载 https://juejin.cn/post/6844903928417681416
https://github.com/xiaowang1314/uniapp-plugin-collections/tree/master/template/BluPrint ,一个uni-app蓝牙打印demo
https://dayin.liuzijin.cn/ 这是一个云模板打印文档
打印指令
打印机指令,参考 https://blog.csdn.net/weixin_34355881/article/details/89543300
打印指令,又称打印控制命令。计算机通过打印控制语言,以软件命令的方法来控制打印机操作,解释执行打印数据,获得打印结果的
开发步骤
首先是连接蓝牙,步骤比较繁琐
- 开启适配器,
wx.openBluetoothAdapter
和 - 查找蓝牙设备列表,每个蓝牙有对应的deviceId,
wx.startBluetoothDevicesDiscovery
和wx.onBluetoothDevi*ceFound
- 选中一个蓝牙,使用deviceId链接,
wx.createBLEConnection
- 获取选中蓝牙设备的服务
wx.getBLEDeviceServices
,返回服务列表,每个服务有serviceId - 通过deviceId和serviceId获取服务的所有特征值,
wx.getBLEDeviceCharacteristics
- 每个特征值有对应的标记
properties
和uuid
,标记有read
、write
、notify
和indicate
,其值为布尔值表示是否支持对应功能 - 可以找到某个特征值可write标记的的uuid,然后通过deviceId、serviceId和 characteristicId,使用
wx.writeBLECharacteristicValue
向打印机传输数据
文字排版排版,使用printerJobs这个库 https://github.com/benioZhang/miniprogram-bluetoothprinter
二维码,打印图片,先将二维码绘制到canvas上,然后通过获取像素点信息,进行转换之后传输到打印机上打印,由于图片信息较多,100x100的图片获得的数组长度是 100*100*4
,而小程序低功耗蓝牙限制了一次只能传输20个字节的数据,因此耗时比较久,需要考虑优化
打印图片参考 https://blog.csdn.net/cfujiC/article/details/86013122
如何打印文字和二维码混排的打印呢,打印机只能从上到下一行一行打印,如果文字在左边,二维码在右边,貌似只有全部转换成图片然后打印