python的串口网上有很多例子,这里了只是把认为好的整理到一起。

首先,应该安装serial模块,还能开始后续的操作。我用的python2.6,serial模块可以在这里下载安装serial模块下载

1,字符串的发送接收

短接串口的2、3脚,创建一个文本,如:

  1. import serial
  2. t = serial.Serial('com12',9600)
  3. n = t.write('you are my world')
  4. print t.portstr
  5. print n
  6. str = t.read(n)
  7. print str
  1. import serial
  2. t = serial.Serial('com12',9600)
  3. n = t.write('you are my world')
  4. print t.portstr
  5. print n
  6. str = t.read(n)
  7. 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

或者你可以稍微添加几句,变成你任意输入后打印出你的键入信息。

  1. import serial
  2. t = serial.Serial('com12',9600)
  3. print t.portstr
  4. strInput = raw_input('enter some words:')
  5. n = t.write(strInput)
  6. print n
  7. str = t.read(n)
  8. print str
  1. import serial
  2. t = serial.Serial('com12',9600)
  3. print t.portstr
  4. strInput = raw_input('enter some words:')
  5. n = t.write(strInput)
  6. print n
  7. str = t.read(n)
  8. 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),代码如下:

  1. import serial
  2. def hexShow(argv):
  3. result = ''
  4. hLen = len(argv)
  5. for i in xrange(hLen):
  6. hvol = ord(argv[i])
  7. hhex = '%02x'%hvol
  8. result += hhex+' '
  9. print 'hexShow:',result
  10. t = serial.Serial('com12',9600)
  11. print t.portstr
  12. strInput = raw_input('enter some words:')
  13. n = t.write(strInput)
  14. print n
  15. str = t.read(n)
  16. print str
  17. hexShow(str)
  1. import serial
  2. def hexShow(argv):
  3. result = ''
  4. hLen = len(argv)
  5. for i in xrange(hLen):
  6. hvol = ord(argv[i])
  7. hhex = '%02x'%hvol
  8. result += hhex+' '
  9. print 'hexShow:',result
  10. t = serial.Serial('com12',9600)
  11. print t.portstr
  12. strInput = raw_input('enter some words:')
  13. n = t.write(strInput)
  14. print n
  15. str = t.read(n)
  16. print str
  17. 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函数,

  1. list='aabbccddee'
  2. hexer=list.decode("hex")
  3. print  hexer
  1. list='aabbccddee'
  2. hexer=list.decode("hex")
  3. print  hexer
list='aabbccddee'
hexer=list.decode("hex")
print  hexer

需要注意一点,如果字符串list的长度为奇数,则decode会报错,可以按照实际情况,用字符串的切片操作,在字符串的开头或结尾加一个'0'

假如在串口助手以十六进制发送字符串"abc",那么你在python中则这样操作“self.l_serial.write(”\x61\x62\x63") ”

当然,还有另外一个方法:

  1. strSerial = "abc"
  2. strHex = binascii.b2a_hex(strSerial)
  3. #print strHex
  4. strhex = strHex.decode("hex")
  5. #print strhex
  6. self.l_serial.write(strhex);
  1. strSerial = "abc"
  2. strHex = binascii.b2a_hex(strSerial)
  3. #print strHex
  4. strhex = strHex.decode("hex")
  5. #print strhex
  6. 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串口编程的更多相关文章

  1. raspi串口、python串口模块pyserial

    一.安装 1.下载软件包pyserial-2.7.tar.gz   网址:https://pypi.python.org/pypi/pyserial 2.8uftp上传至/usr/local/src/ ...

  2. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  3. python多线程编程

    Python多线程编程中常用方法: 1.join()方法:如果一个线程或者在函数执行的过程中调用另一个线程,并且希望待其完成操作后才能执行,那么在调用线程的时就可以使用被调线程的join方法join( ...

  4. python 面向对象编程学习

    1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...

  5. Python 网络编程(二)

    Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...

  6. Python 网络编程(一)

    Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  7. Python函数式编程:从入门到走火入魔

    一行代码显示"爱心" >>> print]+(y*-)**-(x**(y*<= ,)]),-,-)]) Python函数式编程:从入门到走火入魔 # @fi ...

  8. python核心编程(第二版)习题

    重新再看一遍python核心编程,把后面的习题都做一下.

  9. storysnail的Linux串口编程笔记

    storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据Ge ...

随机推荐

  1. JSP-08-第三方控件的使用

    添加图片 下载 commons-fileupload-1.2.2.jar和commons-io-2.4.jar 导入项目 在添加涂抹的页面设置表单属性  enctype=”multipart/form ...

  2. SqlServer 的提示符(Option/With等提示符)不是什么时候都可以用的

    我们在做SqlServer的查询调优的时候,经常会在语句末尾用到option(loop/merge/hash join)或在join语句前直接声明loop/merge/hash,来强制SqlServe ...

  3. 【海岛帝国系列赛】No.7 海岛帝国:神圣之日

    50237242海岛帝国:神圣之日 [试题描述] 战争持续九个月了.“购物券”WHT的军队还在跟恐怖分子僵持着.WHT和LJX已经向“公务员”告急,情况不宜乐观.YSF为守护帝国决定打开“够累 的”星 ...

  4. Java类加载信息的顺序:包括静态代码快、静态类变量、非静态代码快、构造方法、普通方法

    JVM运行之前会执行一个叫做类加载器的子系统,叫做ClassLoader,那么类里面那么多“元素”,究竟是个什么顺序呢,写几行代码测试一下,通过给每个方法和代码快和静态变量打上断点来测试: class ...

  5. JavaEE基础(十)

    1.面向对象(package关键字的概述及作用) A:为什么要有包 将字节码(.class)进行分类存放 包其实就是文件夹 B:包的概述 举例: 学生:增加,删除,修改,查询 老师:增加,删除,修改, ...

  6. 20151221001 GridView 模板

    <asp:GridView ID="GridView1"                 runat="server" AllowPaging=" ...

  7. Curling 2.0 分类: 搜索 2015-08-09 11:14 3人阅读 评论(0) 收藏

    Curling 2.0 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14289 Accepted: 5962 Descript ...

  8. 浅谈CSS样式png、gif、jpg图片优化的方法

    一.PNG.GIF.JPG图片对比 在我们进行图像优化技术前,需要学习有关的图片格式的一些技术细节,每个图形格式都有自己的优势和拖弱点,知道他们会使你得到更好的视觉质量和压缩品质. 网页图片优化是网页 ...

  9. [Django_1_2]数据库设置

    Django 数据库设置 本篇将介绍Django中的数据库设置,了解模型(models,数据库中的表项设计). 上一篇文章为:<a href="http://www.cnblogs.c ...

  10. Mysql-学习笔记(==》常用函数 八)

    -- 常用函数 字符编码uft8汉字为3个字节 gbk汉字两个字节 gbk占用空间小速度快 utf8兼容性好 -- length 返回字符的字节数SELECT LENGTH('asd王');-- ch ...