实现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函数中的默认参数
Mar 30 Python
python计算文本文件行数的方法
Jul 06 Python
Python的Django框架中URLconf相关的一些技巧整理
Jul 18 Python
Python实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
python爬虫获取新浪新闻教学
Dec 23 Python
Python二叉搜索树与双向链表转换算法示例
Mar 02 Python
python变量的存储原理详解
Jul 10 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
Nov 27 Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 Python
python反扒机制的5种解决方法
Feb 06 Python
pytorch 中forward 的用法与解释说明
Feb 26 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 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
Syphon 虹吸式咖啡壶冲煮–拨动法
2021/03/03 冲泡冲煮
PHP 错误之引号中使用变量
2009/05/04 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
js中将具有数字属性名的对象转换为数组
2011/03/06 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
Javascript中的prototype与继承
2017/02/06 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
深入理解JavaScript的async/await
2018/08/05 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
[07:57]2018DOTA2国际邀请赛寻真——PSG.LGD凤凰浴火
2018/08/12 DOTA
[45:14]Optic vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Django 中间键和上下文处理器的使用
2019/03/17 Python
解决django服务器重启端口被占用的问题
2019/07/26 Python
检测tensorflow是否使用gpu进行计算的方式
2020/02/03 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
python实现简单贪吃蛇游戏
2020/09/29 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
幼儿园园长自我鉴定
2013/10/22 职场文书
便利店的创业计划书
2014/01/15 职场文书
青奥会口号
2014/06/12 职场文书
运动会演讲稿50字
2014/08/25 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
人事文员岗位职责
2015/02/04 职场文书
小平小道观后感
2015/06/09 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python