raspi串口、python串口模块pyserial
一、安装
1.下载软件包pyserial-2.7.tar.gz 网址:https://pypi.python.org/pypi/pyserial
2.8uftp上传至/usr/local/src/目录下
3.cd /usr/local/src/
4.解压tar -zxvf pyserial-2.7.tar.gz
5.cd pyserial-2.7/ //在该解压后的文件里发现setup.py文件,而没有configrue文件,所以,
//下一步用sudo python setup.py install,而不是./configrue --prefix=/usr.....
6.安装sudo python setup.py install
注:网上还有如下方法编译安装pyserial
cd /usr/local/src/
wget http://pypi.python.org/packages/source/p....... //用wget直接下载到当地当前目录下
tar -zxvf pyserial-2.4.tar.gz
cd pyserial-2.4
python2.6 setup.py install
二、使用
import serial导入模块
然后就可以用了
ser = serial.Serial(0) 是打开第一个串口
print ser.portstr 能看到第一个串口的标识,windows下是COM1
ser.write(“hello") 就是往串口里面写数据
ser.close() 就是关闭ser表示的串口
ser.open() 会打开这个串口
ser = serial.Serial('COM1', 115200) 来设置波特率,当然还有专门的函数
data = ser.read()可以读一个字符
data = ser.read(20) 是读20个字符
data = ser.readline() 是读一行,以/n结束,要是没有/n就一直读,阻塞。
data = ser.readlines()和ser.xreadlines()都需要设置超时时间
ser.baudrate = 9600 设置波特率
ser 来查看当前串口的状态
ser.isOpen() 看看这个串口是否已经被打开
三、树莓派串口UART(转载,原文:http://blog.csdn.net/xukai871105/article/details/22713925)
0.前言
- # -*- coding: utf-8 -*
- import serial
- import time
- # 打开串口
- ser = serial.Serial("/dev/ttyAMA0", 9600)
- def main():
- while True:
- # 获得接收缓冲区字符
- count = ser.inWaiting()
- if count != 0:
- # 读取内容并回显
- recv = ser.read(count)
- ser.write(recv)
- # 清空接收缓冲区
- ser.flushInput()
- # 必要的软件延时
- time.sleep(0.1)
- if __name__ == '__main__':
- try:
- main()
- except KeyboardInterrupt:
- if ser != None:
- ser.close()
raspberry pi 串口控制51单片机
制作小车都用raspberry pi上的口有些麻烦,所以把一些基础控制给51单片机解决,raspberry pi控制高层应用。所以测试一下raspberry pi串口连接调试51单片机。
第一步: //我自己第一步:sudo apt-get install pyserial(python的串口模块)
sudo apt-get install python-serial
sudo easy_install pyserial
第二部接线部分图 //我自己这一排依次接:单片机的+5v、悬空、单片机的地、单片机的RXD、单片机的TXD。
raspberry pi板子串口接线图

raspberry 串口接线图1
杜邦线连接

raspberry 串口接线图3
代码部分
//#tstlist=[22,8,8,3,3,3]
//tstlist=[i]
//ser.write(tstlist[:])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#!/bin/env python # -*- coding:utf-8 -*- # ------------------------------- # Filename: # Revision: # Date: 2013-02-5 # Author: simonzhang # Email: simon-zzm@163.com # WWW: www.simonzhang.net # ------------------------------- import serial import time #### 定义小灯亮灭初始值 i = 0 #### 实例化串口 ser = serial.Serial( '/dev/ttyAMA0' , 9600 , timeout = 0.5 ) for j in range ( 10 ): if ser.isOpen() = = False : ser. open () #### 每次循环对上值次取反 if i = = 0 : i = 1 else : i = 0 #### 向串口发送字符 ser.write( chr (i)) #### 获取串口返回值 #### linux为福阻塞模式,在阻塞模式下 #### 会报错,所以抱起来就好了。 try : re = ser.readlines() except : pass print re time.sleep( 2 ) |
#tstlist=[22,8,8,3,3,3]
tstlist=[i]
ser.write(tstlist[:])。更重要的是解决问题的思路:当运行错误的时候,会提示在库函数里面具体哪个函数出错了,是to_bytes(data)函数,仔细解读这个函数发现它是将所给参数(是序列)转换为字符,在程序的注释部分也有说明,于是想到先把参数转化为序列再给ser.write(...
)函数,解决问题。思路:去库函数具体出错的函数处分析原因。
/************其他人的解决办法***************/
ser=serial.Serial(6,115200)#这里没有问题
at='at'+chr(13)
ser.write(at)
让后马上就报错了.
File "C:\Python33\lib\site-packages\serial\serialutil.py", line 76, in to_bytes
b.append(item) # this one handles int and str for our emulation and ints for Python 3.x
TypeError: an integer is required
某人回复:3的字符串都是unicode,发送前是不是要encoding成别的编码?
楼主修改:at='AT' at=at+chr(13) at.encode('ascii')
/***************************************/
51单片机代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
#include <reg52.h> #include <intrins.h> typedef unsigned char uint8; typedef unsigned int uint16; uint8 num; sbit D0 = P0^0; void init() { SCON = 0x50; TMOD = 0x20; TH1 = 0xFD; TL1 = 0xFD; TR1 = 1; //打开定时器 ES = 1; EA = 1; //打开总开关 } void interrupt_uart() interrupt 4 { if (TI) { TI = 0; REN = 1; } if (RI) { RI = 0; num = SBUF; if (num == 1) { D0 = 0; SBUF = 0; } else { D0 = 1; SBUF =1; } REN = 0; } } main() { init(); while (1); } |
源码下载
raspberrypito51
五、pyserial解析:
1.serial.Serial的参数有哪些:
>>> import serial
>>> ser=serial.Serial("/dev/ttyAMA0",9600)
>>> ser
Serial<id=0xb6afc6b0, open=True>(port='/dev/ttyAMA0', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
2.pyserial官网文档地址:pyserial.sourceforge.net
- timeout = None: wait forever
- timeout = 0: non-blocking mode (return immediately on read)
- timeout = x: set timeout to x seconds (float allowed)
raspi串口、python串口模块pyserial的更多相关文章
- Python 串口通讯
摘要: pyserial module: https://github.com/tbusf/pyserial Python使用pyserial进行串口通信:http://blog.csdn.net/l ...
- python串口助手
最近项目中要使用模拟数据源通过向外发送数据,以前都是用C#编写,最近在研究python,所以就用python写了一个串口助手,方便以后的测试. 在电脑上通过虚拟串口助手产生两个虚拟串口,运行编写的串口 ...
- python 常用模块(转载)
转载地址:http://codeweblog.com/python-%e5%b8%b8%e7%94%a8%e6%a8%a1%e5%9d%97/ adodb:我们领导推荐的数据库连接组件bsddb3:B ...
- Python标准模块--threading
1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...
- Python的模块引用和查找路径
模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...
- Python Logging模块的简单使用
前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...
- Python标准模块--logging
1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...
- python基础-模块
一.模块介绍 ...
- python 安装模块
python安装模块的方法很多,在此仅介绍一种,不需要安装其他附带的pip等,python安装完之后,配置环境变量,我由于中英文分号原因,环境变量始终没能配置成功汗. 1:下载模块的压缩文件解压到任意 ...
随机推荐
- shell脚本,配置文件加载顺序,以及什么时候加载。
在linux系统中,有/etc/profile,/etc/bashrc ,~/.bash_profile,~/bashrc这四个配置文件,这些文件,会自动的在某些时候加载,也就是点一下,一般都是些别名 ...
- javaEE(5)_Cookie和Session
一.会话 1.什么是会话?会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话.类似打电话一样.2.会话过程中要解决的一些问题?每个用户 ...
- ios 自定义RadioButton
1 前言 众所周知在IOS中没有单选按钮这一控件,今天我们来学习一下简单的单选控件.类似与Web中的radio表单元素. 2 详述 本控件单纯的利用按钮控件和NSObject的respondsToSe ...
- 简单的Redis数据迁移
dump迁移 1.安装redis-dump工具 sudo apt-get install ruby rubygems ruby-devel -y gem sources --add http://ge ...
- Mac OS 终端强化美化:iterm2 + zsh + oh~my~zsh 设置教程
为了获得更好的排版效果,文章改用markdown撰写,故重发一次. 前言 mac自带的terminal终端没有文件名高亮等功能,而且界面不是很好看,故今晚学舍友折腾了终端,可以让自己使用起来更加方便, ...
- activiti工作流使用一般步骤
activiti工作流使用的一般步骤 一.在eclipse或Myeclipse中安装activiti插件: 二.通过activiti连接数据库,有以下两种连接数据库的形式: 1.通过java代码链接数 ...
- laravel模型关联与列表展示
上面这个是一个模型关联的图,其实我们很容易去理解 比如说,一对一,也就是说一个用户对应的是一个手机号. 一对多,比如说一篇文章可以有多条评论 一对多反向:如一篇文章可以有多条评论,但对应每条评论也只针 ...
- 快照、克隆,xshell优化,Linux历史
目录 一.虚拟拍照功能 二.虚拟机克隆功能 三.Xshell的优化 四.介绍Linux历史 一.虚拟拍照功能 1.拍摄快照 关机状态拍照 关机命令:shutdown -h now 或者 init 0 ...
- Onenote代码高亮的实现方法
最终效果图 最终的效果图如下: VBA的编写参考 主要参考的是这篇博客中的思路:如何在Word中排出漂亮的代码 将VBA脚本复制到Word中并设置快捷键 Alt+F11 打开Word中的 VBS,将下 ...
- Python9-封装-day26(大年初三)
class Room: def __init__(self,name,length,width): self.__name = name self.__length = length self.__w ...