ROS下进行串口通讯
文章目录
- 前言
- 一、安装串口功能包
- 二、串口接受程序
- 三 、查看串口号
前言
在使用工控机时,经常需要和其他主控进行信息交流,串口通讯作为使用最为广泛的形式,因此,了解如何在ros下进行串口的接发数据极为重要。
硬件条件:ubuntu18.04 安装ROS系统
一、安装串口功能包
sudo apt-get install ros-melodic-serial
二、串口接受程序
#include <iostream>
#include <ros/ros.h>
#include <serial/serial.h>
using namespace std;//发送和接受数组
unsigned char senddata[5] = {0x01, 0x02, 0x03, 0x04,0x05};
unsigned char recdata[100] = {0};
int main(int argc, char** argv) {//初始化ROS节点ros::init(argc,argv,"serial_port");ros::NodeHandle n;//定义串口对象serial::Serial sp;try{sp.setPort("/dev/ttyUSB0");sp.setBaudrate(115200);sp.setBytesize(serial::bytesize_t::eightbits);sp.setStopbits(serial::stopbits_t::stopbits_one);sp.setFlowcontrol(serial::flowcontrol_t::flowcontrol_none);serial::Timeout to=serial::Timeout::simpleTimeout(1000);sp.setTimeout(to);sp.open();}catch(serial::IOException& e){ROS_ERROR_STREAM("Unable to open port.");return -1;}if(sp.isOpen()){ROS_INFO_STREAM("Com is initialized");}else{return -1;}ros::Rate loop_rate(1);while(ros::ok()){//发送数据sp.write(senddata,5);//获取缓存区数据size_t n=sp.available();if(n != 0){n = sp.read(recdata, n);for(int i = 0; i < n; i++){//16进制显示接受到的数据cout << std::hex << (recdata[i] & 0xff) << " ";}cout << endl;}// 以1HZ的频率loop_rate.sleep();}return 0;
}
三 、查看串口号
1.查看当前终端串口号
ls /dev/tty*
2.插入临时使用的外设串口
3.再次查看终端串口号
ls /dev/tty*
,看看此时多了那个串口号,就是接入的外设
4.假设该设备号为/dev/ttyUSB0,给设备赋予可读写权限
sudo chmod 777 /dev/ttyUSB0
ROS下进行串口通讯相关推荐
- 中断方式下进行串口通讯的正确方法
转载:http://bbs.ednchina.com/BLOG_ARTICLE_277752.HTM 中断方式下进行串口通讯的正确方法 一般普遍的把串口通讯分为查询方式和中断方式.查询方式比较容易理解 ...
- 关于嵌入式linux下的串口通讯问题---回车、换行、缓冲
嵌入式Linux串口通讯测试问题: 经过实验,从Linux(PC)通过串口向嵌入式Linux开发板发送数据时,串口初始化完毕后遇到回车(0x0d)或换行(0x0a)才开始从串口接收数据,回车或换行 ...
- ROS下使用串口发送数据
ROS下使用串口发送数据 #include <stdio.h> #include <string.h> #include <ros/ros.h> #include ...
- linux下实现串口通讯
1.关键结构体 (1)struct termios { unsigned short c_iflag; /* 输入模式标志*/ ...
- ROS环境下的串口通讯
目录 1.前言 2.内容 2.1 准备工作 2.1.1 连接外部USB设备 2.1.2 串口调试工具的下载 2.1.3 serial库的安装 2.2 代码部分 2.2.1 编写发布节点 2.2.2 编 ...
- Cypress EZ-USB FX3 DMA模式下的串口通讯
由于公司设备升级后出了问题,需要对USB驱动进行修改,原本使用的是寄存器模式进行UART传输,但是由于FX3寄存器模式会出现长时间延时等待的问题,不得不对其传输模式进行修改.虽然赛普拉斯的EZ-USB ...
- linux 串口 换行十六制,关于嵌入式linux下的串口通讯问题---需增加回车/换行才能接收...
问题:在Linux应用层,直接从/dev/tty***使用read()函数读数据,无法读到,只有在数据末尾加上0a/0d才可以读到数据(这里是发送十六进制的数据,ASCLL码同理,增加回车才可以读到数 ...
- C——Linux下的串口编程
原 C--Linux下的串口编程 2017年06月06日 19:30:50 C_Aya 阅读数:11537 <span class="tags-box artic-tag-box&qu ...
- 乐鑫esp8266的串口通讯驱动源文件,nonos和rtos版本
代码地址如下: http://www.demodashi.com/demo/13650.html 文章目录 一.前言: 二.`esp8266`的串口分布情况: 三.`esp8266`的串口通讯时候,应 ...
最新文章
- pytorch中arange()函数用法
- 管理口地址 ibm_WAN口有IP地址上不了网如何解决 WAN口有IP地址上不了网解决方法【详解】...
- lnmp架构搭建—源码编译(nginx、mysql、php)
- freeeim源码一个个投篮的命中
- VS2010 工具箱组件添加重复
- nuxtjs+express+vue2+vuex搭建的服务端渲染(SSR)个人网站项目
- go替代python运维_粗读web框架之go gin和python django
- 3D滚动控件实现抽奖效果
- 天津大学仁爱学院哪个计算机专业2013山西理科录取分数,天津大学仁爱学院2020年录取分数线(附2017-2020年分数线)...
- pwd python 安装 模块_在windows上安装pwd模块时出错
- 【基于python+Django的物品协同过滤音乐推荐系统-哔哩哔哩】 https://b23.tv/V2zN54R
- 秃头警告之——使用mondo rescue备份linux系统ISO镜像的踩坑历程
- 帝国cms支付系统的漏单风险
- 浅谈Web App前端设计原则
- C/C++ struct定义
- 3.JavaScript核心BOM操作学习(界面交互功能)——JavaScript获取自定义的方法,开始进行节点操作
- 观其关键字排名查询工具_seo常用工具统计
- mtk平台lcd驱动移植
- 微服务实战|微服务网关Zuul入门与实战
- 亚马逊、微软云和二度云 国外三大云服务商优劣的那些事!
热门文章
- Linux数据备份与恢复
- [转贴]中国电视剧,除了“山寨”还能做什么
- python之路——初识面向对象
- oss批量上传工具_使用oss批量上传图片
- 解决Springboot 项目启动时,出现大量CONDITIONS EVALUATION REPORT的问题
- 十分钟开发物联网:智慧农业大棚环境监测(4G版)
- 一个MM的三国志10游戏经历
- fdisk时WARNING: Re-reading the partition table failed with error 16: 设备或资源忙 的问题解决方案
- zip压缩包解密神器,zip压缩包权限限制怎么解除?
- python_进程池以及线程池