实现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中bisect的用法
Sep 23 Python
在Python中marshal对象序列化的相关知识
Jul 01 Python
Python循环语句之break与continue的用法
Oct 14 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
Mar 02 Python
Python检测网络延迟的代码
May 15 Python
树莓派实现移动拍照
Jun 22 Python
Python单元测试与测试用例简析
Nov 09 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
Python while循环使用else语句代码实例
Feb 07 Python
使用python-pptx包批量修改ppt格式的实现
Feb 14 Python
Python之字符串的遍历的4种方式
Dec 08 Python
python 如何获取页面所有a标签下href的值
May 06 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
谈PHP生成静态页面分析 模板+缓存+写文件
2009/08/17 PHP
小谈php正则提取图片地址
2014/03/27 PHP
PHP获取MySql新增记录ID值的3种方法
2014/06/24 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
CSS中一些@规则的用法小结
2021/03/09 HTML / CSS
JavaScript 继承详解(二)
2009/07/13 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
JavaScript的ExtJS框架中表格的编写教程
2016/05/21 Javascript
jquery 判断是否支持Placeholder属性的方法
2017/02/07 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
layui的table单击行勾选checkbox功能方法
2018/08/14 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
在Web关闭页面时发送Ajax请求的实现方法
2019/03/07 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python中正则表达式的详细教程
2015/04/30 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
PyTorch中反卷积的用法详解
2019/12/30 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
python空元组在all中返回结果详解
2020/12/15 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
食品行业求职人的自我评价
2014/01/19 职场文书
交通事故调解协议书
2014/04/16 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
政协调研汇报材料
2014/08/15 职场文书
骨干教师考核评语
2014/12/31 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
python读取mnist数据集方法案例详解
2021/09/04 Python