Linux下的Ubuntu16.04系统配置并使用USB转串口(串口转USB),最终使用python的serial和pyserial包实现串口的打开并读取数据
1. USB转串口的配置
1.1 首先使用 lsmod | grep usbserial 指令查看系统是否包含USB转串口驱动,如果没有信息输出不代表没有驱动,我这边就是没有信息输出,且看后面分析;
如果有的话,如下图所示。
1.2 此时再输入 dmesg | tail 指令查看系统最近时刻的消息,没什么用处,只是为了和后面对比。
1.3 此时再输入 lsusb 指令查看USB相关的接口,也是为了和后面进行对比。
1.4 现在,我们将USB转串口的USB端插入电脑,使用 lsusb 指令可以看到多了一行,记住该ID,后面有用,如下图
1.5 接着,我们还是使用 dmesg | tail 查看系统最近时刻的信息,发现新的USB设备,如下图
1.6 同时,我们可以使用 ls /dev/ttyUSB* 指令查看系统当前是否有USB转串口设备,我现在没有,如下图
1.7 最后,我们使用 sudo modprobe usbserial vendor=0x067b product=0x23c3 指令载入该USB转串口设备,载入后再使用 ls /dev/ttyUSB* 和 lsmod | grep usbserial 和 dmesg | tail 三个指令可发现我们有了usbserial驱动,并且USB转串口名是 /dev/ttyUSB0,而且usb串口的转换器也有了。
1.8 如果经过上面的步骤,没有识别到串口转USB设备,那可能得自己手动安装串口转USB的驱动了,一般来说Ubuntu系统都是集成好的。
2. 串口的使用并读取数据
2.1 串口没有操作权限,提示:could not open port, Permission denied,如下图。
这个是因为串口设备的属于dialout用户组,所以要操作tty相关设备,需要成为dialout用户。首先使用 groups 你自己电脑的用户名 指令查看用户是不是位于dialout组别,如下;如果不是,那么执行 sudo gpasswd --add 你电脑的用户名 dialout 指令,将用户添加至dialout组中,如下图;执行结束后,需要注销重新登录。
3. 使用python的serial和pyserial包读取串口数据
3.1 在成功打开串口,读取串口数据之前,还遇到了一个问题,报错:fcntl.ioctl(self.fd, TIOCMBIS, TIOCM_DTR_str) IOError: [Errno 22] Invalid argument;如下图。
3.2 原本打开串口的参数是串口号,波特率以及超时时间,现在加上rtscts和dsrdtr两个参数即可,如下图。
# 原先串口类的参数 ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=3)# 修改后的串口类参数 ser = serial.Serial('/dev/ttyUSB0', 115200, timeout=3, rtscts=True, dsrdtr=True)3.3 现在可以运行自己的python程序,打开串口,读取串口数据了。
# 需要导入serial和pyserial包,一般自带,没有的话,可以使用pip安装 import serial import serial.tools.list_ports# 列出可用的串口 port_list = list(serial.tools.list_ports.comports()) if len(port_list) == 0 :print('no port can use !') else:port = port_list[0][0]bps = 115200 timeout = 3ser = serial.Serial(port, bps, timeout=timeout) # 打开串口bytes_data = ser.readline() # readline函数读到换行符才结束,不然一直等待print(bytes_data)============================= 备用 =============================== 备用1. 检测所使用的字符集 import chardet print(chardet.detect(bytes_data))备用2. 对字符串进行编码,python2默认是ascii,python3默认是utf-8 str(bytes_data, encoding='ascii')
总结
以上是生活随笔为你收集整理的Linux下的Ubuntu16.04系统配置并使用USB转串口(串口转USB),最终使用python的serial和pyserial包实现串口的打开并读取数据的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Resource interpreted
- 下一篇: 初识Linux——菜鸟篇