- 很多BLE硬件设备广播发包,小程序如何接收广播数据包?
公司产品是一堆BLE蓝牙设备,一直在向四周广播发送数据包。 研究了好几天蓝牙相关的API,貌似都需要和设备建立蓝牙连接,才可以和设备通讯。 那么像我这类情况,小程序不建立连接,纯粹就是接收很多设备的广播包,可以吗? 最好提供一下API的调用过程,谢谢。
2021-07-31 - 小程序蓝牙写入操作问题
- 当前 Bug 的表现 对蓝牙设备进行扫描连接和写操作,使用wx.writeBLECharacteristicValue(buffer) 写入的指令不超过20字节时,写入返回ok,能正常接收notify设备返回的值; 但是当写入的指令超过20字节时,写入指令能成功返回ok,但是不能接收设备返回的值,估计是设备没有接收完整的指令,把指令当做错误的指令了; 经查看小程序官方api文档,发现小程序不支持MTU,唯有自己做分包发送,由于本人对蓝牙也是半知半解,所以还要请教各位关于分包发送的步骤,还有就是是不是需要硬件开发那边配合,谢谢各位大神哈
2018-08-30 - 建议增加writeBLECharacteristicValue 蓝牙写类型type参数设置
一、微信小程序代码段 https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.writeBLECharacteristicValue.html// 向蓝牙设备发送一个0x00的16进制数据 let buffer = new ArrayBuffer(1) let dataView = new DataView(buffer) dataView.setUint8(0, 0) wx.writeBLECharacteristicValue({ // 这里的 deviceId 需要在 getBluetoothDevices 或 onBluetoothDeviceFound 接口中获取 deviceId, // 这里的 serviceId 需要在 getBLEDeviceServices 接口中获取 serviceId, // 这里的 characteristicId 需要在 getBLEDeviceCharacteristics 接口中获取 characteristicId, // 这里的value是ArrayBuffer类型 value: buffer, success (res) { console.log('writeBLECharacteristicValue success', res.errMsg) } }) 二、根据蓝牙BLE核心规范(针对4.0以上所有版本适用),writeBLECharacteristicValue是有三种种写参数设置。 第一种是WriteWithoutResponse(BLUETOOTH SPECIFICATION Version 5.0 | Vol 3, Part G 4.9.1 Write Without Response) 第二种是Signed Write Without Response(BLUETOOTH SPECIFICATION Version 5.0 | Vol 3, Part G 4.9.2 Signed Write Without Response) 第三种是WriteRequest是有WriteRsponse。(BLUETOOTH SPECIFICATION Version 5.0 | Vol 3, Part G 4.9.3 Write Characteristic Value) 三、对应的安卓和IOS手机系统都有相关的API, 1、安卓如下: /** * Write characteristic, requesting acknoledgement by the remote device */ public static final int WRITE_TYPE_DEFAULT = 0x02; /** * Wrtite characteristic without requiring a response by the remote device */ public static final int WRITE_TYPE_NO_RESPONSE = 0x01; /** * Write characteristic including authentication signature */ public static final int WRITE_TYPE_SIGNED = 0x04; characteristic_ota_update.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT); 2、IOS如下 [connectPeripheral writeValue:data forCharacteristic:writeCBCharacteristic type:CBCharacteristicWriteWithoutResponse];//第三个参数type是通过此响应不判断是否成功 [connectPeripheral writeValue:data forCharacteristic:writeCBCharacteristic type:CBCharacteristicWriteWithResponse];//第三个参数type是通过此响应会判断是否成功 四,希望微信小程序writeBLECharacteristicValue的API增加相关的Type类型设置, 目前微信小程序type在都是使用系统默认的设置(安卓的默认type为WriteWithoutResponse,IOS的默认type为WriteWithResponse),这就导致安卓的BLE传输数据比IOS的BLE传输数据快很多。 使得用户体验不佳,希望增加相应type设置,让开发者自己选择type类型,以解决相关IOS传输BLE数据慢的问题。
2021-09-19 - canvas.requestAnimationFrame失效,动画不渲染
模拟器:[图片]真机:[图片] 测试机型:华为P30,华为P40pro,华为mate20 canvas在模拟器能生效,安卓真机不渲染,IOS没问题 将requestAnimationFrame换为模拟的方法,安卓真机就能渲染了(具体看代码片段),判断是requestAnimationFrame失效导致的 三月初的时候,测试同学(华为P30)出现了这个问题且能稳定复现,但其他手机都复现不了,也就判断为手机的问题了 但今天发现能测的安卓机型都存在这个问题,怀疑是官方偷偷灰度更新了什么功能给影响到了,希望能够尽快解决一下,谢谢
2021-03-23 - cover-view touch事件 进行拖拽移动 会抖动
- 当前 Bug 的表现(可附上截图) cover-view 使用touch+transform进行拖拽,在ios上会有轻微抖动,在安卓上会有很强烈的抖动,希望官方帮忙看看 - 预期表现 我在demo里面设置了一个view 的效果与cover-view的效果,预期的效果就是像view一样,拖拽时很顺畅 - 复现路径 https://developers.weixin.qq.com/s/6bCSevmC7g5q - 提供一个最简复现 Demo https://developers.weixin.qq.com/s/6bCSevmC7g5q
2019-01-18 - 在Canvas中画有透明度的线条重叠区域会出现透明度叠加的效果
比如,我设置 [代码]canvasContext.setFillStyle([代码][代码]"rgba(0,0,0,0.5)"[代码][代码]);[代码] [代码]canvasContext.fillRect(0,0,200,200);[代码] [代码]canvasContext.draw([代码][代码]true[代码][代码]);[代码] [代码]canvasContext.fillRect(50,50,200,200);[代码] [代码]canvasContext.draw([代码][代码]true[代码][代码]);[代码]他们重叠的部分的透明度并不是0.5,而是比0.5更亮 请问我能不能用原生的Canvas API设置[代码]globalCompositeOperation[代码]组合属性,来避免这种情况[代码][代码]
2018-01-19 - 开始广播的时候发送的数据接收不到
[图片] https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-ble/wx.closeBLEConnection.html
2020-06-28 - BLEPeripheralServer.startAdvertising,会多条广播包一直发送
手机:小米6 Android9 有两个问题需要反馈。 以代码片段举例,先打开手机蓝牙,然后匀速左右滑动进度条大概持续10S。然后拿另一个手机打开nrf connect这个广播包抓包工具,用BBAA过滤广播数据,搜索广播包。 问题一:每次我发包都是在停止上一次广播成功的回调中进行,结果控制台还是有打印提示发包失败,已经开始发包了(截图1)。 问题二:当你停止滑动后,增加过滤条件,重新搜索广播包,在nrf connect中应该只有一条广播包,结果测试发现有时候居然同时有4条广播数据一直被接收(截图二),当你退出小程序后也会有三条广播包一直在发送,只有重启手机才会停止发送。 综上所述,问题二是很严重的问题,因为在某些产品中,每一个广播包都相当于一个命令,当有问题二存在时,产品就会一直执行这些不同的命令,直到用户重启手机。[图片][图片]
2020-10-27 - 为什么BLEPeripheralServer. startAdvertising()无法发送成功?
我使用下面的代码进行广播的发送,尝试过发送data也尝试过发送sendData,都无法发送成功,接收广播的地方接收不到,是否是我传递serverUuids的方式错误了?是否有发送广播的示例代码可以给我看一下,谢谢! wx.openBluetoothAdapter({ success: function(res) { wx.showToast({ title: '打开蓝牙成功', }); wx.createBLEPeripheralServer({ success: function ({ server }){ const data = ['1111', '1111', '1111', '1111', '1111', '1111', 'A9FF', '54CB', '6F6E', '0BEA', '5173', 'ADEA', '29C6']; const sendData = data.map(str => `0000${str}-0000-1000-8000-00805F9B34FB`); wx.showToast({ title: '创建服务对象成功', }); console.log('dsafasdfadsL:',server); console.log('dsafasdfadsL:', server.startAdvertising); server.startAdvertising({ advertiseRequest: { connectable: false, serviceUuids: data, } }); } }); }, })
2020-03-28 - 蓝牙广播添加服务失败
https://developers.weixin.qq.com/miniprogram/dev/api/device/bluetooth-peripheral/BLEPeripheralServer.addService.html[图片] 蓝牙广播真机调试添加服务大概率是失败的,成功次数很少 手机型号:小米Mix2
2021-03-24