Skip to content

一些框架

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.startBluetoothDevicesDiscoverywx.onBluetoothDevi*ceFound
  • 选中一个蓝牙,使用deviceId链接,wx.createBLEConnection
  • 获取选中蓝牙设备的服务wx.getBLEDeviceServices,返回服务列表,每个服务有serviceId
  • 通过deviceId和serviceId获取服务的所有特征值,wx.getBLEDeviceCharacteristics
  • 每个特征值有对应的标记propertiesuuid,标记有readwritenotifyindicate,其值为布尔值表示是否支持对应功能
  • 可以找到某个特征值可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

如何打印文字和二维码混排的打印呢,打印机只能从上到下一行一行打印,如果文字在左边,二维码在右边,貌似只有全部转换成图片然后打印