You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将字节字面量转为字符串变量适配LoRa模块的send()方法?

解决SX126X LoRa模块发送JSON字符串的问题

核心原因

从你提供的SX1262.py代码可以看到,_startTransmit方法要求传入的data必须是bytes或bytearray类型,直接传普通字符串会触发ERR_INVALID_PACKET_TYPE错误,这就是去掉b前缀后发送失败的根本原因。

发送端实现

要发送JSON字符串,只需完成JSON序列化+字节编码两步:

  1. 将Python字典(或其他可序列化数据)用json.dumps()转换为JSON格式的字符串;
  2. 调用字符串的encode()方法(默认UTF-8编码),将其转为bytes类型后传入sx.send()。

修改后的main.py示例:

import json
import time

# 定义要发送的JSON数据(以字典为例)
sensor_data = {
    "device_id": "Pico_TX",
    "temperature": 25.6,
    "status": "active"
}

while True:
    # 序列化并编码为字节
    payload = json.dumps(sensor_data).encode('utf-8')
    sx.send(payload)
    time.sleep(10)

接收端解析

接收LoRa数据时会得到bytes类型,需要反向操作解析为JSON:

  1. 用decode()将字节转为字符串;
  2. 用json.loads()将字符串解析为Python字典。

接收端示例代码:

import json

# 假设接收逻辑(根据库的实际接收方法调整)
while True:
    received_bytes = sx.receive()  # 调用库的接收方法获取字节数据
    if received_bytes:
        # 解析为JSON
        json_str = received_bytes.decode('utf-8')
        parsed_data = json.loads(json_str)
        print("Received data:", parsed_data)

内容的提问来源于stack exchange,提问作者David P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 10:25:34