我正在使用这个开源软件来处理 Sick Lidar Devices:
https://github.com/rhuitl/sicktoolbox/tree/master/trunk/c%2B%2B/drivers/lms5xx/sicklms5xx
以及提供数据信息的本文档:
我正在尝试使用 C++ 实现来解析来自 SickLMS5xx 的“CoLa B”格式的已写入文件,如上述文档中所述。但是,这个工具箱似乎是为了直接处理设备而编写的,而不是从它输出的文件(就像我正在使用的那样)。
看来我可以使用 SickLMS5xxMessage (ParseMessage() 等)中的函数来实现我想要的。我做了一个主要方法来与这个类(它是 SickMessage() 超类)进行交互,如下所示:
#include <iostream>
#include <fstream>
#include <boost/thread/thread.hpp>
#include "SickLMS5xxMessage.cc"
void run() {
SickLMS5xxMessage msg(uint8_t * const telegramFileBuffer[]);
std::ifstream telegramFile("MMS21_01");
if(telegramFile.is_open()) {
uint8_t telegramFileBuffer[msg.GetMessageLength()];
for(int i = 0; i < msg.GetMessageLength(); ++i) {
telegramFile >> telegramFileBuffer[i];
}
}
msg.Print();
}
int main (int argc, char** argv) {
run();
return (0);
}
但它似乎无法正常工作,因为它无法识别来自 SickLMS5xxMessage 的 GetMessageLength() 和 Print() 函数,并给我一个未解决的方法错误?
也许这是我的 C++ 编码错误(因为我来自 Java 背景,所以 C++ 对我来说还是比较新的)。
任何帮助将不胜感激,谢谢:)