实现Python与STM32通信方式


Posted in Python onDecember 18, 2019

断断续续学了几周Stm32后,突然想实现上位机和下位机的通信,恰好自己学过一点python,便想通过python实现通信.

在网上看见python库pyserial可以实现此功能,便去官网找了一下 ,附上官网pyserial档链 接:https://pyserial.readthedocs.io/en/latest/pyserial.html#overview

首先在windows的CMD命令管理器中安装pyserial,直接在CMD中键入如下字符

pip install pyserial

再将Stm32用USB连接到电脑,打开设备管理器显示端口为COM14,然后在python中写下

import serial
 
#连接串口
serial = serial.Serial('COM14',115200,timeout=2) #连接COM14,波特率位115200
if serial.isOpen():
 print ('串口已打开')
else:
 print ('串口未打开')
 
 
 
#关闭串口
serial.close()
 
if serial.isOpen():
 print ('串口未关闭')
else:
 print ('串口已关闭')

运行后出现下图,记住在代码要在最后要用 serial.close() 函数去关闭串口,否则下次会打不开串口,会报错.

实现Python与STM32通信方式

之后我们在Stm32的代码中写入如下示例代码,模板来自正点原子的示例代码:

while(1)
 {
 if (USART_RX_STA&0x8000)
 {
 len = USART_RX_STA&0x3FFF;
 for (t=0;t<len;t++)
 {
 USART_SendData(USART1,USART_RX_BUF[t]);
 while (USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
 }
 USART_RX_STA=0;
 }
 else
 { 
 times++;
 if(times%30==0)LED0=!LED0;//闪烁LED,提示系统正在运行.
 delay_ms(10); 
 }
 }

该32的代码实现的功能为USART接受数据并返还给发送数据方.

在python编译器中写下数据接收与发送的完整代码:

import serial
 
#连接串口
serial = serial.Serial('COM14',115200,timeout=2)
if serial.isOpen():
 print ('串口已打开')
 
 data = b'Beking\r\n' #发送的数据
 serial.write(data)  #串口写数据
 print ('You Send Data:',data)
 
 while True:
 data = serial.read(20) #串口读20位数据
 if data != b'':
 break
 print ('receive data is :',data) 
 
else:
 print ('串口未打开')
 
 
 
#关闭串口
serial.close()
 
if serial.isOpen():
 print ('串口未关闭')
else:
 print ('串口已关闭')

运行结果为下图,发送的数据为 b'Beking\r\n' 接收数据为 b'Beking' .( 在正点原子的数据接受数据中要有\r\n字符,否则会接收不到(可以在代码中更改))

实现Python与STM32通信方式

如此就可以实现python与Stm32的简单数据接发,要是想实现更为复杂,更为实用的上位机与下位机通信,可以参考文首给出的pyserial文档链接.

以上这篇实现Python与STM32通信方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python编写一个简单的俄罗斯方块游戏的教程
Apr 03 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
深入理解Python中的super()方法
Nov 20 Python
Python面向对象之继承和多态用法分析
Jun 08 Python
关于Python3 类方法、静态方法新解
Aug 30 Python
Python时间差中seconds和total_seconds的区别详解
Dec 26 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
基于Python爬虫采集天气网实时信息
Jun 05 Python
Pycharm中如何关掉python console
Oct 27 Python
python爬虫泛滥的解决方法详解
Nov 25 Python
Matlab求解数组中的最大值及它所在的具体位置
Apr 16 Python
利用pandas将非数值数据转换成数值的方式
Dec 18 #Python
python 浅谈serial与stm32通信的编码问题
Dec 18 #Python
基于numpy中的expand_dims函数用法
Dec 18 #Python
Python.append()与Python.expand()用法详解
Dec 18 #Python
python getopt模块使用实例解析
Dec 18 #Python
pytorch制作自己的LMDB数据操作示例
Dec 18 #Python
Python Gluon参数和模块命名操作教程
Dec 18 #Python
You might like
PHP版 汉字转码的实现详解
2013/06/09 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
php目录操作实例代码
2014/02/21 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
详解WordPress中调用评论模板和循环输出评论的PHP函数
2016/01/05 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
解决Laravel 不能创建 migration 的问题
2019/10/09 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
js 调用百度地图api并在地图上进行打点添加标注
2014/05/13 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
jQuery中slidedown与slideup方法用法示例
2016/09/16 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
Vue组件开发初探
2017/02/14 Javascript
js实现无缝滚动图
2017/02/22 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
2017/06/11 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
跟老齐学Python之有容乃大的list(4)
2014/09/28 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
Python文件时间操作步骤代码详解
2020/04/13 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
澳大利亚运动鞋零售商:The Athlete’s Foot
2018/11/04 全球购物
领导证婚人证婚词
2014/01/13 职场文书
战友聚会主持词
2014/04/02 职场文书
创先争优活动个人总结
2015/03/04 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书