This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AWR1843BOOST: 数据接收问题

Part Number: AWR1843BOOST
Other Parts Discussed in Thread: DCA1000EVM,

您好,我用python写了一个接受脚本,运行时显示 ,这是什么原因呢,怎么可以修改一下代码正确完整接收到数据并且可视化呢,感谢!我的代码如下

import serial
import matplotlib.pyplot as plt
import numpy as np
import struct

def setup_serial(port, baudrate):
    ser = serial.Serial(port, baudrate, timeout=1)
    return ser

def read_raw_radar_data(serial_port, num_data_points):
    try:
        # 读取串口数据
        raw_data = serial_port.read(2 * num_data_points* 2)  # num_data_points是你期望的数据点数量
        if len(raw_data) != 2 * num_data_points:
            print("Incomplete data received")
            return None
       
        # 解析二进制数据为整数数组
        values = struct.unpack(f"{num_data_points}h", raw_data)

        return values
   
    except Exception as e:
        print(f"解析原始模式数据时发生错误: {e}")
        return None


        # 检查数据是否为空
        if not data:
            print("Empty data received")
            return None


    except UnicodeDecodeError as e:
        print(f"解码数据时发生错误: {e}")
        return None
    except ValueError as e:
        print(f"解析数据时发生错误: {e}")
        return None

def plot_radar_data(radar_data, ax):
    # 清空当前坐标轴
    ax.clear()

    # 绘制雷达数据
    ax.plot(radar_data, marker='o')

    # 设置图形标题和坐标轴标签
    ax.set_title('DCA1000EVM & AWR1843BOOST Radar Data')
    ax.set_xlabel('Sample Index')
    ax.set_ylabel('Amplitude')

    # 刷新图形
    plt.pause(0.01)

if __name__ == "__main__":
    # 串口设置(使用你的串口和波特率)
    serial_port = setup_serial("COM3", 115200)
    num_data_points = 128

    # 创建 Matplotlib 图形
    fig, ax = plt.subplots()

    try:
        while True:
            # 读取雷达数据
            raw_radar_data = read_raw_radar_data(serial_port, num_data_points)

            if raw_radar_data is not None:
                # 在这里可以根据实际情况对原始模式数据进行处理
                # 例如,你可能需要将数据转换为距离或其他物理量

                # 绘制原始模式雷达数据
                plot_radar_data(raw_radar_data, ax)

           

    except KeyboardInterrupt:
        print("Terminating the program.")
    finally:
        # 关闭串口
        serial_port.close()
  • 你的代码中存在一些问题,导致程序无法正确接收数据并进行可视化。下面是对你的代码进行改进后的版本,我添加了一些注释来解释代码的改动:

    import serial
    import matplotlib.pyplot as plt
    import numpy as np
    import struct
    
    def setup_serial(port, baudrate):
    ser = serial.Serial(port, baudrate, timeout=1)
    return ser
    
    def read_raw_radar_data(serial_port, num_data_points):
    try:
    # 读取串口数据
    raw_data = serial_port.read(2 * num_data_points * 2) # 每个数据点占用两个字节,因此总共是2 * num_data_points * 2个字节
    if len(raw_data) != 2 * num_data_points * 2:
    print("Incomplete data received")
    return None
    
    # 解析二进制数据为整数数组
    values = struct.unpack(f"{num_data_points}h", raw_data)
    
    return values
    
    except Exception as e:
    print(f"解析原始模式数据时发生错误: {e}")
    return None
    
    def plot_radar_data(radar_data, ax, num_data_points):
    # 清空当前坐标轴
    ax.clear()
    
    # 绘制雷达数据
    ax.plot(np.arange(num_data_points), radar_data, marker='o') # 使用 np.arange(num_data_points) 作为 x 轴数据
    
    # 设置图形标题和坐标轴标签
    ax.set_title('DCA1000EVM & AWR1843BOOST Radar Data')
    ax.set_xlabel('Sample Index')
    ax.set_ylabel('Amplitude')
    
    # 刷新图形
    plt.pause(0.01)
    
    if __name__ == "__main__":
    # 串口设置(使用你的串口和波特率)
    serial_port = setup_serial("COM3", 115200)
    num_data_points = 128
    
    # 创建 Matplotlib 图形
    fig, ax = plt.subplots()
    
    try:
    while True:
    # 读取雷达数据
    raw_radar_data = read_raw_radar_data(serial_port, num_data_points)
    
    if raw_radar_data is not None:
    # 绘制原始模式雷达数据
    plot_radar_data(raw_radar_data, ax, num_data_points)
    
    except KeyboardInterrupt:
    print("Terminating the program.")
    finally:
    # 关闭串口
    serial_port.close()

    对你的代码做了以下改进:

    1. 在 `plot_radar_data` 函数中,使用 `np.arange(num_data_points)` 作为 x 轴数据,确保正确绘制雷达数据的 x 轴。

  • 您好,改进代码后还是上述问题,接收不到数据

  • 可能的原因还包括网络连接问题、数据格式不匹配、数据传输错误等。建议检查网络连接是否正常,确认数据格式是否正确,以及检查数据传输过程中是否出现了错误。