我将如何过滤数据条目之间包含一些垃圾二进制文件的非标准格式串行数据?

问题描述 投票:0回答:1

我正在开发一个 MATLAB 应用程序,它从 GPS 接收器获取串行数据并实时绘制它。我遇到问题的唯一部分实际上是过滤该串行数据并可靠地从中提取我需要的数据。 (据我所知)数据没有以任何标准格式格式化,因此我无法找到任何可以用来过滤掉垃圾数据的流程。

这是数据在 PuTTY 中的样子:

这就是数据在 MATLAB 中的样子(逐行显示时):

我从这些数据中需要的是以@ GPS_STAT 开头的行中的“lt”和“ln”值。

@ GPS_STAT 202 0000 00 00 00:01:29.038 CRC_OK  TRK FthrWt04326 Alt 000000 **lt +00.00000 ln +00.00000** Vel +0000 +000 +0000 Fix 0 #  0  0  0  0 000_00_00 000_00_00 000_00_00 000_00_00 000_00_00 CRC: 7FE9

该项目的限制要求我使用 MATLAB,但如果有人有 Python 解决方案,我相信我可以弄清楚如何将该过程转换为 ML。

我尝试了各种方法逐行读取串行数据并使用字符串解析和索引来获取我想要的数据,但我仍然遇到问题,因为偶尔会出现 MATLAB 不喜欢的额外新行或其他奇怪字符.

如有任何帮助,我们将不胜感激!

matlab serial-port data-filtering
1个回答
0
投票

使用正则表达式解析数据中的纬度和经度。这个文档将为您提供帮助。

第 1 步:读取文件

第 2 步:使用正则表达式将行与 @ GPS_STAT 匹配

第3步:提取纬度和经度

在 Python 中,您可以使用类似的方法,使用正则表达式的 re 模块。

© www.soinside.com 2019 - 2024. All rights reserved.