不同python版本在使用pyserial的一些使用区别
笔者在用pyserial打开虚拟串口时出现了一些问题,最后发现是python版本的问题,现将几种情况总结如下
1.实际串口
#查询串口号
geek@geek-Lenovo-G40-70:~/Documents/RaspberryPi$ dmesg | grep ttyUSB*
[ 1642.241139] usb 2-2: ch341-uart converter now attached to ttyUSB0
如果用的是python2.7.9的话要这样写:
[python2.7.9]
#!/usr/bin/python
import os,serial
#打开串口
ser=serial.Serial("/dev/ttyUSB0")
#写入
ser.write("nani?")
运行正常不报错。
如果用的是python3.5的话要这样写:
[python3.5]
#!/usr/bin/python3
import os,serial
#打开串口
ser=serial.Serial("/dev/ttyUSB0")
#写入.注意要加encode(),否则报错
ser.write("nani?".encode())
运行正常不报错。
如果不加encode()的话会报错如下:
Traceback (most recent call last):File "testSingleCom.py", line 8, in <module>ser.write("nani?")File "/home/geek/.local/lib/python3.5/site-packages/serial/serialposix.py", line 529, in writed = to_bytes(data)File "/home/geek/.local/lib/python3.5/site-packages/serial/serialutil.py", line 63, in to_bytesraise TypeError('unicode strings are not supported, please encode to bytes: {!r}'.format(seq))
TypeError: unicode strings are not supported, please encode to bytes: 'nani?'
2.虚拟串口
如果是python2.7.9的话要这样写:
[python]
import os, pty, serial
#创建一个虚拟串口
master, slave = pty.openpty()
s_name = os.ttyname(slave)
#连接该虚拟串口
ser = serial.Serial(s_name, rtscts=True,dsrdtr=True)
#写入
ser.write("nani?")
运行正常不报错。
如果写成ser = serial.Serial(s_name),则会报错
Traceback (most recent call last):File "testSingleCom.py", line 4, in <module>ser = serial.Serial(s_name )File "/usr/lib/python2.7/dist-packages/serial/serialutil.py", line 180, in __init__self.open()File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 311, in openself._update_dtr_state()File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 605, in _update_dtr_statefcntl.ioctl(self.fd, TIOCMBIS, TIOCM_DTR_str)
IOError: [Errno 22] Invalid argument
如果是python3.5的话要这样写:
import os, pty, serial
#创建一个虚拟串口
master, slave = pty.openpty()
s_name = os.ttyname(slave)
#连接该虚拟串口
ser = serial.Serial(s_name)
#或者这样也行
#ser = serial.Serial(s_name, rtscts=True,dsrdtr=True)
#写入
ser.write("nani?".encode())
运行正常不报错。
总结:
1.python3.5的write函数要encode,pyhon2.7不用
2.python2.7如果要连接虚拟串口,要加rtscts=True,dsrdtr=True
具体原理笔者也不是很清楚,望前辈赐教
不同python版本在使用pyserial的一些使用区别相关推荐
- 多版本python共存,安装三方库到指定python版本 多Python版本和虚拟环境
多个Python版本:在同一台机器上安装不同的Python,例如2.7和3.4. 虚拟环境:独立的环境,既可以同时安装特定版本的Python,也可以安装任何特定于项目的软件包,而不会影响任何其他项目. ...
- 适合win7的python版本_windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2...
windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2 1.官网下载python3.6.2 https://www.python.org/ftp/ ...
- linux python版本_linux下更新Python版本并修改默认版本
linux下更新Python版本并修改默认版本,有需要的朋友可以参考下. 很多情况下拿到的服务器python版本很低,需要自己动手更改默认python版本 1.从官网下载python安装包(这个版本可 ...
- 如何管理多个Python版本和虚拟环境
Addition January 2019: If you are coming back to this blog after upgrading to macOS Mojave please se ...
- Python版本的数据结构书_《用Python解决数据结构与算法问题》
源于经典 数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少, 其中比较著名的一本 problem-solving-with-algorithm ...
- ubuntu升级python_ubuntu升级python版本
运行发现错误: AttributeError: 'module' object has no attribute 'OrderedDict' google发现是因为python版本老了的原因(pyth ...
- linux中更新python_linux下面升级 Python版本并修改yum属性信息
最近需要在linux下使用python,故需要升级一下python版本,上网查询了一下相关资料,更新了一下linux下面的python环境,记录如下: linux下面升级 Python版本并修改yum ...
- 如何确定python对应电脑版本_查看Anaconda版本、Anaconda和python版本对应关系和快速下载...
官网 查看Anaconda版本 (C:\ProgramData\Anaconda3) C:\Users\Administrator>conda -V conda 4.3.30 Anaconda和 ...
- 当前主要使用的python版本_如何获取当前使用的Python版本信息?(代码示例)
本篇文章主要给大家介绍如何获取当前Python版本,希望对需要的朋友有所帮助! 版本信息: 包含版本号的五个组件的元组:major,minor,micro,releaselevel和serial.除r ...
最新文章
- JavaScript 工作原理之十一-渲染引擎及性能优化小技巧
- [Modules]PrestaShop插件 模块 – 产品推荐模块 随机展示推荐产品
- java域的控制修饰符可分为_Java中的类和方法的修饰符
- 前端学习(3239):react生命周期setstate流程
- MySQL按时间查找
- 对象输出流 ObjectOutputStream java
- 3月国内网站流量:腾讯夺第二 360安全中心降至第三
- 保存一个 Python 对象,之后使用时直接读取
- c++语言将任意进制转化10进制,C++ 基础编程之十进制转换为任意进制及操作符重载...
- Objective-C JSON字符串解析
- NeoKylin7配置DM8数据库实例
- 自签名证书和私有CA签名的证书的区别
- 杨建:网站加速--实例分析篇
- Python工程师必备哪些技能 学习路线是什么
- 怎么在视频画面添加图片的方法
- Fire (poj 2152 树形dp)
- ArchSummit讲师专访:EMC研究院资深研究员陶隽谈实时数据分析
- 那些牛逼互联网公司里技术团队的博客
- HAL(Hardware Abstract Layer)硬件抽象层工作原理
- Flutter 项目 app迭代更新
热门文章
- 产品生命周期专业术语积累
- photoshop2021正式版上线,photoshop 2021 mac
- mysql全文查询中文_MySQL-中文全文检索
- c语言书本答案揭安全,c语言书本练习答案.docx
- 微信为什么不支持android4,解决android4.4.4手机不能正常调起微信支付问题
- 苹果邮箱怎么登录qq邮箱_gmail邮箱登录官网方法
- python参数化建模加工图_基于Python的ABAQUS层压板参数化建模
- 【Java】 # 使用java调用MySQL的函数、存储过程
- java final成员变量吗_阳光沙滩博客-为什么Java匿名内部内使用局部变量需要加final?而访问成员变量却不用加final呢?...
- Three dynamic_sea实例