Linux下串口操作
- 串口位置:/dev/tty**
在Linux系统中,串口设备是通过串口终端设备文件来访问的,也就是通过访问/dev/ttyS0、/dev/ttyS1、/dev/ttyS2、/dev/ttyS3 、/dev/ttyUSB* 这是USB转串口。这些设备文件实现对串口的访问。
ls命令:
ls -l /dev/tty*查看有哪些设备连接在你的电脑上:
lsusb产看串口个数以及对应的tty:
dmesg | grep ttyS*

~~~
我使用了一个usb扩展器,这边可以看到,被连接在ttyUSB0上的就是我的usb扩展器,我在上面连接了3个外接设备,都是被连接在ttyUSB0上。
如何绑定设备到具体的usb串口
udev 是通过内核产生设备名增加别名的方式来达到 不管设备连接的顺序而维持一个统一的设备名。内核通常会产生自定义的设备名 如sda1 sdb1等
,但是udev可以通过设备的其他信息如总线 ,生产商等不同来区分不同的硬件设备。在/etc的 目录下。
例如 :ubuntu内核中,产生sda 设备名,可以通过制定 udev规则,让udev 除了产生/dev/sda/ 设备文件外, 另外创建 一个符号链接叫 /dev/name ,这样在ros串口处理的程序中,就 可以使用 产生的新的 设备名。
通过lsusb 命令可以查看到所有外接usb的接口设备的描述列表,可以得到id product和id VENDOR的数值,来进行后续的绑定。 ls /dev 可以查看所有 外接串口设备的名字列表。
首先 ,所有制定的udev 规则最终 会在 /etc/ udev /rule.d 这个文件夹下面 。
通过芯片的特定码,来产生软链接别名
可以一个脚本如下:
echo 'KERNEL=="ttyUSB*", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="7523", MODE:="0666", GROUP:="dialout", SYMLINK+="dashgo"' >/etc/udev/rules.d/ch34x.rules
绑定 1a86 7523 的串口设备, 会在/etc/udev/rule.d 下 产生 相应的 规则文件,ttyUSB产生新的别名即 dashgo。
使修改生效
sudo udevadm trigger
察看绑定是否成功
ls -l /dev/
看看里面是否存在一个叫做dashgo的硬件
如果有的话,那么ros中通信协议的时候硬件名称就可以写上dashgo来代替ttyUSB0等等。
如果想要打开串口时不需要root权限,创建文件/etc/udev/rules.d/70-ttyusb.rules,写入:
KERNEL=="ttyUSB[0-9]*",MODE="0666"
- 查看串口的驱动信息
cat /proc/tty/driver/serial
Linux下串口操作的更多相关文章
- Linux下串口操作之数据拼接
串口操作中,特别以非阻塞的方式读取和发送数据,做好进程之间的同步很重要.有时我们会发现这样一个问题,在进行read操作时,一次read不能获得一个完整的数据帧,这就好比你买了一个电脑,送货的先把显示器 ...
- Linux下串口编程入门
简介: Linux操作系统从一开始就对串行口提供了很好的支持,本文就Linux下的串行口通讯编程进行简单的介绍. 串口简介 串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用 ...
- linux下串口通信与管理
linux下的串口与windows有一些区别,下面将介绍一下linux下串口通信管理 查看是否支持USB串口: #lsmod | grep usbserial 如果没有信息:sudo apt-get ...
- Linux下串口編程遇到的接收数据错误及原因(0x0d,0x11接收错误)
摘要:Linux下串口编程遇到的接收数据错误及原因 来源:https://dotblogs.com.tw/k/2012/07/24/73572 近日在调试串口的时候发现,另一设备向我ARM板的串口发送 ...
- linux下串口的阻塞和非阻塞操作
有两个可以进行控制串口阻塞性(同时控制read和write):一个是在打开串口的时候,open函数是否带O_NDELAY:第二个是可以在打开串口之后通过fcntl()函数进行控制. 阻塞的定义: 对于 ...
- Linux下串口编制【转】
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用.常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统.调制解调 ...
- Linux下串口编程【转】
本文转载自:http://blog.csdn.net/w282529350/article/details/7378388 /************声明:本人只是见到这篇文章对我帮助很大才转载的,但 ...
- Linux下串口配置初步探寻
一.在struct termios结构体中,对串口进行基本配置(如波特率设置,校验位和停止位设置 等). (一): struct termios //串口的设置主要是设置struct termio ...
- liunx学习(一):linux下目录操作大全
Linux C函数之文件及目录函数(全):http://blog.sina.com.cn/s/blog_695e489c01013ldd.html linux目录操作发:http://www.cnbl ...
随机推荐
- SQL Server 数据库启动过程(用户数据库加载过程的疑难杂症)
前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程, ...
- BJFU-216-基于链式存储结构的图书信息表的修改
#include<stdio.h> #include<stdlib.h> #define MAX 100 typedef struct Book{ double no; cha ...
- 微信小程序获取微信绑定的手机号
怎么获取微信绑定手机号呢?我们授权登录的时候,我们只能获取微信登录人员的头像,昵称,性别之类的,而手机号需要二次授权才可以,那么获取手机号都需要哪些条件呢?来看官方文档 获取手机号 获取微信用户绑定的 ...
- CKEditor图片上传问题(默认安装情况下编辑器无法处理图片),通过Base64编码字符串解决
准备做一个文章内容网站,网页编辑器采用CKEditor,第一次用,默认安装情况下,图片无法插入,提示没有定义上传适配器(adapter),错误码提示如下: 根据提示,在官网看到有两种途径:一使用CKE ...
- CentOS7安装Grafana(Yum)
一.概述 Grafana是一个跨平台的开源的分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知. 其特点: 丰富的可视化显示插件,包括热图.折线图.饼图,表格等等. 多数据源,支持 ...
- python_并行与并发、多线程
问题一: 计算机是如何执行程序指令的? 问题二: 计算机如何实现并发的? 轮询调度实现并发执行 程序1-8轮询完成,才再CPU上运行 问题三: 真正的并行需要依赖什么? 并行需要的核心条件 多进程实现 ...
- CentOS7安装MySQL(完整版)
在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB. 1 下载并安装MySQL官方的 Yum Re ...
- ComPtr的介绍以及使用
ComPtr是为COM而设计的智能指针.它支持WindowsRT,也支持传统Win32.相比ATL里的CComPtr类,它有了一些提升. ComPtr包含在Windows 8.x SDK and Wi ...
- 有关ajax跨域问题
写在前面 JQuery ajax支持get方式的跨域,采用了jsonp来完成.完成跨域请求的有两种方式实现.一种是使用Jquery ajax最底层的Api实现跨域的请求,而另一种则是JQuery aj ...
- C语言知识点拾遗
sleep() abort() fflush() getimeofday() sigaction() Linux 进程学习(四)------ sigaction 函数 malloc() 如何实现一个m ...