实现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 31 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
pytorch + visdom CNN处理自建图片数据集的方法
Jun 04 Python
win8下python3.4安装和环境配置图文教程
Jul 31 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
python全栈知识点总结
Jul 01 Python
pytorch实现对输入超过三通道的数据进行训练
Jan 15 Python
Python netmiko模块的使用
Feb 14 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 Python
Python devel安装失败问题解决方案
Jun 09 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 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脚本的10个技巧(2)
2006/10/09 PHP
php解析html类库simple_html_dom(详细介绍)
2013/07/05 PHP
一个比较不错的PHP日历类分享
2014/11/18 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
PHP实现的pdo连接数据库并插入数据功能简单示例
2019/03/30 PHP
js脚本获取webform服务器控件的方法
2014/05/16 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
jQuery侧边栏实现代码
2016/05/06 Javascript
很棒的Bootstrap选项卡切换效果
2016/07/01 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
element-ui表格数据转换的示例代码
2018/08/24 Javascript
python使用PyFetion来发送短信的例子
2014/04/22 Python
基于python中pygame模块的Linux下安装过程(详解)
2017/11/09 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
浅谈Scrapy网络爬虫框架的工作原理和数据采集
2019/02/07 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
pandas 层次化索引的实现方法
2019/07/06 Python
wxPython多个窗口的基本结构
2019/11/19 Python
python网络编程之五子棋游戏
2020/05/14 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
浅析python 字典嵌套
2020/09/29 Python
python 解决函数返回return的问题
2020/12/05 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
计算机软件个人的自荐信范文
2013/12/01 职场文书
办公室主任主任岗位责任制
2014/02/11 职场文书
如何写求职信
2014/05/24 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
2014年高三班主任工作总结
2014/12/05 职场文书
Vue和Flask通信的实现
2021/05/19 Vue.js
写好Python代码的几条重要技巧
2021/05/21 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript