【PythonDjango后台实例 第一章】Python3.6.1+Pyserial 实现读取STM32蓝牙串口
来源:互联网 发布:认字卡片软件 编辑:程序博客网 时间:2024/05/16 11:55
在Baidu,Google寻找了一大堆帖子,最后索性自己看文档自己研究。
最后发现实现非常容易,得益于Python强大的串口库Pyserial可以直接调用串口
下位机说明:
采用STM32F103ZET6主控+温湿度+光照的采集硬件,通过蓝牙与PC连接,实际上蓝牙也是串口连接
本环境下的PC蓝牙接收串口为COM7
第一步:下载pyserial
本人是windows环境,所以其他环境请自行切换
1,windows按 + R 打开搜索
2,输入CMD进入终端
3. 输入pip install pyserial 下载最新版
第二步:打开你的python开发环境,本人是pycharm
1,新建pyhon项目
2,键入代码
# coding=gb18030import serial # 导入serial包import time # 导入time包s = serial.Serial('com7', 9600, timeout=2) # 打开串口,后面是串口配置while True: # 无限循环读取数据 localtime = time.asctime(time.localtime(time.time())) # time包里面调用本地时间的用法 n = s.readline() # serial包的用法 读取串口的一行数据 data_pre = str(n) # 把读取的数据转换成字符串 data = data_pre[2:-3] # 取数据的一部分放进data变量 print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), data) # 打印数据和时间3,最后实现
说明: 我最后的输出是 年+月+日 小时+分钟+秒 设备名+第一数据+第二数据+第三数据
最后粘贴一个pyserial库调用说明:
1、导入pyserial模块import serial
2、打开串行口// 打开串口0, 9600,8N1,连接超时0.5秒import serialser=serial.Serial("/dev/ttyUSB0",9600,timeout=0.5) #使用USB连接串行口ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5) #使用树莓派的GPIO口连接串行口ser=serial.Serial(1,9600,timeout=0.5) #winsows系统使用com1口连接串行口ser=serial.Serial("com1",9600,timeout=0.5) #winsows系统使用com1口连接串行口ser=serial.Serial("/dev/ttyS1",9600,timeout=0.5) #Linux系统使用com1口连接串行口print ser.name #打印设备名称print ser.port #打印设备名ser.open () #打开端口s = ser.read(10) #从端口读10个字节ser.write("hello") #向端口些数据ser.close() #关闭端口data = ser.read(20) #是读20个字符data = ser.readline() #是读一行,以/n结束,要是没有/n就一直读,阻塞。data = ser.readlines()和ser.xreadlines() #都需要设置超时时间ser.baudrate = 9600 #设置波特率ser.isOpen() #看看这个串口是否已经被打开
3、获得串行口状态串行口的属性:name:设备名字portstr:已废弃,用name代替port:读或者写端口baudrate:波特率bytesize:字节大小parity:校验位stopbits:停止位timeout:读超时设置writeTimeout:写超时xonxoff:软件流控rtscts:硬件流控dsrdtr:硬件流控interCharTimeout:字符间隔超时属性的使用方法:ser=serial.Serial("/dev/ttyAMA0",9600,timeout=0.5)ser.open()printser.nameprint ser.portprint ser.baudrate #波特率print ser.bytesize #字节大小print ser.parity #校验位N-无校验,E-偶校验,O-奇校验print ser.stopbits #停止位print ser.timeout #读超时设置print ser.writeTimeout #写超时print ser.xonxoff #软件流控print ser.rtscts #硬件流控print ser.dsrdtr #硬件流控print ser.interCharTimeout #字符间隔超时ser.close()
4、设置串行口状态需要用的常量bytesize:FIVE BITS、SIXBITS、SEVENBITS、EIGHTBITSparity: PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACEstopbits: STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO异常:ValueError:参数错误SerialException:找不到设备或不能配置ser.baudrate=9600 #设置波特率ser.bytesize=8 #字节大小ser.bytesize=serial.EiGHTBITS #8位数据位ser.parity=serial.PARITY_EVEN #偶校验ser.parity=serial.PARITY_NONE #无校验ser.parity=serial.PARITY_ODD #奇校验ser.stopbits=1 #停止位ser.timeout=0.5 #读超时设置ser.writeTimeout=0.5 #写超时ser.xonxoff #软件流控ser.rtscts #硬件流控ser.dsrdtr #硬件流控ser.interCharTimeout #字符间隔超时
5、Readline方法的使用是读一行,以/n结束,要是没有/n就一直读,阻塞。使用readline()时应该注意:打开串口时应该指定超时,否则如果串口没有收到新行,则会一直等待。如果没有超时,readline会报异常。
6、serial.Serial类——原生端口class serial.Serial{__init__(port=None, baudrate=9600, bytesize=EIGHTBITS,parity=PARITY_NONE, stopbits=STOPBITS_ONE, timeout=None, xonxoff=False, rtscts=False, writeTimeout=None, dsrdtr=False, interCharTimeout=None)#其中:# bytesize:FIVEBITS、SIXBITS、SEVENBITS、EIGHTBITS# parity: PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE# stopbits: STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO#异常:#ValueError:参数错误#SerialException:找不到设备或不能配置open():打开串口close():立即关闭串口__del__():析构函数read(size=1):从串口读size个字节。如果指定超时,则可能在超时后返回较少的字节;如果没有指定超时,则会一直等到收完指定的字节数。write(data):发送data,并返回发送字节数。如果bytes和bytearray可用(python 2.6以上),则接受其作为参数;否则接受str作为参数。#异常:SerialTimeoutException——配置了写超时并发生超时时发生此异常。inWaiting():返回接收缓存中的字节数flush():等待所有数据写出。flushInput():丢弃接收缓存中的所有数据flushOutput():终止当前写操作,并丢弃发送缓存中的数据。sendBreadk(duration=0.25):发送BREAK条件,并于duration时间之后返回IDLEsetBreak(level=True):根据level设置break条件。setRTS(level=True)setDTR(level=True)getCTS()getDSR()getRI()getCD()#只读属性:name:设备名字portstr:已废弃,用name代替port:读或者写端口baudrate:波特率bytesize:字节大小parity:校验位stopbits:停止位timeout:读超时设置writeTimeout:写超时xonxoff:软件流控rtscts:硬件流控dsrdtr:硬件流控interCharTimeout:字符间隔超时#端口设置可以被读入字典,也可从字典加载设置:getSettingDict():返回当前串口设置的字典applySettingDict(d):应用字典到串口设置#对提供io库的系统(python 2.6或以上),Serial从io.RawIOBase派生。对其它系统,从FileLike派生。#异常:exception serial.SerialExceptionexception serial.SerialTimeoutException#常量:serial.VERSION:pyserial版本#模块函数和属性:serial.device(number)serial.serial_for_url(url, *args, **kwargs)serial.protocol_handler_packages()serial.to_bytes(sequence):接收一个字符串或整数列表sequence,返回bytes实例}
有地方不懂的就在评论区问,有错误请指出,大家共同进步!
因本文不太严谨,所以严禁转载!
阅读全文
0 0
- 【PythonDjango后台实例 第一章】Python3.6.1+Pyserial 实现读取STM32蓝牙串口
- 【PythonDjango后台实例 第二章】Python3.6.1+Pyserial+PyMySQL 实现读取串口并存入数据库
- 【PythonDjango后台实例 第三章】Python3.6.1+Django1.8 模版的继承使用
- 【PythonDjango后台实例 第四章】Python3.6.1+Bootstrap3+echarts 在HTML网页中使用echarts展示图表
- Python3.2----串口模块Pyserial
- 【PythonDjango后台实例 第六章】Django实现简单的登陆验证功能
- 树莓派+Python+pyserial 2.7实现串口通信
- 树莓派+Python+pyserial 2.7实现串口通信
- Pyserial+PyQT+Python3.4串口工具——界面
- 第一章:STM32串口ISP下载
- Raspberry pi 使用python+pySerial实现串口通信
- 【PythonDjango后台实例 第七章】Django使用Video.js视频播放插件
- python pyserial 串口
- Python串口模块pySerial
- Python串口模块pySerial
- 关于python3.4和PyQt4以及pyserial的串口小工具
- 【已解决】Python3.6+PySerial+PyMySQL+正则表达式来读串口存数据库
- 【PythonDjango后台实例 第五章】Bootstrap3 在HTML页面中显示调用本地时间并动态显示
- Echarts数据可视化polar极坐标系,开发全解+完美注释
- Git 常用命令总结
- (8)布局display应用:好友菜单
- C/C++ 取整函数ceil(),floor(),round(x)
- CF417A Elimination(完全背包)
- 【PythonDjango后台实例 第一章】Python3.6.1+Pyserial 实现读取STM32蓝牙串口
- StringUtils.equals() 用法
- poj3233(81/600)
- EditText默认不获取焦点
- Echarts数据可视化radar雷达坐标系,开发全解+完美注释
- 判断QmessageBox点击的按钮
- Java集合类
- [随心译]2017.8.7-这些难以置信的地球太空夜景图实际上全是假货
- Echarts数据可视化series-bar柱形图详解,开发全解+完美注释