帖子
帖子
用户
博客
课程
显示全部楼层
1
帖子
0
勋章
10
Y币

[插件使用] 使用ble插件setNotify接口报错-1

[复制链接]
发表于 2024-1-24 18:27:54
本帖最后由 BIP583191 于 2024-1-25 09:43 编辑

ble.setNotify老是返回false,错误码为-1
测试流程是这样的:测试机自定义loader 里面开始扫描蓝牙并返回蓝牙列表,选择另一台手机的地址,loader里面显示连接成功,并获得该手机设备的服务/特征值,最后根据这三个值去开启监听数据回发,结果返回错误,错误码都是-1,试了几个服务id和特征id都是返回false,是因为app蓝牙连接的另一台设备是手机的关系吗?求解。
以下是页面全部代码:
  1. <!DOCTYPE HTML>
  2. <html>

  3. <head>
  4.     <meta charset="utf-8">
  5.     <meta name="viewport" content="maximum-scale=1.0, minimum-scale=1.0, user-scalable=0, initial-scale=1.0, width=device-width" />
  6.     <meta name="format-detection" content="telephone=no, email=no, date=no, address=no">
  7.     <title>Hello APP</title>
  8.     <link rel="stylesheet" type="text/css" href="../css/apiutil.css" />
  9.     <style>
  10.         label {
  11.             margin: 10px;
  12.             font-size: 24px;
  13.         }

  14.         ul {
  15.             margin-bottom: 10px;
  16.         }

  17.         ul li {
  18.             margin: 5px 10px;
  19.             padding: 5px;
  20.             color: #000;
  21.             word-wrap: break-word;
  22.         }
  23.     </style>
  24. </head>

  25. <body>
  26.     <button>蓝牙列表</button>
  27.     <ul id="ul_box">
  28.     </ul>
  29.    
  30. </body>
  31. <script type="text/javascript" src="../script/apiutil.js"></script>
  32. <script type="text/javascript">
  33.     var ble = null;
  34.     apiready = function() {
  35.         ble=api.require('ble');
  36.         ble.initManager(function(ret){
  37.         })
  38.         ble.scan({}, function(ret){
  39.             console.log(ret.status)
  40.             if (ret.status){
  41.                 alert('开始扫描');
  42.                 ble.getPeripheral(function(ret) {
  43.                     if(ret){
  44.                         setLi(ret.peripherals);
  45.                     }
  46.                 });
  47.             }
  48.         });
  49.         
  50.     }
  51.    
  52.     function setLi(ret){
  53.         let ul=document.getElementById('ul_box');
  54.         for(let i=0;i<ret.length;i++){
  55.             let li=document.createElement('li');
  56.             li.id=i;
  57.             li.innerHTML=`<div>
  58.                             <p id="name">${ret[i].name}</p>
  59.                             <p id="uuid">${ret[i].uuid}</p>
  60.                         </div>`;
  61.             li.addEventListener('click',(data)=>{
  62.                 console.log(ret[i].uuid);
  63.                 this.getConnect(ret[i].uuid);
  64.             })
  65.             ul.append(li);
  66.         }
  67.     }
  68.     //连接设备
  69.     function getConnect(uuid){
  70.         console.log(uuid);
  71.         ble.connect({
  72.         peripheralUUID:uuid
  73.         }, function(ret, err) {
  74.             console.log(JSON.stringify(ret))
  75.             console.log(JSON.stringify(err))
  76.             if (ret.status) {
  77.                 alert("连接成功!");
  78.                 getServices(uuid);
  79.             } else {
  80.                 alert(err.code);
  81.             }
  82.         });
  83.     }
  84.     // 获取连接设备的所有服务
  85.     function getServices(uuid){
  86.         ble.discoverService({
  87.             peripheralUUID:uuid
  88.         }, function(ret) {
  89.             console.log(JSON.stringify(ret));
  90.             let id=ret.services[1];
  91.             getCharacteristics(uuid,id);
  92.         });
  93.     }
  94.     // 获得特征值
  95.     function getCharacteristics(uuid,id){
  96.         ble.discoverCharacteristics({
  97.             serviceUUID:id,
  98.             peripheralUUID:uuid
  99.             
  100.         }, function(ret) {
  101.             console.log(JSON.stringify(ret))
  102.             let cid=ret.characteristics[2].uuid;
  103.             setNotify(uuid,id,cid);
  104.         });
  105.     }
  106.     //监听数据回发
  107.     function setNotify(uuid,id,cid){
  108.         console.log(cid)
  109.         ble.setNotify({
  110.             peripheralUUID: uuid,
  111.             serviceUUID: id,
  112.             characteristicUUID:cid
  113.         }, function(ret,err) {
  114.             console.log(JSON.stringify(ret))
  115.             console.log(JSON.stringify(err))
  116.         });
  117.     }
  118. </script>

  119. </html>
复制代码


微信图片_20240124181425.png
65b0e37bd7975.png
380
帖子
4
勋章
6
Y币
最好用蓝牙设备测试
您需要登录后才可以回帖 登录

本版积分规则