实现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实现的解析crontab配置文件代码
Jun 30 Python
Python标准库urllib2的一些使用细节总结
Mar 16 Python
python开发之tkinter实现图形随鼠标移动的方法
Nov 11 Python
python用Pygal如何生成漂亮的SVG图像详解
Feb 10 Python
pandas中的DataFrame按指定顺序输出所有列的方法
Apr 10 Python
python最长回文串算法
Jun 04 Python
面向初学者的Python编辑器Mu
Oct 08 Python
Pandas读写CSV文件的方法示例
Mar 27 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
python groupby 函数 as_index详解
Dec 16 Python
opencv 查找连通区域 最大面积实例
Jun 04 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
postman的安装与使用方法(模拟Get和Post请求)
2018/08/06 PHP
PHP获取HTTP body内容的方法
2018/12/31 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
Packer 3.0 JS压缩及混淆工具 下载
2007/05/03 Javascript
文字不间断滚动(上下左右)实例代码
2013/04/21 Javascript
jQuery中replaceWith()方法用法实例
2014/12/25 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
浅谈Vuejs Prop基本用法
2017/08/17 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
详解如何从零开始搭建Express+Vue开发环境
2018/07/17 Javascript
layui 设置table 行的高度方法
2018/08/17 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
Python切片用法实例教程
2014/09/08 Python
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
Python reduce()函数的用法小结
2017/11/15 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
python ---lambda匿名函数介绍
2019/03/13 Python
Django框架验证码用法实例分析
2019/05/10 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
python 中的[:-1]和[::-1]的具体使用
2020/02/13 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
Python导入模块包原理及相关注意事项
2020/03/25 Python
python 合并多个excel中同名的sheet
2021/01/22 Python
使用 css3 transform 属性来变换背景图的方法
2019/05/07 HTML / CSS
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
英国安全产品购物网站:The Safe Shop
2017/03/20 全球购物
费用会计岗位职责
2014/01/01 职场文书
幼儿园家长寄语
2014/04/02 职场文书
在校证明模板
2015/06/17 职场文书