微信蓝牙小程序,连接蓝牙模块收发数据。遇到的问题:我连接成功之后发现服务值下面两个特征值一个只能读一个只能写,然后点击读的那个一直收到同一个字,点击发送无论发什么内容只能收到同一个中文字,求指导

新手小程序开发者在尝试通过蓝牙模块进行数据传输时遇到问题,怀疑如何结合两个只能读写的特征值进行操作,并希望实现双向通信。描述了代码片段和遇到的具体问题点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好,我是小程序初学者,目前尝试做一个蓝牙小程序连接蓝牙模块进行收发数据,遇到了问题求大佬指点

这是代码运行结果:点击能读的特征值就会接收到耀这个字,点击输入框无论发送什么都会接收到肀这个字


遇到的问题:我连接成功之后发现服务值下面两个特征值一个只能读一个只能写,然后点击读的那个一直收到同一个字,点击发送无论发什么内容只能收到同一个中文字,我在想是需要将两个特征值合在一起使用吗?求指导(ps:小程序是跟着b站上面一个博主做的,他是想把手机发送的内容显示到手机上的接受区,我想实现手机发送在串口助手显示,串口助手发送的能在手机小程序接收区显示),以下是代码内容lanya.wxml部分

<!-- <button bindtap="openAdapter">初始化蓝牙模块</button> -->
<!-- <button bindtap="discoverDevices">开始搜寻附近的蓝牙设备</button> -->
<button bindtap="getDevices">获得周边蓝牙设备</button>
<!-- 一个一个遍历准备连接设备:点击设备名称即可链接 -->
<view wx:if="{
  {showFlage}}" wx:for="{
  {devices}}" wx:for-item="device" wx:key="key" bindtap="create" data-index="{
  {index}}">                                                               
    <view style="width: 750rpx;height:100rpx;color:gray;">{
  {device.name}} {
  {device.deviceId}}
    </view>
</view>
<view wx:if="{
  {showFlage1}}">蓝牙设备:{
  {name}} {
  {deviceId}}</view>
<view wx:if="{
  {showFlage1}}">点击下面服务值获得特征值</view>

<!-- 判断是哪个服务值像之前判断是哪个蓝牙设备那样 -->
<view wx:for="{
  {services}}" wx:for-item="service" wx:key="key" bindtap="choise" data-index="{
  {index}}">
    <!-- 将它遍历出来,把id提出来-->
        <view wx:if="{
  {showFlage1}}" style="color: hotpink;">服务值:{
  {service.uuid}}</view>
</view>

<view wx:if="{
  {showFlage2}}">点击下面特征值读写数据</view>
<!-- 一个服务值里面有好多特征值,需要数据索引,添加点击事件 -->
<view wx:if="{
  {showFlage2}}" style="color: blue;" wx:for="{
  {characteristics}}" wx:for-item="characteristic" wx:key="key" bindtap="select"data-index="{
  {index}}">
        <view>特征值:{
  {characteristic.uuid}}  read:{
  {characteristic.properties.read}} write:{
  {characteristic.properties.write}}&l
### HC-08蓝牙模块小程序的集成方法 HC-08 是一种基于 Bluetooth Specification V4.0 BLE 协议的数传模块,具有低功耗、高灵敏度以及较远传输距离的特点[^2]。为了将其与微信小程序集成,开者需要完成硬件配置和软件开两部分的工作。 #### 硬件配置 在硬件层面,HC-08 蓝牙模块可以通过 UART 接口连接到 Arduino 或其他微控制器上。具体来说: - **UART 配置**:HC-08 的 TX 和 RX 引脚分别连接到 Arduino 的 RX 和 TX 引脚。 - **电源管理**:确保 HC-08 模块供电稳定(通常为 3.3V),并注意其电流需不超过额定范围。 - **波特率设置**:默认情况下,HC-08 的波特率为 9600 bps,但可以根据实际需调整至更高速率以提高数据吞吐量。 #### 小程序端开 对于微信小程序而言,BLE 功能已经内置支持,允许应用扫描附近设备并与之建立连接。以下是主要步骤: 1. **初始化蓝牙适配器** 在页面加载时调用 `wx.openBluetoothAdapter` 方法开启蓝牙功能,并监听状态变化事件。 ```javascript wx.onBluetoothAdapterStateChange(function(res){ console.log('蓝牙适配器状态改变', res); }); ``` 2. **发现周边设备** 使用 `wx.startBluetoothDevicesDiscovery` 启动设备搜索过程,随后可通过回调获取符合条件的目标设备列表。 ```javascript wx.startBluetoothDevicesDiscovery({ success: function (res) { console.log("开始查找"); } }); wx.onBluetoothDeviceFound(function(devices){ devices.devices.forEach(device => { if (device.name === 'HC-08') { // 假设目标名称固定为'HC-08' targetDeviceId = device.deviceId; console.log('找到目标:', device); } }); }); ``` 3. **创建服务链接** 当选定特定设备后,需进一步操作以访问该设备的服务特性集合。这涉及多个异步 API 如下所示: - 创建连接:`wx.createBLEConnection({deviceId})` - 获取所有服务:`wx.getBLEDeviceServices({deviceId})` - 查询指定特征值:`wx.getBLEDeviceCharacteristics({...})` - 订阅通知或入命令:`wx.notifyBLECharacteristicValueChange()` / `wx.writeBLECharacteristicValue()` 4. **处理收发消息** 成功绑定之后即可按照既定协议解析来自硬件的数据包或者向对方发送控制信号。例如,在智慧农业场景里可能只需要简单的开闭泵逻辑,则对应于高低电平切换动作[^3]。 ```javascript function sendCommand(commandStr, deviceId, serviceUUID, characteristicUUID){ const buffer = new ArrayBuffer(1); const dataView = new DataView(buffer); dataView.setUint8(0, commandStr.charCodeAt(0)); wx.writeBLECharacteristicValue({ deviceId, serviceId:serviceUUID, characteristicId:characteristicUUID, value:dataView.buffer }) } ``` 以上代码片段展示了如何构建一个节级的消息体并通过蓝牙通道传递给远程终端执行相应任务。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值