实现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 20 Python
Python中Collection的使用小技巧
Aug 18 Python
python中循环语句while用法实例
May 16 Python
python利用urllib实现爬取京东网站商品图片的爬虫实例
Aug 24 Python
python 文件操作删除某行的实例
Sep 04 Python
在python中安装basemap的教程
Sep 20 Python
python版飞机大战代码分享
Nov 20 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
python输入错误后删除的方法
Oct 12 Python
python导入不同目录下的自定义模块过程解析
Nov 18 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 Python
使用python绘制分组对比柱状图
Apr 21 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实现通用的信用卡验证类
2015/03/24 PHP
thinkphp在php7环境下提示Cannot use ‘String’ as class name as it is reserved的解决方法
2016/09/30 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
php 广告点击统计代码(php+mysql)
2018/02/21 PHP
零基础php编程好学吗
2019/10/11 PHP
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
vue.js实现会动的简历(包含底部导航功能,编辑功能)
2019/04/08 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
浅谈django model的get和filter方法的区别(必看篇)
2017/05/23 Python
python中subprocess批量执行linux命令
2018/04/27 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
pandas 将索引值相加的方法
2018/11/15 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
50行Python代码获取高考志愿信息的实现方法
2019/07/23 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
会议活动邀请函
2014/01/27 职场文书
学生检讨书范文
2015/01/27 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
正规借条模板
2015/05/26 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle