九九久久国产精品大片-欧美人成人亚洲专区中文字幕-久在草影院-国产成人a在一区线观看高清-影音先锋亚洲资源-影音先锋天堂网

歡迎光臨~深圳市山星盛電子科技有限公司-稱重產品官方展示網站
服務熱線 全國服務熱線:

0755-2979 1990

微信小程序便攜手提電子秤 藍牙無線低功率電子稱

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

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

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


騰訊微信小程序電子稱

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

android軟件電子秤

??注意

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

  • 確保手機藍牙已經打開,并且可以搜索到該電子秤的藍牙設備,android 可以搜到,ios 搜不到

  • 微信小程序中搜索到的藍牙設備很多,deviceId 在 android 上顯示為藍牙設備主服務的 mac 地址,在 ios 上顯示為藍牙設備主服務的 uuid

  • 最終得到的結果是 ArrayBuffer 型數據,需要先轉為16進制字符串,再轉為10進制數據

(1)初始化

初始化藍牙模塊 --- wx.openBluetoothAdapter

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


(2)搜索藍牙設備

搜尋附近的藍牙外圍設備 --- wx.startBluetoothDevicesDiscovery

  • 入參 services 作用要搜索的藍牙設備主 service 的 uuid 列表,某些藍牙設備會廣播自己的主 service 的 uuid,如果設置此參數,則只搜索廣播包括對應 uuid 的主服務的藍牙設備,可以通過該參數過濾掉周邊不需要處理的其他藍牙設備

  • 入參 allowDuplicatesKey 作用是否允許重復上報同一設備,如果允許重復上報,則 wx.onBlueToothDeviceFound 方法會多次上報同一設備,但是 RSSI 值會有不同,默認為 false
    eg: services: ['FEE7'] 主服務的 UUID 是 FEE7,傳入這個參數,只搜索主服務 UUID 為 FEE7 的設備,該設備是微信硬件平臺的藍牙智能燈

?? 此操作比較耗費系統資源,需要在搜索并連接到設備后調用 wx.stopBluetoothDevicesDiscovery 方法停止搜索

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


(3)獲取藍牙設備

獲取在藍牙模塊生效期間所有已發現的藍牙設備,包括已經連接成功的藍牙設備 --- wx.getBluetoothDevices

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


(4)建立連接

與目標藍牙設備建立連接,需要是低功耗藍牙設備 --- wx.createBLEConnection

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

createBLEConnection() {    // 如果是第一次建立連接,可以通過名稱匹配,獲取相應設備的 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與目標藍牙連接成功:', res)            this.getBLEDeviceServices()    // (5)獲取服務
        },
        fail: err => {            console.log('createBLEConnection與目標藍牙連接失敗:', err)
        }
    })
}


(5)獲取藍牙設備服務

獲取藍牙設備所有主服務的 uuid --- wx.getBLEDeviceServices

  • 入參 deviceId 為 wx.getBluetoothDevices 中獲取的目標藍牙設備的 deviceId

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

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

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

(6)獲取特征值

獲取藍牙設備某個服務中所有特征值 --- wx.getBLEDeviceCharacteristics

  • 入參 deviceId 為 wx.getBluetoothDevices 中獲取的目標藍牙設備的 deviceId

  • 入參 serviceId 為藍牙服務 uuid ,通過 wx.getBLEDeviceServices 獲取

getBLEDeviceCharacteristics(serviceId) {
    wx.getBLEDeviceCharacteristics({
        deviceId: this.data.deviceId,
        serviceId: this.data.serviceId,
        success: res => {
            console.log('getBLEDeviceCharacteristics獲取藍牙服務特征值成功:', 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) {                    // 讀取數據
                    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獲取藍牙服務特征值失敗:', err)
        }
    })    this.onBLECharacteristicValueChange()   // (8)監聽特征值變化
    this.readBLECharacteristicValue();      // (9)讀取數據}


(7)啟用 notify 功能

啟用低功耗藍牙特征值變化時的 notify 功能,訂閱特征值

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

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


(8)監聽特征值變化

監聽低功耗藍牙設備特征值的變化事件 --- wx.onBLECharacteristicValueChange

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

// 先監聽一下,保證第一時間獲取數據onBLECharacteristicValueChange() {    wx.onBLECharacteristicValueChange( characteristic => {        console.log('onBLECharacteristicValueChange從目標藍牙設備監聽到的數據值:', characteristic)        this.setData({            value: this.ab2hex(abcharacteristic.value)   // (10) 轉為 16 進制
        })
    })
}


(9)讀取數據

讀取低功耗藍牙設備的特征值的二進制數據值 --- wx.readBLECharacteristicValue

??必須目標藍牙設備的特征值支持 read 才可以成功調用,并且單獨使用 readBLECharacteristicValue 并不能獲取到真正的特征值,只能返回獲取特征值的狀態,即是否成功獲取到值,真正的值需要使用 wx.onBLECharacteristicValueChange() 執行回調才可以在 wx.onBLECharacteristicValueChange() 這個 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)轉為 16 進制

官方文檔中介紹了 ArrayBuffer 轉為 16 進制的方法

<br>###(10)轉為 16 進制####官方文檔中介紹了 ArrayBuffer 轉為 16 進制的方法
// ArrayBuffer轉16進制字符串示例
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)值轉換####官方文檔介紹的方法似乎有點不適用哎,試下這個
ab2Str(arrayBuffer){
let unit8Arr = new Uint8Array(arrayBuffer);
let encodedString = String.fromCharCode.apply(null, unit8Arr);
return encodedString;
}

ACSII碼16進制轉換代碼

如以上轉換都不能成功,請試用以下轉換代碼

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("");

    }

1594356917780425.jpg1594356845299360.jpg

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

我們專業提供電子秤硬件稱重設備:服務電話:0755-23035550  直線:18923420600/15307550221


在線詢價

導航欄目

聯系我們

聯系人:黃金

手 機:153 0755 0221

郵 箱:jane@dzc.hk

公 司:深圳市山星盛電子科技有限公司-稱重產品官方展示網站

地 址:廣東省深圳市寶安鳳塘大道25號(山星盛電子秤)

用手機掃描二維碼關閉
二維碼
性色欲情侣网站WWW| 性色生活片在线观看| 国产V亚洲V天堂无码久久久| 国产品无码一区二区三区在线| 亚洲AV成人噜噜无码网站| 精品久久久久久无码中文字幕一区| 永久亚洲成A人片777777| 欧美乱大交XXXXX| 疯狂揉小泬到失禁高潮| 小猪视频APP永久观看破解| 精品无人区无码乱码毛片国产| 与上司出轨的人妻| 人妻无码一区二区三区| 番茄TODO社区免费看片| 一本大道无码人妻精品专区| 久久99精品久久久久久齐齐| 51CG吃瓜网热心朝阳群众| 三级日本高清完整版热播| 国产又黄又爽又刺激的免费网址| 艳妇乳肉豪妇荡乳在线观看| 青青青伊人色综合久久| 国产精品成人VA在线观看| 亚洲色成人网站WWW永久小说| 内射白浆一区二区在线观看| 高清粉嫩无套内谢国语播放| 亚洲国产精品成人精品无码区在线| 蜜臀久久久久精品久久久| 房中之术御女之功秘术| 亚洲乱亚洲乱妇24P| 欧美成人精品a∨在线观看| 国产好大好硬好爽免费不卡| 亚洲伊人久久综合| 人与物VIDEOS另类XXXX| 黑人又粗又大又 ╳乂| 337P日本欧洲亚洲大胆张筱雨| 日韩精品无码人妻免费视频| 好男人 好资源在线 视频| 377P欧洲日本亚洲大胆| 无码国产欧美日韩精品| 老师的粉嫩小又紧水又多| 抖抈探探APP入口免费| 亚洲欧美精品午睡沙发| 人妻 清高 无码 中文字幕| 国产偷国产偷亚州清高APP| 中字无码AV电影在线观看网站 | 国产亚洲欧美精品久久久| 中文字幕无码无码专区| 铜铜铜铜铜铜铜好多水| 胯下硕大征服冰山女神| 疯狂做受XXXX高潮国产| 夜夜躁天天躁很很躁| 色欲AV无码一区二区三区| 久久久WWW影院人成_免费| 粉嫩AV一区二区三区免费观看| 亚洲人成色77777在线观看| 日本熟妇人妻XXXX| 久久国产精品77777| 丁香五月激情综合色婷婷| 亚洲欧洲自拍拍偷精品网314| 日本人妻丰满熟妇久久久久久| 精品亚洲国产AⅤ在线| 成人午夜精品无码区久久| 亚洲熟妇无码乱子AV| 色噜噜精品一区二区三区| 久久久久亚洲AV成人片一区| 一本色道久久综合狠狠躁| 色偷偷亚洲女人的天堂| 浪货趴办公桌~H揉秘书电影无码| 国产AV精品白浆一区二| 中文字幕在线观看亚洲日韩| 香蕉尹人综合在线观看| 欧美嫩交一区二区三区| 京东影业JD008苏小小| 成人欧美日韩一区二区三区| 一本久道综合色婷婷五月| 天堂√中文最新版在线| 男女性色大片免费网站| 国产真实强被迫伦姧女在线观看 | 亚洲午夜精品久久久久久浪潮| 色综合天天视频在线观看| 免费看美女脱精光的网站| 国产亚洲精品A第一页| 把腿张开老子臊烂h视频| 亚洲熟妇另类久久久久久| 四季亚洲Av日韩AV无码中文| 男人猛躁进女人免费播放| 狠狠躁日日躁夜夜躁2020 | 中文字幕女人妻热女人妻| 亚洲AV玩弄放荡人妇系列| 日本午夜免费福利视频| 久久亚洲精品人成综合网| 国产伦精品一区二区三区免费| しぼっちうぞ2在线观看1一| 一本无线乱码不卡一二三四 | 人妻无码一区二区三区TV| 久久久久国色ΑV免费观看| 国产精品久久午夜夜伦鲁鲁| MD豆传媒一二三区进站口在线| 亚洲线精品一区二区三八戒| 无码人妻久久一区二区三区免费 | 一区蜜桃中文不卡在线| 亚洲AV无码AV有码AV| 肉丝超薄丝袜交一区二区| 妺妺窝人体色WWW在线韩国| 加勒比AV一本大道香蕉大在线| 国产Chinese男男GayGay网站| AV无码小缝喷白浆在线观看| 亚洲线精品一区二区三区影音先锋| 无码熟妇人妻AⅤ在线影片| 人善交ZZZZXXXXX另类| 免费天堂无码人妻成人AV电影| 娇小XXXXBXBⅨ中国XX| 国产黄 色 网 站 成 人免费| А√天堂中文官网在线BT| 中国人妻被两个老外三P| 亚洲鲁丝片AV无码多人| 无码中文人妻在线三区| 色噜噜狠狠色综合网| 欧美黑人又大又粗XXXX| 老公带朋友来家里C我怎么办| 激情综合婷婷丁香五月俺来也| 国产精品久久久久久亚洲AV| 丁香五月缴情网站| 八戒八戒神马2021| 97国产精华液哪个品牌比较好贵 | 性色AV一区二区三区天美传媒| 熟妇人妻中文A∨无码| 日本成熟人妻HD| 欧美精品亚洲日韩AⅤ| 乱码精品一区二区三区| 久久精品亚洲男人的天堂| 黑人大战日本人妻嗷嗷叫| 国产精品永久免费视频| 国产97成人亚洲综合在线| 插花弄玉小说荔枝很甜作者卿凌| 99久久婷婷国产综合亚洲| 中国熟妇内谢69XXXXX| 亚洲综合网站色欲色欲| 亚洲精品又大又粗| 亚洲AV无码专区亚洲AV不卡| 无遮挡又色又刺激的视频黄 | 人妻无码第一区二区三区| 欧美群交在线播放1| 男男高H啊灌满了高潮视频| 两毫米的小洞你却稳稳命中| 久久精品人人做人人爽| 精品麻豆一区二区三区乱码| 好大好硬好深好爽想要AV| 国产无遮挡无码很黄很污很刺激| 国产精华液一线二线三线| 高H禁伦餐桌上的肉伦| 吃奶呻吟打开双腿做受动态图| 边摸边脱吃奶边高潮视频免费| WRITEAS前后双插头| GAY成年男人露J网站| BIGBANG幼稚视频入门幼年| 97精品国产一区二区三区| 97精品依人久久久大香线蕉97| 自拍偷自拍亚洲精品被多人伦好爽 | 被添高潮爱爱免费视频| 啊轻点灬大JI巴太粗太长了欧美 | 真人作爱视频免费网站| 伊人久久大香线蕉无码不卡| 伊人色综合久久天天小片| 一本大道无码人妻精品专区| 伊伊人成亚洲综合人网7777| 影音先锋亚洲无码资源网| 游泳教练在水里含我奶小说| 怡红院A∨人人爰人人爽 | 韩国无码AV片在线观看| 护士趴下光屁股翘臀被打的作文| 荷兰肥妇BBWBBWBBW| 制服 丝袜 人妻 专区一本| 给老子叫 老子喜欢听| 午夜成人性爽爽免费视频| 无码av无码免费一区二区毛片| 无码AV天堂一区二区三区| 无码一区二区三区在线| 西西人体大胆4444WWW| 亚洲AV无码成人精品区在线播放| 亚洲AV永久无码精品久久麻豆| 亚洲АV天堂手机版在线观看| 亚洲精华液一二三产区| 亚洲乱码尤物193YW| 亚洲综合网国产精品一区| 在线播放免费人成毛片乱码| 18禁自慰网址进入| KDBACC小蝌蚪新版本的特点| 成人欧美一区二区三区视频| 国产AV无码专区亚洲AV琪琪| 国产激情无码一区二区三区| 国产色XX群视频射精| 精品国内在视频线2019| 久久久久久人妻一区精品| 免费无码成人AV在线播| 全免费A级毛片免费看视频| 日韩中文无码有码免费视频| 无码AⅤ最新AV无码专区| 亚洲AV无码乱码在线观看性色| 亚洲熟女综合一区二区三区|