linux 串口 操作 Linux怎么学
linux系统如何设置串口权限
Linux如何设置串口永久权限,下面就来给大家讲解一下!
方法讲解
1.错误状态
在使用串口进行通信时,经常需要使用指令来赋予用户读写的权限
$ sudo chmod 777/dev/ttyUSB0
但这样的权限是一次性的
每次重启或者关闭计算机,插拔USB串口都无效了,炸裂!
2.解决办法
查看串口 ttyUSB0
$ ls-l/dev/ttyUSB0
可以看到所属用户组为dialout,root用户才具有操作权限
接下来查看当前用户名
$ whoami
然后将当前用户加入到 dialout用户组,使其具有操作串口 ttyUSB0的权限
$ sudo usermod-aG dialout jove
最后重启系统即可实现永久串口读写权限,搞定收工!
以上就是Linux设置串口永久权限的方法了,赶紧试试吧。
Linux C 配置串口
配置串口需要包含头文件
其中最核心的配置结构体为:
如何获取该结构呢?我们操作串口跟操作文件一样,也是调用 open()函数来打开串口,
这样我们就能够得到一个文件描述符 fd,然后就可以调用 tcgetattr()函数来获取上述配置结构体了。
Linux串口默认的配置为:波特率 9600,数据位 8位,无奇偶校验,停止位 1位,无 CTS/RTS。
以下介绍一些常用的配置项:波特率、奇偶校验、数据位、停止位、硬件控制流。
相关接口:
Linux将串口的波特率分为了输入波特率和输出波特率,不过最常用的场景是将两者设置成一样。
cfgetispeed()函数获取输入波特率, cfgetospeed()函数获取输出波特率。 cfsetispeed()函数设置输入波特率, cfsetospeed()函数用于设置输出波特率,当然 cfsetspeed()函数扩展为同时设置输入和输出波特率。
上述接口中的 speed_t是一系列波特率的标志位,例如常用的 115200波特率就为 B115200,参考下述选项:
设置奇偶校验位可以通过修改 termios结构体中的 c_cflag成员来实现,若无校验,则将 PARENB位设为 0;若有校验,则 PARENB为 1。之后再根据 PARODD来区分奇偶校验, PARODD为 1表示奇校验, PARODD为 0表示偶校验。例如设置无奇偶校验位:
设置数据位可以通过修改 termios结构体中的 c_cflag成员来实现,CS5、CS6、CS7和 CS8分别代表数据位 5、6、7和 8。不过在设置数据位之前,需要先用 CSIZE来做屏蔽字段,清楚这几个标志位,例如设置数据位为 8位:
设置停止位可以通过修改 termios结构体中的 c_cflag成员来实现, CSTOPB位为 1表示 2位停止位, CSTOPB位为 0标志 1位停止位。例如设置停止位为 1位:
设置硬件控制流可以通过修改 termios结构体中的 c_cflag成员来实现, CRTSCTS为 1表示使用硬件控制流,为 0表示不使用硬件控制流。例如使能硬件控制流:
当然,最后还需要用 tcflush()抛弃存储在 fd里的未接收的数据。
再利用接口 tcsetattr()函数将配置信息写入文件描述符 fd:
这样整个串口最常用的用法就配置完成了。
具体的配置使用可以参考我的项目 HCI-Middleware里的 hci_transport_uart_linux.c文件。
参考:
如何在Linux中设置串口权限
Linux如何设置串口永久权限,下面就来给大家讲解一下!
方法讲解
1.错误状态
在使用串口进行通信时,经常需要使用指令来赋予用户读写的权限
$ sudo chmod 777/dev/ttyUSB0
但这样的权限是一次性的
每次重启或者关闭计算机,插拔USB串口都无效了,炸裂!
2.解决办法
查看串口 ttyUSB0
$ ls-l/dev/ttyUSB0
可以看到所属用户组为dialout,root用户才具有操作权限
接下来查看当前用户名
$ whoami
然后将当前用户加入到 dialout用户组,使其具有操作串口 ttyUSB0的权限
$ sudo usermod-aG dialout jove
最后重启系统即可实现永久串口读写权限,搞定收工!
以上就是Linux设置串口永久权限的方法了,赶紧试试吧。