serial on ROS kinetic
#include<ros/ros.h>
#include<string>
#include<boost/asio.hpp>
#include<boost/bind.hpp>
using namespace std;
using namespace boost::asio;
unsigned char data[40];
int main(int argc,char **argv)
{
float *speed = 0;
unsigned char buff_to_float[4] = {0};
ros::init(argc,argv,"serial_recv");
ros::NodeHandle n;
io_service iosev;
serial_port sp(iosev,"/dev/ttyUSB1");
sp.set_option(serial_port::baud_rate(115200));
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));
ros::Rate loop_rate(10);
while(ros::ok)
{
unsigned char head[2];
char tmp;
read(sp,buffer(head,1));
sprintf(&tmp,"%s",head);
if (tmp == 0x24)
{
printf("read head\r\n");
read(sp,buffer(data,24));
for(int i = 0;i < 24 ;i++)
{
printf("%x",data[i]);
}
printf("\r\n");
for(int i = 0;i < 4 ;i++)
{
printf("|%x",data[i]);
buff_to_float[i] = data[i];
}
speed = (float*)buff_to_float;
printf("speed is :%f",*speed);
printf("\r\n");
}
ros::spinOnce();
}
iosev.run();
return 0;
}