【Micropython】肝货~使用USB_VCP通过USB串口与树莓派或PC端通信

2023-05-16

为什么要使用USB_VCP?

Micropython有很多串口,例如PYboard,有5个串口可以使用,但是,平时我们在做一些项目的时候,需要使用的引脚较多,可能会产生复用的情况。例如与树莓派进行串口通信时,树莓派只有一个引脚串口,在一些项目中为了不占用这个引脚,将该引脚腾出让给其他无法使用USB串口的设备至关重要。甚至关乎项目成败。40个gpio里只有一个串口,如果我们使用TTL转串口,将Micropython串口转接到树莓派的USB口,那会非常麻烦并且引入了许多未知的,可能导致通信失败的变量。杜邦线的好坏,松紧程度也许会导致通信失败等问题。因此,USB的串口必须要使用起来。我们调试Micropython需要用到的Putty使用的就是该串口。那么也许有小伙伴就会疑惑了,我们使用了这个串口,还可以使用Putty等调试工具进行调试吗。答案是:当然可以!!!

下面附上Micropython引脚图。

废话不多说,直接看USB_VCP。

Micropython引脚图

1、Micropython USB_VCP简介:

USB_VCP是一个内置函数,是标准pyb库下的一个对象。class pyb.USB_VCP

import pyb
usb_vcp = pyb.USB_VCP()  # 将该对象赋给usb_vcp

2、USB_VCP()中的一些方法:

usb_vcp.setinterrupt(chr)

设置中断python运行键,默认是3(Ctrl+C)。
-1是禁止中断功能,在需要发送原始字节时需要。

usb_vcp.any()

如果缓冲区有数据等待接收,返回True

usb_vcp.read([nbytes])

最多读取nbytes字节。如果不指定nbytes参数,那么这个函数和readall()功能相同。

usb_vcp.readall()

读取缓冲区全部数据

usb_vcp.readinto(buf[, maxlen])

读取串口数据并存放到buf。如果指定maxlen参数,那么最多读取maxlen个字节

usb_vcp.readline()

读取整行数据

usb_vcp.readlines()

读取所有数据并分行存储,返回字节对象列表

usb_vcp.write(buf)

写入缓冲区数据,返回写入数据的个数

usb_vcp.recv(data, *, timeout=5000)

data,可以是读取数据个数,或者是缓冲区
timeout,等待接收超时时间

usb_vcp.send(data, *, timeout=5000)

data,缓冲区或者整数
timeout,发送超时时间

 3、一些简单的使用案例:

接收端demo

import pyb
usb_vcp = pyb.USB_VCP()  # 将该对象赋给usb_vcp

if usb_vcp.any(): # 判断是否有数据流入
    reads = usb_vcp.read(25) # 读取25个字符 (或者使用send方法)
    pyb.delay(10)
    print(reads) # 输出读取到的数据

发送端demo

import pyb
usb_vcp = pyb.USB_VCP()  # 将该对象赋给usb_vcp

name = "我亦无争、天亦美"
usb_vcp.write(name) # 将字符串"我亦无争、天亦美"写出  (或者使用recv方法)
pyb.delay(10)
print(name) # 写出的数据

相信看到这里,你已经对USB_VCP这个对象有比较深的概念了,可以去动手尝试一下,如果这些还不足以让你完成你的项目。可以登录Micropython官网查阅相关资料。

MicroPython 1.18 documentation官方文档

MicroPython - Python for microcontrollers官网首页

我的博客还有如何刷写Micropython固件的。如果购买了Micropython不会刷写固件可以看看,固件太旧运行速度会很慢哦~

micropython pyboard stm32f405 固件刷写_我亦无争、天亦美的博客-CSDN博客

欢迎交流学习~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Micropython】肝货~使用USB_VCP通过USB串口与树莓派或PC端通信 的相关文章

随机推荐

  • golang中的flag模块小结

    1 flag常用函数 无论是c语言还是golang语言或是其他语言 xff0c 启动应用程序时都可以带一些参数 xff0c 然后系统根据传入的参数进行特点的工作 如 xff1a main mode online model bert ch
  • Redis批量操作详解及性能分析

    通过mget批量执行指令可以节约网络连接和数据传输开销 xff0c 在高并发场景下可以节约大量系统资源 本文中 xff0c 我们更进一步 xff0c 比较一下redis提供的几种批量执行指令的性能 1 为什么需要批量执行redis指令 众所
  • NDCG:推荐系统/搜索评价指标

    本文转载自 胖喵 博主 xff0c 详细请看https www cnblogs com by dream p 9403984 html 1 CG xff1a 累计增益 CG xff0c cumulative gain xff0c 只考虑到了
  • 特征共线性问题

    多重共线性是使用线性回归算法时经常要面对的一个问题 在其他算法中 xff0c 例如决策树或者朴素贝叶斯 xff0c 前者的建模过程时逐渐递进 xff0c 每次都只有一个变量参与 xff0c 这种机制含有抗多重共线性干扰的功能 xff1b 后
  • 常见回归和分类损失函数比较

    文章转自知乎作者wdmad xff0c 更多内容建议阅读原文 xff1a https zhuanlan zhihu com p 36431289 本博文属于阅读笔记 xff0c 融合了个人观点 1 损失函数 损失函数的一般表示为 L y f
  • 获取keras中间层输出、模型保存与加载

    1 获取keras中间层输出 model summary and plot import keras from keras models import Model from keras utils import plot model Doc
  • HashMap底层实现和原理

    本文是在阅读知乎老刘作品后的整理 内容基于JDK1 7进行分析 xff0c 1 8做的改动文章末尾进行讲解 1 基本要义 1 1 概述 Hashmap在Map派生中的位置 HashMap基于Map接口实现 xff0c 元素以键值对的方式存储
  • 大疆激光雷达Livox Avia开箱及测试

    大疆激光雷达Livox Avia 箱子 从左至右为 xff1a 大疆激光雷达Livox Avia xff0c 电源转接插座 xff0c 内六角形L型扳手 xff0c 镜头清洁布 xff0c 螺钉包 xff0c 说明书 xff0c 1 5米航
  • Go协程与协程池

    1 Golang协程 golang和其它语言最大区别莫过于goroutine xff0c 也就是go的协程 xff0c example如下 xff1a package main import 34 fmt 34 import 34 time
  • Go协程池设计思路(Task-Job-Worker)

    1 铺垫 xff1a Go 的接收器Receiver 在go语言中 xff0c 没有类的概念 xff0c 但是可以给类型 xff08 结构体 xff0c 自定义类型 xff09 定义方法 所谓方法就是定义了接受者的函数 接受者定义在func
  • 系统间通信1:阻塞与非阻塞式通信A

    版权声明 xff1a 本文引用https yinwj blog csdn net article details 48274255 从这篇博文开始 xff0c 我们将进入一个新文章系列 这个文章系列专门整理总结了目前系统间通信的主要原理 手
  • 系统间通信1:阻塞与非阻塞式通信B

    版权声明 xff1a 本文引用https yinwj blog csdn net article details 48274255 接上篇 xff1a 系统间通信1 xff1a 阻塞与非阻塞式通信A 4 3 NIO通信框架 目前流行的NIO
  • 系统间通信2:通信管理与远程方法调用RMI

    本文引用 https yinwj blog csdn net article details 49120813 RMI Remote Method Invocation xff0c 远程方法调用 RPC Remote Procedure C
  • 系统间通信3:RPC的基本概念

    本文引用 https yinwj blog csdn net article details 49453303 1 概述 经过了详细的信息格式 网络IO模型的讲解 xff0c 并且通过JAVA RMI的讲解进行了预热 从这篇文章开始我们将进
  • 系统间通信4:基本IO通信模型

    本文引用 https blog csdn net yinwenjie article details 48472237 目前常用的IO通信模型包括四种 xff1a 阻塞式同步IO 非阻塞式同步IO 多路复用IO和真正的异步IO 所有IO模式
  • 深入理解Golang中的Context包

    context Context是Go语言中独特的设计 xff0c 在其他编程语言中我们很少见到类似的概念 context Context深度支持Golang的高并发 1 Goroutine和Channel 在理解context包之前 xff
  • ubuntu —— 命令行访问网页

    span class hljs variable style margin 0px padding 0px span sudo apt get install w3m span class hljs variable style margi
  • VINS-Mono 加rgbd

    通过对比VINS Mono与其RGBD版本 xff0c 分析其改动思路 一 feature tracker feature tracker node cpp 头文件加入了ros的多传感器时间戳 include lt message filt
  • MFC使用HttpGet和HttpPost方法与服务器通信

    处理过程封装到CHttpClient类中 同时支持http和https HttpClient h cpp view plain copy HttpClient h ifndef HTTPCLIENT H define HTTPCLIENT
  • 【Micropython】肝货~使用USB_VCP通过USB串口与树莓派或PC端通信

    为什么要使用USB VCP xff1f Micropython有很多串口 xff0c 例如PYboard xff0c 有5个串口可以使用 xff0c 但是 xff0c 平时我们在做一些项目的时候 xff0c 需要使用的引脚较多 xff0c