实现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进阶教程之动态类型详解
Aug 30 Python
深入Python函数编程的一些特性
Apr 13 Python
使用Python的Twisted框架编写简单的网络客户端
Apr 16 Python
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
Python探索之ModelForm代码详解
Oct 26 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
Python基于百度云文字识别API
Dec 13 Python
python简单实现矩阵的乘,加,转置和逆运算示例
Jul 10 Python
Flask框架学习笔记之使用Flask实现表单开发详解
Aug 12 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
Jul 13 Python
如何用python实现一个HTTP连接池
Jan 14 Python
python3 删除所有自定义变量的操作
Apr 08 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中实现记住密码自动登录的代码
2011/03/02 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
2012/10/06 PHP
基于php下载文件的详解
2013/06/02 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
php自定义函数实现二维数组排序功能
2016/07/20 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
vue实现的网易云音乐在线播放和下载功能案例
2019/02/18 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
[原创]教女朋友学Python(一)运行环境搭建
2017/11/29 Python
Python实现的自定义多线程多进程类示例
2018/03/23 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
python 爬取小说并下载的示例
2020/12/07 Python
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
幼儿教师自我鉴定
2013/11/02 职场文书
面试后感谢信
2014/02/01 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
财务情况说明书范文
2014/05/06 职场文书
优秀员工推荐材料
2014/12/20 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang