通过蓝牙进行温度交换的温度

如何解决通过蓝牙进行温度交换的温度

我正在尝试了解如何对一些数据进行编码以便通过BLE(蓝牙低功耗)进行传输。 具体来说,我对这一行很感兴趣:

https://github.com/micropython/micropython/blob/05f95682e7ddfb08c317e83826df9a1d636676f3/ports/nrf/examples/ubluepy_temp.py#L68

来自摘要:

temp = Temp.read()
temp = temp * 100
char_temp.write(bytearray([temp & 0xFF,temp >> 8]))

在我们什至进入为什么部分之前,我需要了解操作方式。在此代码片段中,以摄氏度为单位从传感器读取温度作为浮点。现在说“ 20.00”。然后将其乘以100,然后得出编码部分:

2000 & 0xFF -> 208
2000 >> 8   ->   7

所以我们基本上是在发送:

>>> bytearray([208,7])
bytearray(b'\xd0\x07')

这是正确的吗?我会这么说,我用自己的设备进行了检查,这似乎是正在发送的数据,它也可以正常工作,我可以读取从BLE设备发送的温度。

我不明白的是为什么需要所有这些位操作。例如,我尝试仅发送bytearray([hex(20)]),但不起作用(尝试从手机读取温度时,无法解析/转换数据)。

能否请您解释一下发送数据的格式?

解决方法

tests所示,在Python中进行转换的直接方法是具有to_bytesfrom_bytes功能

使用数据将字节指向int方向:

>>> int.from_bytes([208,7],byteorder='little',signed=True)
2000

从int到字节:

>>> int(2000).to_bytes(2,signed=True)
b'\xd0\x07'

或者从读数到字节:

>>> int(20.00*100).to_bytes(2,signed=True)
b'\xd0\x07'

蓝牙数据应为little endian格式的列表或字节数组。列表中的每个整数都必须代表一个octet

从您链接到的源中,我可以看到特征性的UUID为0x2A6E

uuid_temp = UUID("0x2A6E")  # Temperature characteristic

这是官方的UUID,因此在https://www.bluetooth.com/specifications/assigned-numbers/的“ 16位UUID编号文档”中进行了描述

enter image description here

Bluetooth SIG网站上的GATT Specification Supplement文档中有更详细的说明:“ 2:值和表示的值”部分。在该文档中,它还解释了如何以这种方式表示温度: enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)> insert overwrite table dwd_trade_cart_add_inc > select data.id, > data.user_id, > data.course_id, > date_format(
错误1 hive (edu)> insert into huanhuan values(1,'haoge'); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive> show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 <configuration> <property> <name>yarn.nodemanager.res