不管怎样,为了简便开发,通信选择串口通信。

推荐文章: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和串口通信记录的更多相关文章

  1. stm32学习笔记之串口通信

    在基础实验成功的基础上,对串口的调试方法进行实践.硬件代码顺利完成之后,对日后调试需要用到的printf重定义进行调试,固定在自己的库函数中. b) 初始化函数定义: void USART_Confi ...

  2. USB虚拟串口通信

    https://blog.csdn.net/errorhai/article/details/85333914

  3. STM32嵌入式开发学习笔记(六):串口通信(上)

    本文我们将了解STM32与外部设备通过串口通信的方式. 所谓串口通信,其实是一个类似于计算机网络的概念,它有物理层,比如规定用什么线通信,几伏特算高电平,几伏特算低电平.传输层,通信前要发RTS,CT ...

  4. (三)stm32之串口通信DMA传输完成中断

    一.DMA功能简介 首先唠叨一下DMA的基本概念,DMA的出现大大减轻了CPU的工作量.在硬件系统中,主要由CPU(内核).外设.内存(SRAM).总线等结构组成,数据经常要在内存和外设之间,外设和外 ...

  5. STM32 USB虚拟串口(转)

    源:STM32 USB虚拟串口 串口调试在项目中被使用越来越多,串口资源的紧缺也变的尤为突出.很多本本人群,更是深有体会,不准备一个USB转串口工具就没办法进行开发.本章节来简单概述STM32低端芯片 ...

  6. STM32学习笔记:【004】USART串口通信

    版本:STM32F429 Hal库v1.10 串口通信能够实现两块电路之间不同的通信,在开发中作为打印调试也是一门利器(printf重定向). 补充一点小知识: 1. weak修饰符修饰的函数,说明这 ...

  7. Stm32串口通信(USART)

    Stm32串口通信(UART) 串口通信的分类 串口通信三种传递方式 串口通信的通信方式 串行通信的方式: 异步通信:它用一个起始位表示字符的开始,用停止位表示字符的结束.其每帧的格式如下: 在一帧格 ...

  8. STM32 串口通信使用奇偶校验

    STM32串口通信如果使用奇偶校验,需要设置数据位长度为9bit USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USAR ...

  9. stm32串口通信实验,一点笔记

    第一次深入学习stm32,花了好长时间才看懂代码(主要是C语言学习不够深入),又花了段时间自己敲了一遍,然后比对教程,了解了利用中断来串口通信的设置方法. 板子是探索版f407,本实验工程把正点原子库 ...

随机推荐

  1. django 快速实现登陆,接着注册的项目写(五)

    1.改项目的urls.py from django.conf.urls import url,include from django.contrib import admin admin.autodi ...

  2. SQL Labs刷题补坑记录(less54-less65)

    LESS54: 只有10次尝试,dump处secret key 直接union 查就可以,括号为单引号闭合 LESS55: 尝试出来闭合的方式为)括号,后面操作与54相同 LESS56: 尝试出来括号 ...

  3. fastadmin编辑内容,有下拉选择关联的内容,自定义的参数去获取相应的下拉内容

    1.可以到你的编辑页面中添加自定义条件 data-params='{"custom[shop_id]":"2"}'

  4. 动态库(.so)隐藏函数名

    一.偶遇 error: undefined reference to  xxx 问题 尝试封装通用的接口到一个private.so,然后供客户端使用,private.so编译出来后由sample.cp ...

  5. 在react项目中启用mobx的配置方法

    1.安装插件 npm install --save-dev babel-preset-mobx mobx mobx-react 2.package.json配置 "dependencies& ...

  6. PHP模板引擎Smarty内建函数section,sectionelse用法详解

    本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...

  7. JVM学习笔记之认识JDK(一)

    1. HotSpot VM: HotSpot VM是Sun JDK和OpenJDK中所带的虚拟机,也是目前使用范围最广的Java虚拟机. 什么是HotSpot VM & 深入理解Java虚拟机 ...

  8. 连接局域网mysql数据库

    1.先确认mysql服务端端口在防火墙是否开放外网连接(添加): windows防火墙 >高级设置 >入站规则 >新建规则 >选择端口 >添加端口 >后面直接下一步 ...

  9. docker数据管理(2)

    一.docker存储资源类型 docker两种存储资源类型 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉 ...

  10. Linux日常用的命令

    查看一个文件夹是的挂载路径,比如查看opt文件夹挂载在哪:df /opt root@iZ2zedo02x7n4nuc3lb4ueZ:~# df /opt Filesystem 1K-blocks Us ...