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

如何在Python中动态拼接LoRaWAN AT+DTRX命令的字节/十六进制参数

解决LoRaWAN AT+DTRX指令动态拼接十六进制参数的问题

你遇到的核心问题是要把numpy数组对应的十六进制字符串正确动态拼接到AT指令的指定位置,以下是具体实现步骤和代码:

1. 确保numpy数组格式正确

首先要保证你的npArray是uint8类型的数组——LoRaWAN传输的是单字节数据,若数组是int32等其他类型,转成字节时会生成多余数据。如果不是uint8类型,先做转换:

import numpy as np
# 将数组转为uint8类型(按需调整)
npArray = npArray.astype(np.uint8)

2. 动态生成并发送AT指令

把numpy数组转成字节数组,再转成十六进制字符串,最后拼接成完整的AT命令字节串发送:

# 将numpy数组转为字节数组
byte_data = bytes(npArray)
# 把字节数组转为十六进制字符串(结果和你手动复制的格式一致)
hex_str = byte_data.hex()
# 拼接AT命令并转成字节类型(串口需要字节数据)
at_command = f'AT+DTRX=0,2,16,{hex_str}\r'.encode()
# 发送指令
ser.write(at_command)
# 读取响应
response = ser.read(100)
print(response.decode())

3. 验证拼接结果

可以打印生成的at_command,和你之前硬编码的指令对比,确认完全一致:

print(at_command)
# 应输出和硬编码一致的内容:b'AT+DTRX=0,2,16,00003f0101007a00\r'

常见排查点

  • 检查hex_str的长度是否和AT指令第三个参数(例子里是16)匹配:16个字符对应8字节数据,要保证len(hex_str)等于该参数值
  • 确认串口的波特率、奇偶校验、停止位等参数和LoRa设备完全一致,避免数据传输乱码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:00:01