小程序app技術(小程序 技術)
互聯(lián)網(wǎng)外包公司在提供企業(yè)定制開發(fā)小程序過程,由于業(yè)務需要,需要在應用中集成數(shù)據(jù)打印功能,由于項目是基于uni-app開發(fā)并發(fā)布成微信小程序。微信小程序和uni-app 的連接藍牙API接口規(guī)范都是一樣的,只不過微信小程序是掛載到wx 對象上,而uni-app則是掛載在了uni 對象上。使用uni-app開發(fā)的技術工程師可以直接使用微信的接口(前提是后期將項目發(fā)布到微信小程序平臺)。
點擊輸入圖片描述(最多30字)
在介紹微信小程序藍牙連接打印之前,常州開發(fā)微信小程序公司https://www.dianzan51.com點個贊科技,簡單梳理一下連接藍牙打印進行打印操作的流程圖。后續(xù)的開發(fā)將圍繞流程圖展開。
1 、初始化藍牙模塊。
打開藍牙適配器
其他藍牙相關 API 必須在 `uni.openBluetoothAdapter`[4] 調(diào)用之后使用。否則 API 會返回錯誤(errCode=10000)。
展開全文
uni.openBluetoothAdapter({
success(res) {
console.log(res)
2 、獲取藍牙適配器狀態(tài)
理論上這步可以省略,不過為了確保程序不錯意外,還是按部就班,在搜索藍牙之前確保本機藍牙狀態(tài)正確。
3、搜索藍牙設備
在「步驟3.2的成功回調(diào)函數(shù)」里調(diào)用uni.startBluetoothDevicesDiscovery 接口搜索附近可用的藍牙設備。
uni.startBluetoothDevicesDiscovery({
success(res) {
console.log(res)
開始搜尋附近的藍牙外圍設備。(此操作比較耗費系統(tǒng)資源,請在搜索并連接到設備后調(diào)用 「**`uni.stopBluetoothDevicesDiscovery`**[5]」 方法停止搜索。)
4、 列出所有發(fā)現(xiàn)的藍牙設備列表
在「步驟3.3 的成功回調(diào)」里面使用uni.getBluetoothDevices 接口獲取藍牙模塊生效期間所有已發(fā)現(xiàn)的藍牙設備。包括已經(jīng)和本機處于連接狀態(tài)的設備。由于藍牙搜索需要一定過程,因此可以設置一定的延遲時間再執(zhí)行uni.getBluetoothDevices 接口。
uni.startBluetoothDevicesDiscovery({
success: function(res) {
console.log(res);
setTimeout(function() {
uni.getBluetoothDevices({
success: function(res) {
var devices = [];
var num = 0;
for (var i = 0; i res.devices.length; ++i) {
if (res.devices[i].name != "未知設備") {
devices[num] = res.devices[i];
num++;
// 將發(fā)現(xiàn)的藍牙設備存儲起來,以下代碼僅供參考
that.setData({
list: devices,
isScanning: false
uni.hideLoading();
uni.stopPullDownRefresh();
uni.stopBluetoothDevicesDiscovery({
success: function(res) {
console.log("停止搜索藍牙");
}, 5000);
5、連接目標設備
連接低功耗藍牙設備。若APP在之前已有搜索過某個藍牙設備,并成功建立連接,可直接傳入之前搜索獲取的 deviceId 直接嘗試連接該設備,無需進行搜索操作。
注意這里使用的是低功耗藍牙設備接口
uni.createBLEConnection({
deviceId: e.currentTarget.dataset.title, // 設備id
success: function(res) {
console.log(res);
app.globalData.BLEInformation.deviceId = e.currentTarget.dataset.title;
that.getSeviceId();
},
fail: function(e) {
uni.showModal({
title: "提示",
content: "連接失敗",
showCancel: false
console.log(e);
uni.hideLoading();
},
complete: function(e) {
console.log(e);
在連接目標設備過程需要注意如下幾點:
1)、請保證盡量成對的調(diào)用 createBLEConnection 和 closeBLEConnection 接口。安卓如果多次調(diào)用 createBLEConnection 創(chuàng)建連接,有可能導致系統(tǒng)持有同一設備多個連接的實例,導致調(diào)用closeBLEConnection 的時候并不能真正的斷開與設備的連接。
2)、藍牙連接隨時可能斷開,建議監(jiān)聽 `uni.onBLEConnectionStateChange`[6] 回調(diào)事件,當藍牙設備斷開時按需執(zhí)行重連操作。
3)、若對未連接的設備或已斷開連接的設備調(diào)用數(shù)據(jù)讀寫操作的接口,會返回 10006 錯誤,建議進行重連操作。
6、操作打印機
操作打印機本質(zhì)上就是通過uni.writeBLECharacteristicValue(OBJECT)接口向藍牙設備寫指令。
這里需要注意的是不同的打印機可能指令集不同。不過就我目前了解的情況來看市面上的小型藍牙打印機主要分標簽打印機和票據(jù)打印機兩種。而這兩種打印機指令集又有所區(qū)別。
界面參考和打印效果
以下界面由常州開發(fā)微信小程序公司點個贊科技,技術工程師實現(xiàn)藍牙打印機店家提供的微信小程序源碼反編譯為uni-app項目而來。同時修復了源碼中會導致藍牙連接失敗的錯誤,僅測試,代碼可完整運行,可成功操作標簽打印機和票據(jù)打印機實現(xiàn)打印功能。
掃描二維碼推送至手機訪問。
版權聲明:本文由飛速云SEO網(wǎng)絡優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。