实现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 11 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
使用python的pandas库读取csv文件保存至mysql数据库
Aug 20 Python
Python面向对象之类的封装操作示例
Jun 08 Python
Python 虚拟空间的使用代码详解
Jun 10 Python
Python基于Hypothesis测试库生成测试数据
Apr 29 Python
基于django micro搭建网站实现加水印功能
May 22 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
Python设计密码强度校验程序
Jul 30 Python
获取CSDN文章内容并转换为markdown文本的python
Sep 06 Python
如何基于Python按行合并两个txt
Nov 03 Python
python中的random模块和相关函数详解
Apr 22 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
php使用GD库创建图片缩略图的方法
2015/06/10 PHP
在JavaScript中遭遇级联表达式陷阱
2007/03/08 Javascript
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
javascript弹出页面回传值的方法
2015/01/28 Javascript
js实现拖拽效果(构造函数)
2015/12/14 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
2018/08/28 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
解决ng-repeat产生的ng-model中取不到值的问题
2018/10/02 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
2020/09/01 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
Python编程中对文件和存储器的读写示例
2016/01/25 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
查看Django和flask版本的方法
2018/05/14 Python
python实现机器学习之元线性回归
2018/09/06 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
营销与策划专业毕业生求职信
2013/11/01 职场文书
机修工工作职责
2014/02/21 职场文书
校车安全责任书
2014/08/25 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
教师党员个人剖析材料
2014/09/29 职场文书
房租涨价通知
2015/04/23 职场文书
公文写作:工伤事故分析报告怎么写?
2019/11/05 职场文书
在Python中如何使用yield
2021/06/07 Python
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers