实现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中的cookielib模拟登录网站
Apr 09 Python
Python返回真假值(True or False)小技巧
Apr 10 Python
python中global用法实例分析
Apr 30 Python
Python中json格式数据的编码与解码方法详解
Jul 01 Python
对python中执行DOS命令的3种方法总结
May 12 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
Python格式化字符串f-string概览(小结)
Jun 18 Python
连接pandas以及数组转pandas的方法
Jun 28 Python
在python中用url_for构造URL的方法
Jul 25 Python
Django中的用户身份验证示例详解
Aug 07 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
Jupyter notebook命令和编辑模式常用快捷键汇总
Nov 17 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
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
href下载文件根据id取url并下载
2014/05/28 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
js实现常见的工具条效果
2017/03/02 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
node.js多个异步过程中判断执行是否完成的解决方案
2017/12/10 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
JS+CSS实现动态时钟
2021/02/19 Javascript
Python实现从百度API获取天气的方法
2015/03/11 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
python如何实现复制目录到指定目录
2020/02/13 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
收集的7个CSS3代码生成工具
2010/04/17 HTML / CSS
Tostadora意大利:定制T恤
2019/04/08 全球购物
一套SQL笔试题
2016/08/14 面试题
门诊手术室工作制度
2014/01/30 职场文书
普罗米修斯教学反思
2014/02/06 职场文书
建筑结构施工专业推荐信
2014/02/21 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
党支部综合考察意见
2015/06/01 职场文书
2015迎新晚会开场白
2015/07/17 职场文书
《家世》读后感:看家训的力量
2019/12/30 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
bat批处理之字符串操作的实现
2022/03/16 Python
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP
详解MongoDB排序时内存大小限制与创建索引的注意事项
2022/05/06 MongoDB