Python的扩展接口[1] -> 串口通信
串口通信 / Serial Communication
1 串口简介 / Serial Introduction
串行接口(Serial Interface)简称串口,通常为COM接口,数据发送方式为一位一位地顺序传送,通信线路简单,一对传输线即可实现双向通信,适用于远距离且传输速度慢的通信。其中最常用的也是标准接口为RS-232,除此之外还有RS-422,RS-485等。
2 pyserial环境搭建
Pyserial的安装可以通过pip进行,直接在命令行输入下列命令进行安装,
pip install pyserial
3 pyserial基本用法
利用pyserial可以实现Python对串口的控制,其基本使用方式十分简单,主要为一下几步,
1. 利用Serial类传入配置参数,生成串口实例;
2. 利用串口实例的write()/read()方法消息的发送与接收。
Note: 关于Serial类,主要参数为端口和波特率,更多参数可查看源代码。
import serial ser = serial.Serial(port='com1', baudrate=9600)
print(ser.portstr) def serial_communi(ser, msg):
# n is the length of msg sent
n = ser.write(msg.encode())
print(n)
s = ser.read(n)
print(s)
4 read_until 方法的实现与扩展
在pyserial中,read_until 方法只能处理一个终止符,而当需要处理多个终止标志的时候,则需要重新定义一个新的方法,参考 pyserial 源代码中的 read_until 函数,其实现方式为:
- 每次读取一个字符,加入待返回字符串
- 根据终止符长度n,获取字符中后 n 位字符,检测是否为终止符
下面的代码供参考,
def _read_until(self):
line = ''
while True:
try:
c = self.read(1)
except (
AttributeError, TypeError, # COM Exception
ValueError, EOFError, # TELNET Exception
self._connection.OpenCloseException) as e:
# Above Exception happens when communication manually closed,
# if still should run, condition sleep here,
# else return None to exit thread
if self.should_run:
self._cond_wait(self._recv_cond)
continue
else:
return None
if c:
line += c
self._result.put(c)
tokens = [self._term_token, self._abort_token, self._cr_token, self._lf_token]
for token in tokens:
if not line[-len(token):] == token:
continue
if token == self._cr_token or token == self._lf_token:
return line
if token == self._term_token:
self.waiter_wake_up()
self.termi_signal(True)
self._result.save(strip=self._term_token)
self.logger.debug("TERMINATE %s" % self._term_token)
return line
if token == self._abort_token:
# TODO: handle this abort token encountered
self.logger.debug("ABORT %s" % self._abort_token)
pass
# When timeout will enter this else
# else:
# return line
Python的扩展接口[1] -> 串口通信的更多相关文章
- Python的扩展接口[0] -> VISA仪器控制
VISA仪器控制 / VISA Instrument Control 1 VISA简介 / VISA Introduction VISA(Virtual Instrument Software Arc ...
- Python的扩展接口[2] -> 动态链接库DLL[0] -> 动态链接库及辅助工具
动态链接库 / Dynamic Link Library 目录 动态链接库简介 函数封装DLL 组件对象模型COM 如何判断.dll文件是COM还是DLL 辅助工具 1 动态链接库简介 / DLL I ...
- Python的扩展接口[3] -> Matlab引擎 -> 使用 Python 调用 Matlab 程序
Python - Matlab 目录 Python-Matlab 引擎 Python-Matlab 数组 Python-Matlab 基本操作 Python-Matlab 调用 m 文件 Matlab ...
- Python的扩展接口[2] -> 动态链接库DLL[1] -> 组件对象模型 COM 的 Python 调用
组件对象模型 COM 的 Python 调用 关于COM的基本概念,可参考组件对象模型 COM的内容,下面主要介绍两种使用 Python 调用 COM 组件的方法. 1 使用 win32com 1.1 ...
- Unity串口通信
一.串口简介 串行接口(串口)通常指COM接口,是采用串行通信方式的扩展接口.串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接 ...
- 基于Arduino和python的串口通信和上位机控制
引言 经常的时候我们要实现两个代码之间的通信,比如说两个不同不同人写的代码要对接,例如将python指令控制Arduino控件的开关,此处使用串口通信是非常方便的,下面笔者将结合自己踩过的坑来讲述下自 ...
- Python的串口通信(pyserial)
串口通信是指外设和计算机间,通过数据信号线 .地线.控制线等,按位进行传输数据的一种通讯方式.这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低.串口是计算机上一种非 ...
- Python编程实现USB转RS485串口通信
---作者吴疆,未经允许,严禁转载,违权必究--- ---欢迎指正,需要源码和文件可站内私信联系--- -----------点击此处链接至博客园原文----------- 功能说明:Python编程 ...
- [python] 3 、基于串口通信的嵌入式设备上位机自动测试程序框架(简陋框架)
星期一, 20. 八月 2018 01:53上午 - beautifulzzzz 1.前言 做类似zigbee.ble mesh...无线网络节点性能测试的时候,手动操作然后看表象往往很难找出真正的原 ...
随机推荐
- USACO Section2.1 Ordered Fractions 解题报告
frac1解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...
- Caliburn.Micro 消息附加多事件
<Button Content="Let's Talk"cal:Message.Attach="[Event MouseEnter] = [Action Talk( ...
- asp.net 身份验证-Form 身份验证
一. .net身份验证简介 1.身份验证就是检测用户是否登录及所访问的资源是否有权限.当我们在访问一个受保护网络资源时,往往需要输入用户名.密码信息,或通过其他证书.第三方身份验证等方式.验证(Aut ...
- python的inspect模块
一.type and members 1. inspect.getmembers(object[, predicate]) 第二个参数通常可以根据需要调用如下16个方法: 返回值为object的所有成 ...
- fiddler如何抓取夜神模拟器上的包
一.设置Fiddler代理 1.点击Tools-Fiddler Options进入Fiddler Options页面 2.点击Connections,将Fiddler listens on port设 ...
- wxPython 安装 及参考文档
三种操作平台上的安装方法 1.windows 和 mac pip install -U wxPython 2.linux pip install -U -f https://extras.wxpyth ...
- python pyinstaller 打包程序报错解决
python打包exe,各种入坑 一.安装PyInstaller 1.安装pywin32 pip命令安装:pip install pywin32(推荐) 2.安装Pyinstaller pip命令安装 ...
- Limeng:Individual Project: Word frequency program -BUAA Advanced Software Engineering
11061190-李孟 Implement a console application to tally the frequency of words under a directory (2 mod ...
- C++ 虚函数的内存分配
1.无继承的普通类: 在有虚函数的情况下类会为其增加一个隐藏的成员,虚函数表指针,指向一个虚函数表,虚函数表里面就是类的各个虚函数的地址了.那么,虚函数表指针是以什么模型加入到类里面的,虚函数表里 ...
- javascript replace 替换全部字符
$("#pageNote").html($("#note3").val().replace(/ /g, "").replace(/<b ...