实现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 27 Python
Python 3中print函数的使用方法总结
Aug 08 Python
python实现二分查找算法
Sep 21 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
Django 路由系统URLconf的使用
Oct 11 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
使用 Python 清理收藏夹里已失效的网站
Dec 03 Python
Python查找不限层级Json数据中某个key或者value的路径方式
Feb 27 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
Python基于Tkinter开发一个爬取B站直播弹幕的工具
May 06 Python
opencv-python图像配准(匹配和叠加)的实现
Jun 23 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/03 冲泡冲煮
编写自己的php扩展函数
2006/10/09 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
php读取3389的脚本
2014/05/06 PHP
PHP封装的一个支持HTML、JS、PHP重定向的多功能跳转函数
2014/06/19 PHP
网页的分页下标生成代码(PHP后端方法)
2016/02/03 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
JQuery切换显示的效果实例代码
2013/02/27 Javascript
node.js中的querystring.unescape方法使用说明
2014/12/10 Javascript
javascript+html5实现仿flash滚动播放图片的方法
2015/04/27 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
Node.js引入UIBootstrap的方法示例
2018/05/11 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
CentOS下使用yum安装python-pip失败的完美解决方法
2017/08/16 Python
Python正则匹配判断手机号是否合法的方法
2020/12/09 Python
简单了解python中对象的取反运算符
2019/07/01 Python
python二进制文件的转译详解
2019/07/03 Python
解决Python3 控制台输出InsecureRequestWarning问题
2019/07/15 Python
python def 定义函数,调用函数方式
2020/06/02 Python
Python调用SMTP服务自动发送Email的实现步骤
2021/02/07 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
Hotels.com加拿大:领先的在线住宿网站
2018/10/05 全球购物
远程教育心得体会
2014/01/03 职场文书
高中生的自我评价
2014/03/04 职场文书
绿化工程实施方案
2014/03/17 职场文书
初中学校军训方案
2014/05/09 职场文书
学习型班组申报材料
2014/05/31 职场文书
机械专业技术员求职信
2014/06/14 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
对讲机的最大通讯距离是多少
2022/02/18 无线电