Python串口编程
python的串口网上有很多例子,这里了只是把认为好的整理到一起。
首先,应该安装serial模块,还能开始后续的操作。我用的python2.6,serial模块可以在这里下载安装serial模块下载
1,字符串的发送接收
短接串口的2、3脚,创建一个文本,如:
- import serial
- t = serial.Serial('com12',9600)
- n = t.write('you are my world')
- print t.portstr
- print n
- str = t.read(n)
- print str
- import serial
- t = serial.Serial('com12',9600)
- n = t.write('you are my world')
- print t.portstr
- print n
- str = t.read(n)
- print str
import serial
t = serial.Serial('com12',9600)
n = t.write('you are my world')
print t.portstr
print n
str = t.read(n)
print str
或者你可以稍微添加几句,变成你任意输入后打印出你的键入信息。
- import serial
- t = serial.Serial('com12',9600)
- print t.portstr
- strInput = raw_input('enter some words:')
- n = t.write(strInput)
- print n
- str = t.read(n)
- print str
- import serial
- t = serial.Serial('com12',9600)
- print t.portstr
- strInput = raw_input('enter some words:')
- n = t.write(strInput)
- print n
- str = t.read(n)
- print str
import serial
t = serial.Serial('com12',9600)
print t.portstr
strInput = raw_input('enter some words:')
n = t.write(strInput)
print n
str = t.read(n)
print str
其中,read(value)方法的参数value为需要读取的字符长度。 如果想要全部读取,提供两个方法:
1)inWaiting::监测接收字符。 inWaitting返回接收字符串的长度值,然后把这个值赋给read做参数。
2)readall()::读取全部字符。
===================================================================================================================================
2,十六进制显示
十六进制显示的实质是把接收到的字符诸葛转换成其对应的ASCII码,然后将ASCII码值再转换成十六进制数显示出来,这样就可以显示特殊字符了。
在这里定义了一个函数,如hexShow(argv),代码如下:
- import serial
- def hexShow(argv):
- result = ''
- hLen = len(argv)
- for i in xrange(hLen):
- hvol = ord(argv[i])
- hhex = '%02x'%hvol
- result += hhex+' '
- print 'hexShow:',result
- t = serial.Serial('com12',9600)
- print t.portstr
- strInput = raw_input('enter some words:')
- n = t.write(strInput)
- print n
- str = t.read(n)
- print str
- hexShow(str)
- import serial
- def hexShow(argv):
- result = ''
- hLen = len(argv)
- for i in xrange(hLen):
- hvol = ord(argv[i])
- hhex = '%02x'%hvol
- result += hhex+' '
- print 'hexShow:',result
- t = serial.Serial('com12',9600)
- print t.portstr
- strInput = raw_input('enter some words:')
- n = t.write(strInput)
- print n
- str = t.read(n)
- print str
- hexShow(str)
import serial
def hexShow(argv):
result = ''
hLen = len(argv)
for i in xrange(hLen):
hvol = ord(argv[i])
hhex = '%02x'%hvol
result += hhex+' '
print 'hexShow:',result
t = serial.Serial('com12',9600)
print t.portstr
strInput = raw_input('enter some words:')
n = t.write(strInput)
print n
str = t.read(n)
print str
hexShow(str)
===================================================================================================================================
3,十六进制发送
十六进制发送实质是发送十六进制格式的字符串,如'\xaa','\x0b'。重点在于怎么样把一个字符串转换成十六进制的格式,有两个误区:
1)'\x'+'aa'是不可以,涉及到转义符反斜杠
2)'\\x'+'aa'和r'\x'+'aa'也不可以,这样的打印结果虽然是\xaa,但赋给变量的值却是'\\xaa'
这里用到decode函数,
- list='aabbccddee'
- hexer=list.decode("hex")
- print hexer
- list='aabbccddee'
- hexer=list.decode("hex")
- print hexer
list='aabbccddee'
hexer=list.decode("hex")
print hexer
需要注意一点,如果字符串list的长度为奇数,则decode会报错,可以按照实际情况,用字符串的切片操作,在字符串的开头或结尾加一个'0'
假如在串口助手以十六进制发送字符串"abc",那么你在python中则这样操作“self.l_serial.write(”\x61\x62\x63") ”
当然,还有另外一个方法:
- strSerial = "abc"
- strHex = binascii.b2a_hex(strSerial)
- #print strHex
- strhex = strHex.decode("hex")
- #print strhex
- self.l_serial.write(strhex);
- strSerial = "abc"
- strHex = binascii.b2a_hex(strSerial)
- #print strHex
- strhex = strHex.decode("hex")
- #print strhex
- self.l_serial.write(strhex);
strSerial = "abc"
strHex = binascii.b2a_hex(strSerial)
#print strHex
strhex = strHex.decode("hex")
#print strhex
self.l_serial.write(strhex);
同样可以达到相同目的。
那么,串口方面的就整理完了。
Python串口编程的更多相关文章
- raspi串口、python串口模块pyserial
一.安装 1.下载软件包pyserial-2.7.tar.gz 网址:https://pypi.python.org/pypi/pyserial 2.8uftp上传至/usr/local/src/ ...
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- python多线程编程
Python多线程编程中常用方法: 1.join()方法:如果一个线程或者在函数执行的过程中调用另一个线程,并且希望待其完成操作后才能执行,那么在调用线程的时就可以使用被调线程的join方法join( ...
- python 面向对象编程学习
1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...
- Python 网络编程(二)
Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...
- Python 网络编程(一)
Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- Python函数式编程:从入门到走火入魔
一行代码显示"爱心" >>> print]+(y*-)**-(x**(y*<= ,)]),-,-)]) Python函数式编程:从入门到走火入魔 # @fi ...
- python核心编程(第二版)习题
重新再看一遍python核心编程,把后面的习题都做一下.
- storysnail的Linux串口编程笔记
storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据Ge ...
随机推荐
- 项目中empty遇到的一个问题
搜索传参时,数据能获取到,搜索结果不是根据参数得出的,在定义搜索条件时因为empty引起的一个问题,键为0的值没有获取到, 记住:!empty 已经把0排除了
- Job类
当我们在写MapReduce程序的时候,通常,在main函数里,我们会像下面这样做.建立一个Job对象,设置它的JobName,然后配置输入输出路径,设置我们的Mapper类和Reducer类,设置I ...
- MFC 进度条控件
1.进度条 主要用来进行数据读写.文件拷贝和磁盘格式等操作时的工作进度提示情况,如安装程序等,伴随工作进度的进展,进度条的矩形区域从左到右利用当前活动窗口标题条的颜色来不断填充. 2.进度条控制在MF ...
- Controller 接口控制器详解
Controller 控制器,是 MVC 中的部分 C,为什么是部分呢?因为此处的控制器主要负责功能处理部分:1.收集.验证请求参数并绑定到命令对象:2.将命令对象交给业务对象,由业务对象处理并返回模 ...
- 161028、Nginx负载均衡实现tomcat集群方案简要小结
重点两部分:一.负载均衡二.tomcat集群 所谓tomcat集群,就是可以向外提供并行服务的多台机器,任何一台服务器宕机,其它服务器可以替代它向外提供服务,而不影响用户访问. Nginx是一个常用的 ...
- 转载:JMS-ActiveMQ浅析
ActiveMQ 即时通讯服务 浅析 一. 概述与介绍 ActiveMQ 是Apache出品,最流行的.功能强大的即时通讯和集成模式的开源服务器.ActiveMQ 是一个完全支持JMS1.1和J2EE ...
- Java URLClassLoader和ClassLoader
开始:看名字都带有ClassLoader,叫做类加载器,事实上是可以理解为动态的加载类,不过,也不是只能加载类,也可以加载其他形式的文件,比如说.properties属性文件. 区别:其实在两个类加载 ...
- jQuery 文档操作方法(w3school)
这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html(). 方法 描述 addClass() 向匹配的元素添加指定的类名. after() 在匹配的元素之后插入内容. append( ...
- iOS 证书申请和使用详解(详细版)
对于iOS开发者来说,apple开发者账号肯定不会陌生.在开发中我们离不开它.下面我简单的为大家分享一下关于iOS开发中所用的证书相关知识. 第一部分:成员介绍 1.Certification(证书) ...
- PHP序列化以及反序列化系列[1]--PHP序列化格式的写法
反序列化:对单一的已序列化的变量进行操作,将其转换回 PHP 的值(zval). PHP序列化方式 PHP在序列化的时候会将相应的变量以对应的键值进行储存. 将一个类序列化的话,处理代码主要的 文件: ...