LCM通信包在Windows 64位环境下的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

这里需要注意的是要先开接收程序等待着才能看到发送程序发送过来的数据。

猜你喜欢

转载自blog.csdn.net/oHanTanYanYing/article/details/82011721
今日推荐