版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oHanTanYanYing/article/details/82011721
之前这篇文章LCM通信包在Windows 64位环境下的编译完成了LCM的编译工作,而本篇文章将着重解决编译出来的东西怎么用的问题。
在windows下用LCM是非常简单的事情(难怪有人死活要用它呀!!!),具体步骤如下:
1.包含包目录"xx\lcm-master\lcm"
2.包含编译出来的"lcm.lib"所在的库目录
3.附加依赖项"lcm.lib"
4.将涉及到的几个编译出来的dll添加到工程目录下,具体为:
lcm.dll
libwinpthread-1.dll
libintl-8.dll
libiconv-2.dll
libglib-2.0-0.dll
libpcre-1.dll
接着写代码就完事了
发送代码如下:
#include <iostream>
#include "lcm/lcm-cpp.hpp"
int main()
{
lcm::LCM lcm;
if (!lcm.good())
{
return 1;
}
char data[5];
data[0] = 1;
data[1] = 5;
data[2] = 1;
data[3] = 2;
data[4] = 1;
lcm.publish("EXAMPLE", data,5);//第一个参数是通道名,第二个参数是数据指针,第三个参数是长度
std::cout << "发送成功!";
return 0;
}
接收代码如下:
#include <iostream>
#include "lcm/lcm-cpp.hpp"
class MyMessageHandler
{
public:
void onMessage(const lcm::ReceiveBuffer* rbuf, const std::string& channel)
{
std::cout << (int)((unsigned char*)rbuf->data)[0] << endl;
std::cout << (int)((unsigned char*)rbuf->data)[1] << endl;
std::cout << (int)((unsigned char*)rbuf->data)[2] << endl;
std::cout << (int)((unsigned char*)rbuf->data)[3] << endl;
std::cout << (int)((unsigned char*)rbuf->data)[4] << endl;
std::cout << "接收成功!";
}
};
int main() {
lcm::LCM lcm;
MyMessageHandler handler;
lcm.subscribe("EXAMPLE", &MyMessageHandler::onMessage, &handler);
while (true)
lcm.handle();
return 0;
}