树莓派和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,本实验工程把正点原子库 ...
随机推荐
- django 快速实现登陆,接着注册的项目写(五)
1.改项目的urls.py from django.conf.urls import url,include from django.contrib import admin admin.autodi ...
- SQL Labs刷题补坑记录(less54-less65)
LESS54: 只有10次尝试,dump处secret key 直接union 查就可以,括号为单引号闭合 LESS55: 尝试出来闭合的方式为)括号,后面操作与54相同 LESS56: 尝试出来括号 ...
- fastadmin编辑内容,有下拉选择关联的内容,自定义的参数去获取相应的下拉内容
1.可以到你的编辑页面中添加自定义条件 data-params='{"custom[shop_id]":"2"}'
- 动态库(.so)隐藏函数名
一.偶遇 error: undefined reference to xxx 问题 尝试封装通用的接口到一个private.so,然后供客户端使用,private.so编译出来后由sample.cp ...
- 在react项目中启用mobx的配置方法
1.安装插件 npm install --save-dev babel-preset-mobx mobx mobx-react 2.package.json配置 "dependencies& ...
- PHP模板引擎Smarty内建函数section,sectionelse用法详解
本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...
- JVM学习笔记之认识JDK(一)
1. HotSpot VM: HotSpot VM是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机. 什么是HotSpot VM & 深入理解Java虚拟机 ...
- 连接局域网mysql数据库
1.先确认mysql服务端端口在防火墙是否开放外网连接(添加): windows防火墙 >高级设置 >入站规则 >新建规则 >选择端口 >添加端口 >后面直接下一步 ...
- docker数据管理(2)
一.docker存储资源类型 docker两种存储资源类型 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉 ...
- Linux日常用的命令
查看一个文件夹是的挂载路径,比如查看opt文件夹挂载在哪:df /opt root@iZ2zedo02x7n4nuc3lb4ueZ:~# df /opt Filesystem 1K-blocks Us ...