树莓派和STM32通过USB和串口通信记录
不管怎样,为了简便开发,通信选择串口通信。
推荐文章:https://blog.csdn.net/magnetoooo/article/details/53564797
推荐测试工具:https://blog.csdn.net/u011625775/article/details/99681560(这个发送数据好像有点问题?)
采用的方案是python的pyserial。
pip insatll pyserial
查找可用端口
硬件连接:stm32使用ch340g的串口输出,接入到树莓派的USB口上。
通过如下代码查找端口,通过拔插观察实际端口。一般来说,是一个ttyUSB的标号
python3 -m serial.tools.list_ports
最简测试代码
进入python3环境后,该代码实现了读取数据(这里stm32端一直在发送数据,接收到数据表示正常)
发送数据通过dev.write即可,但是需要发送编码数据如:b'\xd5\xbd\xbd\xa2STM32\xbf\xaa\xb7\xa2\xb0\xe5(什么什么的)
import serial
dev=serial.Serial('/dev/ttyUSB1',115200,timeout=0.5)
dev.readlines()
最后可以用刚开始提供的测试工具直接测试
提供一段测试代码
使用的时候,注意修改COM4为指定的端口即可。这里开了两个线程,进行数据测试。
额外参阅:https://blog.csdn.net/grubberbin/article/details/96476672
import serial
import time
import threading
global ser def thread_recv():
global ser
while True:
read = ser.readall()
if len(read) > 0:
print(read) def thread_send():
global ser
while True:
ser.write('AT+POWER_OFF\r\n'.encode())
#print(ser.readline())
time.sleep(10)
def usart_ctrl():
global ser
ser=serial.Serial("COM4",115200,timeout=0.5)
recv_data = threading.Thread(target=thread_recv)
send_data = threading.Thread(target=thread_send)
recv_data.start()
send_data.start() usart_ctrl()
附解码示例代码
import chardet s = b'\r\n\xd5\xbd\xbd\xa2STM32\xbf\xaa\xb7\xa2\xb0\xe5 \xb4\xae\xbf\xda\xca\xb5\xd1\xe9\r\n\xd5\xfd\xb5\xe3\xd4\xad\xd7\xd3@ALIENTEK\r\n\r\nplease input the message for communication test..\r\n'
print(chardet.detect(s))
print(s.decode('GB2312'))
str = b'\xe5\xae\x9d\xe9\xb8\xa1\xe5\xb8\x82'
print(str.decode('utf-8'))
树莓派和STM32通过USB和串口通信记录的更多相关文章
- stm32学习笔记之串口通信
在基础实验成功的基础上,对串口的调试方法进行实践.硬件代码顺利完成之后,对日后调试需要用到的printf重定义进行调试,固定在自己的库函数中. b) 初始化函数定义: void USART_Confi ...
- USB虚拟串口通信
https://blog.csdn.net/errorhai/article/details/85333914
- STM32嵌入式开发学习笔记(六):串口通信(上)
本文我们将了解STM32与外部设备通过串口通信的方式. 所谓串口通信,其实是一个类似于计算机网络的概念,它有物理层,比如规定用什么线通信,几伏特算高电平,几伏特算低电平.传输层,通信前要发RTS,CT ...
- (三)stm32之串口通信DMA传输完成中断
一.DMA功能简介 首先唠叨一下DMA的基本概念,DMA的出现大大减轻了CPU的工作量.在硬件系统中,主要由CPU(内核).外设.内存(SRAM).总线等结构组成,数据经常要在内存和外设之间,外设和外 ...
- STM32 USB虚拟串口(转)
源:STM32 USB虚拟串口 串口调试在项目中被使用越来越多,串口资源的紧缺也变的尤为突出.很多本本人群,更是深有体会,不准备一个USB转串口工具就没办法进行开发.本章节来简单概述STM32低端芯片 ...
- STM32学习笔记:【004】USART串口通信
版本:STM32F429 Hal库v1.10 串口通信能够实现两块电路之间不同的通信,在开发中作为打印调试也是一门利器(printf重定向). 补充一点小知识: 1. weak修饰符修饰的函数,说明这 ...
- Stm32串口通信(USART)
Stm32串口通信(UART) 串口通信的分类 串口通信三种传递方式 串口通信的通信方式 串行通信的方式: 异步通信:它用一个起始位表示字符的开始,用停止位表示字符的结束.其每帧的格式如下: 在一帧格 ...
- STM32 串口通信使用奇偶校验
STM32串口通信如果使用奇偶校验,需要设置数据位长度为9bit USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USAR ...
- stm32串口通信实验,一点笔记
第一次深入学习stm32,花了好长时间才看懂代码(主要是C语言学习不够深入),又花了段时间自己敲了一遍,然后比对教程,了解了利用中断来串口通信的设置方法. 板子是探索版f407,本实验工程把正点原子库 ...
随机推荐
- webpack publicpath path
一.publicpath 用绝对路径:如 /assets/ 会在支援路径前 加上 /assets/ devServer publicpath 如果没有设置的话,取 publicpath 所以 一般要 ...
- WordPress窗体化侧边栏
窗体化侧边栏是一个支持 Widget 的侧边栏或者说是窗体化(widgetized)的侧边栏几乎是 WordPress 主题的标准. 首先,什么是窗体化(widgetizing)呢?简单的说,窗体化就 ...
- LC 975. Odd Even Jump
You are given an integer array A. From some starting index, you can make a series of jumps. The (1 ...
- 使用LuceneUtil工具类,完成CURD操作
package loaderman.curd; import java.util.ArrayList; import java.util.List; import loaderman.entity.A ...
- C# WPF ASP.net 上传多文件和数据
C# WinForm 上传多文件和数据 public static class HttpHelper { private static readonly Encoding DEFAULTENCODE ...
- pip安装django出错 Could not install packages due to an EnvironmentError: [Errno 13]
pip install django 下载安装Django报错, 按照提示的建议改为 pip install --user django 安装完成
- 关于虚拟机可以ping通本机,本机可以ping通虚拟机,但是虚拟机就是不能上网
1 需要确定虚拟的防火墙已经关闭 2 修改vi /etc/sysconfig/network-scripts/ifcfg-eth0配置文件 增加以下参数 BOOTPROTO=none------- ...
- Go项目实战:打造高并发日志采集系统(六)
前情回顾 前文我们完成了日志采集系统的日志文件监控,配置文件热更新,协程异常检测和保活机制. 本节目标 本节加入kafka消息队列,kafka前文也介绍过了,可以对消息进行排队,解耦合和流量控制的作用 ...
- View的介绍和运用 && FlexBox布局
开始我们今天的项目学习啦~~~~~~ 1> 第一步当然是创建项目啦: 进入终端: 创建ViewDemo项目 命令如下啦,你看懂了对吧...嘻嘻!!! 2>View的介绍和运用 项目安装创建 ...
- Python selenium自动化测试框架入门实战--登录测试案例
本文为Python自动化测试框架基础入门篇,主要帮助会写基本selenium测试代码又没有规划的同仁.本文应用到POM模型.selenium.unittest框架.configparser配置文件.s ...