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()