Python串口操作报错:from: can‘t read /var/mail/serial

1. 报错描述

使用Ubuntu+Python3 外接USB转TTL,通过串口发送数据。运行Python时报错如下:

from: can't read /var/mail/serial

或者:

from serial import Serial ModuleNotFoundError: No module named 'serial'

通常是找不到串口,或者串口没有权限

2. 解决方法

首先查看串口:

ls /sys/class/tty/ttyUSB* -l

得到:

../../devices/pci0000:00/0000:00:14.0/usb1/1-11/1-11:1.0/ttyUSB0/tty/ttyUSB0

可以看到串口的名字是ttyUSB0

2.1 增加串口权限

在终端中输入:

sudo chmod +777 ttyUSB0

2.2 手动指定串口

打开你的Python代码,

设置如下:

ser = Serial('/dev/ttyUSB0',baudrate=115200,parity='N',stopbits=1)
#分别指定串口、波特率、无奇偶校验、截止位为1

3. 原因分析

根据盛齐师兄的指导,linux把各种硬件都看做一个一个的文件,串口也是被看做了一个叫“ttyUSB0”的文件,但是,系统没有给文件读写的权限,所以我们要么给它增加权限,要么在root用户下运行,这里+777对所有用户(包括root、组、其他用户)开放了所有的权限(读写、修改、执行等)。

为了验证上述分析,我们在/dev文件夹下使用ls命令可以查看所有的权限、所有者、修改时间、设备名。在终端输入如下:

cd /dev/
ls -l

得到的结果其中一行是:

crwxrwxrwx      1 root dialout  188,     0 12月 7 15:10       ttyUSB0

从左到右依次是:权限      别名   所有者            时间         硬件名字

其中权限分别记录了对于root、组、其他用户的读写、修改、运行权限,这里的字母全写上了,说明权限完全开放了。与前面描述相符。

 而手动指定串口,是因为通常我们在打开串口时选择自动查找串口,有可能自动找到的并不是我们想要的那个串口,而前面我们已经查到了串口的名字,这里不妨手工指定串口。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值