首页 > Linux ROS与嵌入式的串口通信

Linux ROS与嵌入式的串口通信

#include <string>
#include                            // 包含ROS的头文件
#include 
#include 
#include 
#include                   //包含boost库函数
#include 
#include 
#include "std_msgs/String.h"              //ros定义的String数据类型
using namespace std;
using namespace boost::asio;           //定义一个命名空间,用于后面的读写操作

unsigned char buf[24];                      //定义字符串长度
int main(int argc, char** argv) {
ros::init(argc, argv, "boost");       //初始化节点
    ros::NodeHandle n;
ros::Publisher chatter_pub = n.advertise("chatter", 1000);      //定义发布消息的名称及sulv

ros::Rate loop_rate(10);
io_service iosev;
serial_port sp(iosev, "/dev/ttyUSB0");         //定义传输的串口
sp.set_option(serial_port::baud_rate(9600));   
sp.set_option(serial_port::flow_control());
sp.set_option(serial_port::parity());
sp.set_option(serial_port::stop_bits());
sp.set_option(serial_port::character_size(8));
while (ros::ok()) {
// write(sp, buffer(buf1, 6));  //write the speed for cmd_val    
//write(sp, buffer("Hello world", 12));  
     read (sp,buffer(buf));
string str(&buf[0],&buf[22]);            //将数组转化为字符串
//if(buf[0]=='p' && buf[21] == 'a')
// { 
       std_msgs::String msg;
std::stringstream ss;
ss <<str;
msg.data = ss.str();
ROS_INFO("%s", msg.data.c_str());//打印接受到的字符串
chatter_pub.publish(msg);   //发布消息

ros::spinOnce();
loop_rate.sleep();
//  }
    }
iosev.run(); 
return 0;
}

更多相关:

  • 关于点云的分割算是我想做的机械臂抓取中十分重要的俄一部分,所以首先学习如果使用点云库处理我用kinect获取的点云的数据,本例程也是我自己慢慢修改程序并结合官方API 的解说实现的,其中有很多细节如果直接更改源程序,可能会因为数据类型,或者头文件等各种原因编译不过,会导致我们比较难得找出其中的错误,首先我们看一下我自己设定的一个场景,...

  • /* 使用正态分布变换进行配准的实验 。其中room_scan1.pcd room_scan2.pcd这些点云包含同一房间360不同视角的扫描数据 */ #include #include #include #include

  • #include #include #include #include ...

  • #include #include #include #include #include #include...

  • #include #include #include #include int main (int argc,...

  • 最近想使用OpenCV 和ROS实现点云的拼接,实现三维重建,那么在学习了kinect的基本的使用方法以后我们知道,直接使用ROS 的包即可得到点云,深度图,rgb图等信息,   roslaunch openni_launch openni.launch(深度图彩色图,还有点云都获取了) rosrun openni_camera...

  • Robotics Software engineer笔记 1.ROS简介与虚拟机配置 (1)ROS简介 ROS是一款机器人软件框架,即机器人操作系统(Robot Operating System)。 ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的交换庭(switchyard)项目。在2007 年 R...

  • 下面的程序给出了对给定的ip主机进行多线程扫描的python代码 #!/usr/bin/env python #encoding: utf-8import socket, sys, thread, timeopenPortNum = 0 socket.setdefaulttimeout(3)def usage():print '...

  • 1. 生成本地密钥 ssh-keygen 2. 将密钥上传到服务器 ssh-copy-id -p port [email protected] 3. 创建登录脚本 ssh -p port [email protected] 转载于:https://www.cnblogs.com/yeran/p/1...

  • import socket,time,re,sys,os,threading import gevent from gevent import monkey monkey.patch_all()socket.setdefaulttimeout(2)#该方法用来处理用户数据的port范围,并计算范围内的port,将其添加到列表中,将列...

  • socket client 发起连接。 流程为: 创建接口 发起连接   创建接口参数同socket server相同 发起连接的函数为socket.connect(ip,port) 这个地方的ip与port为socket server端的ip和监听port。 代码示例: # -*- coding: utf-8 -*- ''' Th...