TX1串口通信测试
使用J17串口,接口如下图所示:
将TX与RX用一根杜邦线连接。
在ubuntu下安装cutecom
sudo apt-get install cutecom
打开cutecom
sudo cutecom
① 修改端口号为“/dev/ttyTHS2”
② 点击open device
③ 文本输入区,在该区域输入想要发送的内容,例如“123”,输入完成之后回车
④ 历史文本输入:在该区域可以查看到之前发送的内容
⑤ 数据接收区:接收到的数据在此处显示
如果硬件连接和软件配置都没有问题,则我们发送的内容③ 同时可以在⑤ 接受到。
ROS串口发送测试
在ROS工作空间下创建功能包,例如我的空间为e_work,则
cd ~/e_work/src
catkin_create_pkg serial_port std_msgs rospy roscpp serial
编译工作空间
cd ..
catkin_make
在编译的过程中报错如下
输入以下指令安装
sudo apt-get install ros-noetic-serial
noetic为自己安装的ROS版本。
在功能包中编写串口程序文件
cd src/serial_port/src/
touch send.cpp
gedit send.cpp
在send.cpp文件中写入以下内容:
#include "ros/ros.h"
#include "serial/serial.h"
#include "string"
serial::Serial ser;
int main(int argc,char** argv)
{
ros::init(argc,argv,"send");
ros::NodeHandle n;
std::string serial_port_;
int baudrate_;
n.param<std::string>("serial_port",serial_port_,"/dev/ttyTHS2");
n.param<int>("baudrate",baudrate_,115200);
ros::Rate loop(1);
try
{
ser.setPort(serial_port_);
ser.setBaudrate(baudrate_);
serial::Timeout to = serial::Timeout::simpleTimeout(1000);//超时等待
ser.setTimeout(to);
ser.open();
}
catch(serial::IOException& e)
{
ROS_ERROR_STREAM("Unable to open port!!!");
return -1;
}
if(ser.isOpen())
{
ROS_INFO_STREAM("Serial Port initialized...");
}
else{
ROS_INFO_STREAM("initialization failed!!!");
return -1;
}
ROS_INFO("ready");
while(ros::ok())
{
ser.write("Send data\n");
loop.sleep();
}
return 0;
}
在该功能包的CmakeList.txt文件中添加可执行文件:
在~/e_work/src/serial_port/src目录下打开 CmakeList.txt 添加以下内容
add_executable(send src/send.cpp)
target_link_libraries(send
${catkin_LIBRARIES}
)
执行以下操作编译并运行
cd ~/e_work
catkin_make
source ~/e_work/devel/setup.bash
roscore
打开一个新终端,运行节点
rosrun serial_port send
一切正常的话,可以在cutecom中看到一直以一定频率接受到数据“Send data”