一级女人毛片人一女人-一级女性大黄生活片免费-一级女性全黄久久生活片-一级女性全黄生活片免费-国产美女在线一区二区三区-国产美女在线观看

歡迎光臨~深圳市山星盛電子科技有限公司-稱重產(chǎn)品官方展示網(wǎng)站
服務(wù)熱線 全國(guó)服務(wù)熱線:

0755-2979 1990

部門新聞

騰訊微信小程序電子稱 電子磅秤平臺(tái)桌面地面落地立桿臺(tái)秤 托盤案板式稱重衡器連WeChat的電子秤

山星盛電子科技是一家衡器硬件設(shè)備提供商,我們專業(yè)提供ERP管理系統(tǒng)PC,APP,APK,POS,PDA,安卓The android和蘋果apple手機(jī)IOS及android操作系統(tǒng),電腦端微軟Microsoft安裝版及文本直接傳送的電子秤,平臺(tái)秤,物聯(lián)網(wǎng)電子稱,藍(lán)牙無線電子秤,WIFI電子秤,手機(jī)軟件直連手機(jī)等稱重設(shè)備,買我們電子秤能提供騰訊微信小程序demo程序開發(fā)包,還能提供安卓和蘋果手機(jī)APP軟件電子秤連接的demo指導(dǎo)文件及開發(fā)包供您開發(fā)自己的軟件。

騰訊微信小程序<a href=/2.html target='_blank'>電子稱</a>


騰訊微信小程序電子稱

前情:在微信小程序中連接藍(lán)牙電子計(jì)重桌秤,(電子秤品牌:山星盛MOUNT STAR),直接通過藍(lán)牙獲取當(dāng)前稱重的重量數(shù)據(jù),然后顯示在界面上。
ps:記錄的時(shí)候,還在開發(fā)階段,得到了數(shù)據(jù),數(shù)據(jù)有會(huì)實(shí)時(shí)變化。

android軟件電子秤

??注意

  • 此次,只涉及讀取數(shù)據(jù),沒有寫入數(shù)據(jù),具體 API 查看小程序官方文檔

  • 確保手機(jī)藍(lán)牙已經(jīng)打開,并且可以搜索到該電子秤的藍(lán)牙設(shè)備,android 可以搜到,ios 搜不到

  • 微信小程序中搜索到的藍(lán)牙設(shè)備很多,deviceId 在 android 上顯示為藍(lán)牙設(shè)備主服務(wù)的 mac 地址,在 ios 上顯示為藍(lán)牙設(shè)備主服務(wù)的 uuid

  • 最終得到的結(jié)果是 ArrayBuffer 型數(shù)據(jù),需要先轉(zhuǎn)為16進(jìn)制字符串,再轉(zhuǎn)為10進(jìn)制數(shù)據(jù)

(1)初始化

初始化藍(lán)牙模塊 --- wx.openBluetoothAdapter

// 定義數(shù)據(jù)data: {
    devices: [],    // 搜索到的藍(lán)牙設(shè)備 deviceId 數(shù)組
    deviceId: '',    // 目標(biāo)藍(lán)牙設(shè)備 deviceId
    services: []    //  設(shè)備服務(wù)列表 serviceId 數(shù)組
    serviceId: '',
    characteristics: []   // 特征值列表
    characteristicId: ''  // 選擇某一個(gè)特征值 
    value: ''   // 16 進(jìn)制數(shù)據(jù)值}// 藍(lán)牙 API 調(diào)用步驟openBluetoothAdapter() {
    wx.openBluetoothAdapter({   // (1)
        success: res => {            console.log('openBluetoothAdapter初始化藍(lán)牙模塊成功:', res)             this.startBluetoothDevicesDiscovery()  // (2) 開始搜索
        },
        fail: err => {            console.log('openBluetoothAdapter初始化藍(lán)牙模塊失敗:', err)            if (err.errCode === 10001) {  // 當(dāng)前藍(lán)牙適配器不可用
                wx.onBluetoothAdapterStateChange( res => {                if (res.available) {                    this.startBluetoothDevicesDiscovery()
                }
              })
           }
        }
    })
}


(2)搜索藍(lán)牙設(shè)備

搜尋附近的藍(lán)牙外圍設(shè)備 --- wx.startBluetoothDevicesDiscovery

  • 入?yún)?services 作用要搜索的藍(lán)牙設(shè)備主 service 的 uuid 列表,某些藍(lán)牙設(shè)備會(huì)廣播自己的主 service 的 uuid,如果設(shè)置此參數(shù),則只搜索廣播包括對(duì)應(yīng) uuid 的主服務(wù)的藍(lán)牙設(shè)備,可以通過該參數(shù)過濾掉周邊不需要處理的其他藍(lán)牙設(shè)備

  • 入?yún)?allowDuplicatesKey 作用是否允許重復(fù)上報(bào)同一設(shè)備,如果允許重復(fù)上報(bào),則 wx.onBlueToothDeviceFound 方法會(huì)多次上報(bào)同一設(shè)備,但是 RSSI 值會(huì)有不同,默認(rèn)為 false
    eg: services: ['FEE7'] 主服務(wù)的 UUID 是 FEE7,傳入這個(gè)參數(shù),只搜索主服務(wù) UUID 為 FEE7 的設(shè)備,該設(shè)備是微信硬件平臺(tái)的藍(lán)牙智能燈

?? 此操作比較耗費(fèi)系統(tǒng)資源,需要在搜索并連接到設(shè)備后調(diào)用 wx.stopBluetoothDevicesDiscovery 方法停止搜索

startBluetoothDevicesDiscovery() {
    wx.startBluetoothDevicesDiscovery({
        success: res => {            console.log('startBluetoothDevicesDiscovery開始搜索外圍設(shè)備成功:', res)            this.getBluetoothDevices()  // (3) 獲取藍(lán)牙列表
         },
        fail: err => {            console.log('startBluetoothDevicesDiscovery搜索外圍設(shè)備失敗:', err)
        }
    })
}


(3)獲取藍(lán)牙設(shè)備

獲取在藍(lán)牙模塊生效期間所有已發(fā)現(xiàn)的藍(lán)牙設(shè)備,包括已經(jīng)連接成功的藍(lán)牙設(shè)備 --- wx.getBluetoothDevices

getBluetoothDevices() {
    wx.getBluetoothDevices({
        success: res => {            console.log('getBluetoothDevices獲取藍(lán)牙設(shè)備成功:', res)            this.setData({
                devices: res. devices  || []        // uuid 對(duì)應(yīng)的的已連接設(shè)備列表
            })            this.createBLEConnection();     // (4) 與目標(biāo)設(shè)備建立連接
        },
        fail: err => {            console.log('getBluetoothDevices獲取藍(lán)牙設(shè)備失敗:', err)
        }
    })
}


(4)建立連接

與目標(biāo)藍(lán)牙設(shè)備建立連接,需要是低功耗藍(lán)牙設(shè)備 --- wx.createBLEConnection

?? 如果微信小程序此前搜索過某個(gè)藍(lán)牙設(shè)備,并成功建立連接,可直接傳入之前搜索獲取的 deviceId 直接嘗試連接該設(shè)備,不用重新搜索

createBLEConnection() {    // 如果是第一次建立連接,可以通過名稱匹配,獲取相應(yīng)設(shè)備的 deviceId
    let devices = this.data.devices;
    devices.forEach(item => {        if(item.name == 'kunHong') {            this.setData({
                deviceId: item.deviceId
            })
        }
    })    // 建立連接
    wx.createBLEConnection({
        deviceId: this.data.deviceId,
        success: res => {            console.log('createBLEConnection與目標(biāo)藍(lán)牙連接成功:', res)            this.getBLEDeviceServices()    // (5)獲取服務(wù)
        },
        fail: err => {            console.log('createBLEConnection與目標(biāo)藍(lán)牙連接失敗:', err)
        }
    })
}


(5)獲取藍(lán)牙設(shè)備服務(wù)

獲取藍(lán)牙設(shè)備所有主服務(wù)的 uuid --- wx.getBLEDeviceServices

  • 入?yún)?deviceId 為 wx.getBluetoothDevices 中獲取的目標(biāo)藍(lán)牙設(shè)備的 deviceId

??開發(fā)過程中,主服務(wù) serviceId 和 主服務(wù)的特征值 characteristics 都是選取的實(shí)際操作過程中,得到的類似于該目標(biāo)藍(lán)牙設(shè)備的 id,但是小程序官方文檔的 demo,遍歷了所有的列表(serviceId 和 characteristics),需要區(qū)分一下

getBLEDeviceServices() {
    wx.getBLEDeviceServices({
        deviceId: this.data.deviceId,
        success: res => {            console.log('getBLEDeviceServices獲取藍(lán)牙設(shè)備服務(wù)', res)            // getBluetoothDevices 獲取的有 deviceId 和 advertisServiceUUIDs,可以在這里獲取的服務(wù)列表中選擇一個(gè)一樣的作為后續(xù) API 請(qǐng)求的服務(wù)id,這個(gè) id 需要滿足是否可讀
            this.setData({
                 services: res.services,
                 serviceId: res.services[0].uuid    // 假設(shè)是第一個(gè)
            })            this.getBLEDeviceCharacteristics()    // (6) 獲取特征值

            // 官方 demo
            for(var i = 0; i < res.services.length; i++) {                // 該服務(wù)是否為主服務(wù)
                if(res.services[i].isPrimary) {                    this.getBLEDeviceCharacteristics(res.services[i].uuid)
                }
            }
        },
        fail: err => {            console.log('getBLEDeviceServices獲取藍(lán)牙設(shè)備服務(wù)失敗:', err)
        }
    })
}

(6)獲取特征值

獲取藍(lán)牙設(shè)備某個(gè)服務(wù)中所有特征值 --- wx.getBLEDeviceCharacteristics

  • 入?yún)?deviceId 為 wx.getBluetoothDevices 中獲取的目標(biāo)藍(lán)牙設(shè)備的 deviceId

  • 入?yún)?serviceId 為藍(lán)牙服務(wù) uuid ,通過 wx.getBLEDeviceServices 獲取

getBLEDeviceCharacteristics(serviceId) {
    wx.getBLEDeviceCharacteristics({
        deviceId: this.data.deviceId,
        serviceId: this.data.serviceId,
        success: res => {
            console.log('getBLEDeviceCharacteristics獲取藍(lán)牙服務(wù)特征值成功:', res)            this.setData({
                characteristics: res. characteristics,
                characteristics: res. characteristics[0].uuid
            })            this.notifyBLECharacteristicValueChange();     //  (7)啟用 notify 功能
            
            // 官方 demo
            for(var i = 0; i < res.characteristics.length; i++) {                // 是否可讀
                if(res.characteristics[i].read) {                    // 讀取數(shù)據(jù)
                    wx.readBLECharacteristicValue({
                        deviceId: this.data.deviceId,
                        serviceId: serviceid,
                        characteristicId: res.characteristicId[i].uuid
                    })
                },                if(res.characteristics[i].properties.notify || res.characteristics[i].properties.indicate) {                    // 啟用功能
                    wx.notifyBLECharacteristicValueChange({
                        deviceId,
                        serviceId,
                        characteristicId: item.uuid,
                        state: true,
                    })
                }
            }
        },
        fail: err => {
            console.log('getBLEDeviceCharacteristics獲取藍(lán)牙服務(wù)特征值失敗:', err)
        }
    })    this.onBLECharacteristicValueChange()   // (8)監(jiān)聽特征值變化
    this.readBLECharacteristicValue();      // (9)讀取數(shù)據(jù)}


(7)啟用 notify 功能

啟用低功耗藍(lán)牙特征值變化時(shí)的 notify 功能,訂閱特征值

??必須設(shè)備的特征值支持 notify 或者 indicate 才可以成功啟用

notifyBLECharacteristicValueChange() {
    wx.notifyBLECharacteristicValueChange({
        deviceId: this.data.deviceId,
        serviceId: this.data.serviceId,
        characteristicId: this.data. characteristicId,
        state: true   // 是否啟用 notify (四個(gè)字段全部必填)
    })
}


(8)監(jiān)聽特征值變化

監(jiān)聽低功耗藍(lán)牙設(shè)備特征值的變化事件 --- wx.onBLECharacteristicValueChange

??必須先啟用 notifyBLECharacteristicValueChange 接口才能接收到設(shè)備推送的 notification(通知)

// 先監(jiān)聽一下,保證第一時(shí)間獲取數(shù)據(jù)onBLECharacteristicValueChange() {    wx.onBLECharacteristicValueChange( characteristic => {        console.log('onBLECharacteristicValueChange從目標(biāo)藍(lán)牙設(shè)備監(jiān)聽到的數(shù)據(jù)值:', characteristic)        this.setData({            value: this.ab2hex(abcharacteristic.value)   // (10) 轉(zhuǎn)為 16 進(jìn)制
        })
    })
}


(9)讀取數(shù)據(jù)

讀取低功耗藍(lán)牙設(shè)備的特征值的二進(jìn)制數(shù)據(jù)值 --- wx.readBLECharacteristicValue

??必須目標(biāo)藍(lán)牙設(shè)備的特征值支持 read 才可以成功調(diào)用,并且單獨(dú)使用 readBLECharacteristicValue 并不能獲取到真正的特征值,只能返回獲取特征值的狀態(tài),即是否成功獲取到值,真正的值需要使用 wx.onBLECharacteristicValueChange() 執(zhí)行回調(diào)才可以在 wx.onBLECharacteristicValueChange() 這個(gè) API 中獲得讀取到的特征值

readBLECharacteristicValue() {
    wx.readBLECharacteristicValue({
        deviceId: this.data.deviceId,
        serviceId: this.data.serviceId,
        characteristicId: this.data.charecteristicId,
        success: res => {
            console.log('readBLECharacteristicValue讀取特征值成功:', res)
        },
        fail: err => {
            console.log('readBLECharacteristicValue讀取特征值失敗:', err)
        }
    })
}


(10)轉(zhuǎn)為 16 進(jìn)制

官方文檔中介紹了 ArrayBuffer 轉(zhuǎn)為 16 進(jìn)制的方法

<br>###(10)轉(zhuǎn)為 16 進(jìn)制####官方文檔中介紹了 ArrayBuffer 轉(zhuǎn)為 16 進(jìn)制的方法
// ArrayBuffer轉(zhuǎn)16進(jìn)制字符串示例
ab2hex(buffer) {
let hexArr = Array.prototype.map.call(
new Uint8Array(buffer),
function(bit) {
return ('00' + bit.toString(16)).slice(-2)
}
)
return hexArr.join('');
}
<br>###(11)值轉(zhuǎn)換####官方文檔介紹的方法似乎有點(diǎn)不適用哎,試下這個(gè)
ab2Str(arrayBuffer){
let unit8Arr = new Uint8Array(arrayBuffer);
let encodedString = String.fromCharCode.apply(null, unit8Arr);
return encodedString;
}

ACSII碼16進(jìn)制轉(zhuǎn)換代碼

如以上轉(zhuǎn)換都不能成功,請(qǐng)?jiān)囉靡韵罗D(zhuǎn)換代碼

ab2Weight(abValue) {

      let characteristicValue = this.ab2hex(abValue);

      let strValue = this.hexCharCodeToStr(characteristicValue)

      return strValue

      // let weightValue = 

    },

    ab2hex(buffer) {

      let hexArr = Array.prototype.map.call(

        new Uint8Array(buffer),

        function (bit) {

          return ('00' + bit.toString(16)).slice(-2)

        }

      )

      return hexArr.join('');

    },

    hexCharCodeToStr(hexCharCodeStr) {

      var trimedStr = hexCharCodeStr.trim();

      var rawStr =

        trimedStr.substr(0, 2).toLowerCase() === "0x" ?

        trimedStr.substr(2) :

        trimedStr;

      var len = rawStr.length;

      if (len % 2 !== 0) {

        alert("Illegal Format ASCII Code!");

        return "";

      }

      var curCharCode;

      var resultStr = [];

      for (var i = 0; i < len; i = i + 2) {

        curCharCode = parseInt(rawStr.substr(i, 2), 16); // ASCII Code Value

        resultStr.push(String.fromCharCode(curCharCode));

      }

      return resultStr.join("");

    }

來源:http://www.dzc360.com/new/WeChat-scale.html

我們專業(yè)提供電子秤硬件稱重設(shè)備:服務(wù)電話:0755-23035550  直線:18923420600/15307550221

用手機(jī)掃描二維碼關(guān)閉
二維碼
欧美激情一区二区三区视频高清 | 一级毛片看真人在线视频| 四虎久久精品国产| 国产一区二区精品在线观看| 国产伦精品一区二区三区无广告 | 国产不卡在线看| 免费一级片在线观看| 精品国产三级a∨在线观看| 你懂的国产精品| 99色视频| 国产成人精品一区二区视频| 日韩中文字幕一区| 精品国产一级毛片| 黄视频网站在线观看| 午夜在线亚洲男人午在线| 欧美国产日韩久久久| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 四虎论坛| 国产亚洲免费观看| 香蕉视频亚洲一级| 成人影院一区二区三区| 久久成人综合网| 欧美激情一区二区三区视频 | 青青久热| 久久99爰这里有精品国产| 成人免费网站久久久| 国产极品白嫩美女在线观看看| 国产不卡福利| 国产视频久久久| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产极品精频在线观看| 日本在线www| 91麻豆精品国产自产在线观看一区| 日本免费乱理伦片在线观看2018| 成人免费网站久久久| 精品国产三级a| 欧美另类videosbestsex视频| 一级毛片视频播放| 黄视频网站免费观看| 色综合久久天天综合观看| 亚久久伊人精品青青草原2020| 毛片的网站| 精品国产香蕉在线播出| 成人免费观看视频| 日韩在线观看免费| 久久精品大片| 亚洲精品影院一区二区| 美女免费精品视频在线观看| 999精品在线| 美女被草网站| 日日爽天天| 成人免费一级纶理片| 日日爽天天| 国产麻豆精品视频| 精品视频一区二区三区| 日韩专区第一页| 成人免费观看的视频黄页| 日本免费区| 日韩专区亚洲综合久久| 国产亚洲精品aaa大片| 超级乱淫伦动漫| 欧美1区2区3区| 夜夜操网| 午夜激情视频在线观看| 黄视频网站在线观看| 国产精品1024在线永久免费| 午夜在线影院| 久久99中文字幕| 国产视频一区二区在线播放| 成人免费观看男女羞羞视频| 欧美激情一区二区三区在线 | 国产一级生活片| 国产一区二区精品久久| 国产高清在线精品一区a| 天堂网中文字幕| 国产91丝袜高跟系列| 精品毛片视频| 一本高清在线| 国产福利免费视频| 免费的黄色小视频| 欧美日本免费| 高清一级片| 四虎论坛| 久久国产精品永久免费网站| 99色视频在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产麻豆精品高清在线播放| 色综合久久天天综合观看| 高清一级做a爱过程不卡视频| 四虎久久影院| 韩国毛片免费大片| 国产91素人搭讪系列天堂| 99色视频| 欧美大片一区| 精品视频在线观看免费| 99久久网站| 亚洲女人国产香蕉久久精品| 久久久久久久免费视频| 久久久久久久免费视频| 91麻豆高清国产在线播放| 99色视频在线观看| 成人在免费观看视频国产| 你懂的国产精品| 中文字幕一区二区三区 精品| 99色视频在线观看| 97视频免费在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 中文字幕97| 二级特黄绝大片免费视频大片| 色综合久久天天综线观看| 精品在线免费播放| 91麻豆精品国产片在线观看| 日韩男人天堂| 精品国产香蕉伊思人在线又爽又黄| 国产伦精品一区二区三区在线观看| 精品视频免费观看| 美国一区二区三区| 欧美另类videosbestsex视频| 四虎影视久久| 亚洲 激情| 国产综合成人观看在线| 四虎久久精品国产| 国产精品1024在线永久免费| 国产亚洲精品aaa大片| 可以免费在线看黄的网站| 青青久久精品| 日本在线不卡视频| 久久国产影院| 欧美激情一区二区三区在线| 国产福利免费观看| 日韩欧美一及在线播放| 黄色福利| 精品视频在线观看免费| 国产高清视频免费观看| 日本免费看视频| 国产不卡高清在线观看视频 | 精品国产三级a| 一级女性大黄生活片免费| 国产不卡在线观看| 九九久久99综合一区二区| 国产一区二区精品久久| 高清一级片| 亚欧视频在线| 国产91精品系列在线观看| 免费的黄色小视频| 精品国产一区二区三区久久久狼| 久久精品免视看国产明星| 成人免费观看男女羞羞视频| 韩国毛片| 日本免费乱人伦在线观看| 国产麻豆精品高清在线播放| 国产不卡高清在线观看视频 | 日韩在线观看免费| 精品国产亚洲一区二区三区| 亚洲精品久久久中文字| 精品视频在线看 | 亚洲天堂免费| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 99久久网站| 99久久精品国产国产毛片| 久草免费在线观看| 九九免费精品视频| 亚久久伊人精品青青草原2020| 国产a视频| 亚洲第一色在线| 精品毛片视频| 欧美爱爱网| 四虎久久影院| 日韩男人天堂| 欧美大片毛片aaa免费看| 国产不卡在线观看| 成人高清视频免费观看| 亚洲 国产精品 日韩| 国产精品自拍在线观看| 尤物视频网站在线| 可以免费看污视频的网站| 一级女性全黄生活片免费| 日韩av片免费播放| 999久久狠狠免费精品| 韩国三级视频网站| 黄色短视频网站| 日本特黄特色aaa大片免费| 成人a级高清视频在线观看| 午夜欧美成人久久久久久| 日韩一级黄色| 国产a毛片| 可以免费看毛片的网站| 国产视频一区二区在线观看| 成人免费观看的视频黄页| 国产伦精品一区二区三区无广告 | 免费的黄视频| 精品视频在线观看一区二区三区| 国产视频一区二区在线播放| 亚洲第一色在线| 韩国三级视频网站| 天天做人人爱夜夜爽2020毛片| 91麻豆精品国产综合久久久| 国产一区二区精品| 麻豆系列 在线视频| 午夜家庭影院|