无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網 會員登陸 & 注冊

微信小程序連接藍牙打印機示例

2022-11-11 18:40 作者:bili_52639594022  | 我要投稿

小程序連接藍牙打印機打印文本與二維碼等示例在 github 上都能找到一些,唯獨打印圖片這個案例幾乎沒有。希望能幫助到有打印圖片需求的小伙伴。


測試打印機:凱盛諾 PTP-II-UBC 58mm 便攜熱敏打印機

測試環(huán)境有:Android微信 , IOS微信;其中 Android 和 IOS 在打印文本與二維碼速率相對一致,但 IOS 打印圖片幾乎慢到無法打印的情況(聽說藍牙打印機在 IOS 中受限制,需要與 IOS 合作授權,在斑馬品牌的一款打印機用 IOS 就能打印出來。即使是 Android ,小程序打印圖片比打印文本會慢許多,并不是打印機的問題,而是小程序只能使用低功率藍牙,受限在一次發(fā)送 20 個字節(jié)的數(shù)據(jù),需要分段遞歸發(fā)送,圖片數(shù)據(jù)可以達到幾萬、幾十萬個字節(jié)。)

打印機指令類型:ESC/POS 指令集 (打印機產家都會提供對應的指令文檔,此 demo 中使用十進制的數(shù)據(jù)格式的指令,十六進制的指令或者更多指令的使用方式可以參考另一個示例小程序藍牙打印 miniprogram-bluetoothprinter)

示例功能

連接藍牙打印機

打印文本 (打印中文出現(xiàn)亂碼,因為打印機默認的編碼是 GB2312,需要將 UTF-8 轉 GB2312,這里用的輕小的GBK 庫,也可以使用text-encoding)

打印二維碼(使用指令打印內置二維碼樣式,或者用圖片方式打印定制二維碼)

打印任意圖片(此示例的重點, canvas 繪制圖片,wx.canvasGetImageData()取得 Uint8ClampedArray后再轉成位圖數(shù)據(jù),使用圖片水平取模數(shù)據(jù)打印指令打印位圖數(shù)據(jù))

效果圖

? ?

Demo 中連接打印機的流程

關于找藍牙設備中能用的 Characteristic,這里貼出對應的代碼,關注注釋部分

圖片來源

在 Demo 中手機選任意一張圖片用 canvas 繪制,wx.canvasGetImageData()取得 Uint8ClampedArray 類型的圖像像素點數(shù)據(jù)。


位圖數(shù)據(jù)

需要把 Uint8ClampedArray 類型的數(shù)據(jù)轉成打印機識別的點陣位圖數(shù)據(jù)(也可以讓后臺實現(xiàn)圖片轉位圖數(shù)據(jù),參考熱敏打印機編程 ESC/POS 指令)。


不同打印機廠家的指令集可能不同,但打印圖片的位圖數(shù)據(jù)是一樣的。

貼出遞歸發(fā)送二進制數(shù)據(jù)到藍牙的代碼

貼出發(fā)送逐行圖片數(shù)據(jù)的代碼

主要參考

  • 微信低功率藍牙

  • 小程序藍牙打印 miniprogram-bluetoothprinter

  • 熱敏打印機編程 ESC/POS 指令


微信小程序連接藍牙打印機示例的評論 (共 條)

分享到微博請遵守國家法律
凤翔县| 吴忠市| 铜山县| 廊坊市| 伊金霍洛旗| 金门县| 东平县| 杭州市| 抚远县| 余干县| 常熟市| 营口市| 郁南县| 科尔| 兴仁县| 大埔县| 太白县| 白城市| 台湾省| 彭山县| 胶州市| 翁牛特旗| 九龙城区| 仪陇县| 平原县| 剑河县| 弋阳县| 电白县| 思南县| 西乡县| 桓台县| 铜梁县| 榆树市| 怀化市| 尚义县| 龙川县| 沿河| 莒南县| 介休市| 瑞昌市| 绿春县|