TI IWR1642 雷达串口数据解析(C++代码)
本文为研究生三年的一点小成果,供相同研究方向的同学借鉴
前言:研究算法是研究生三年的重点工作,但是对于算法的应用、实现也很重要。针对算法应用语言编写软件是编程能力的提升,也是论文的加分项。本文主要讲解IWR1642雷达的串口数据解析,并附上相关代码。
编程语言 C++,编程工具QT
学习IWR1642雷达的串口数据解析,需要一定的语言能力,编程语言C++。编程工具是QT,QT是非常好用的编程工具,具有丰富的以Q开头的C++分装类,此外UI Designer提供便捷的UI设计模式。本文基于QT分装库实现串口数据解析和雷达数据的显示。
-
前期了解 TI官方提供雷达各个应用场景的Demo,通过UNIFLASH烧写软件将BIN文件烧入1642开发板中 ,并提供了Matlab和QT 编写的相对应Demo的上位机软件。其中People Counting 和Traffic Monitoring 案例官方提供MATLAB 代码。Heartbeat Check官方提供QT C++编写的软件。这三个案例中都有串口数据解析的相关代码,不同案例的解析代码不经相同但每个案例的代码又有区别。本文的项目是基于C++编写,因此研究了Heartbeat Check官方提供QT 代码。并在该代码基础上结合Traffic Monitoring案例提供的串口数据解析文档,实现了车辆监控的代码解析,并显示。 各类DEMO可以在TI资源库中下载(该资源库包括所有TI型号的DEMO):https://dev.ti.com/tirex/explore/node?node=AFeCagqbt7.hu2lHOXE4eA__AocYeEd__LATEST -
Traffic Monitoring 和 Heartbeat Check 相关代码如下 Traffic Monitoring官方原始代码地址:案例就在以上链接的中 Heartbeat Check 官方原始代码地址:案例就在以上链接的中 -
QT下载地址 QT下载地址:https://download.qt.io/official_releases/qtcreator/4.10/4.10.2/ 1:首先熟悉两个案例的运行,需要安装TI官方提供的Matlab运行Traffic Monitoring 。而Heartbeat Check 则需要自己下载QT软件。并找出串口数据解析代码部分,熟悉代码形式。 -
串口数据解析文档 Traffic Monitoring DEMO未提供串口数据解析文档,但里面文档提到串口数据形式参考People Counting 。People counting数据解析文档中重点部分介绍如下图所示。
文档很详细的介绍了雷达串口输出数据的形式。 建议先通过串口调试助手读取串口输出的雷达探测到的数据,数据形式如下: -----------找不到之前调试的数据了------------***********
数据是16进制形式显示的,核对解析文旦可以很容易的将解析文档中提供的数据形式与之对应。接下来看官方案例提供的串口数据解析C++代码的一部分。
当然代码不止这些,需要读者自己细致研究,这个代码是生命体征的代码,可以参考。能力强的童鞋参考这个代码和解析文档就可以很顺利完成任务,当是不是人人都有能力完成在实时性下,还能保证数据稳定读取的,附上作者代码。该代码仅仅是解析的片段,稍微有能力的同学复制黏贴就能为自己所用。 代码片段如下:https://download.csdn.net/download/ljh12121ljh/20939532
代码每个部分及是对以上数据的解析部分,但关有这样的数据解析部分,还不够。雷达时时传送数据需要一一对应并将其截取。其中串口文档中Magic Word用于提示每帧的头部。此外代码还需要实现读取每帧长度的函数,实现每帧数据的正确截取与解析。另外串口在通信过程中容易出现数据异常本来 为00000111的数据变成FFFFFFFF,数据差别非常大。截取数据的时候需要根据头部信息的提升数据提取。数据错误将导致程序进入死循环等问题,因此程序还需要有纠错功能。本文对于异常的数据是直接删除,因为雷达数据量够大,没必要在乎一两帧数据。因此本代码设置了识别机制,遇到错误数据,删除该帧。
注意:TI有跟新资源库文件,导致下载下来的是最新的压缩包。最新压缩包没有IWR1642雷达的案例,需要同学自己找一下旧一个版本的。该代码可供所有系列TI雷达借鉴。
|