python将txt转json_Python控制乐高EV3,以及VSCODE环境配置

c58a3984405ae9b5db9e9904f9fcc4ae.png

乐高EV3的可扩展性很强,但如何用pc连接ev3,并用python代码来控制EV3,资料太少了,试着做了一次,记录在这里。

需要的硬/软件

硬件准备

一、乐高EV3

二、PC,win10系统

三、TF卡(我用的是64G的)

四、TF卡读卡器

软件准备

一、必须的:

(一)python

官方下载地址:https://www.python.org/downloads/

(二)Win32 Disk Imager

官方下载地址:https://sourceforge.net/projects/win32diskimager/files/latest/download

(三)EV3Dev

本质上是一个 Debian Linux 的操作系统,我们将让EV3加载这个操作系统,然后利用Python来操作EV3。

EV3Dev有两个版本:

1.0-版本名称叫Jessie

2.0-版本名称叫Stretch

我用的是Stretch,没比较过两个版本的区别。

官方下载地址:https://www.ev3dev.org/docs/getting-started/

二、看情况选择:

(一)python的IDE或编辑器

可选的很多,pycharm, visual studio code(vs code),jupyter, notepad++等等都可以。

vs Code是一个不错的选择,轻量级,扩展多,连接方便。

当然,选择其他也没问题。

附上vs code官方载地址:https://code.visualstudio.com/

(二)将PC和EV3相连的软件

如果已经选择了vs code,也可以不另外下载,因为vs code可以很方便的连接上EV3。

或者,也可以下win scp,通过它,在PC和EV3之间传输文件。

win scp官方下载地址:https://winscp.net/eng/index.php

基本原理

本质就是将一个叫Ev3Dev的Linux系统先装到TF卡上,然后将TF卡插入EV3机器中,这样,开机时EV3就会加载TF卡上的操作系统。

然后将代码文件(.py)写入EV3中执行。

如果想用回原生的系统,关机后拔卡重新启动EV3就好。

步骤

一、打开Win32 Disk Imager, 将下载的ev3dev2映像文件(img文件)写入空白的TF卡中。

bece6f52bab7f0e9fa0d26a8e2112152.png

119fea5e80c00e68d74d0cde91a895bf.png

二、将TF卡插入EV3中,开机。开机时间较久,大概需要30秒甚至更长,要耐心等待。

579c11dbf5e82c751edec5a4f1a21df1.png

555f6606-3e2e-eb11-8da9-e4434bdf6706.png

到出现这个图,就差不多了。

ca329586d89a37aec43f58d2773b2447.png

最后会出现这个界面,就OK了。

193aab1964768ab61f463327f07a3a46.png

三、连接PC和EV3

1.USB线连接

按下图选择:

daae8fbe0b582aca928e143dbbbab8cf.png

7cd1886d6520c0928a9026b15855ffe1.png

64c0e137d90049e5732ed68b11ce4121.png

2.蓝牙

按下图选择

44eea36dd2aaab6da20d4e74cde7cf03.png

3.wifi,这个需要适配器。我没有。

不论哪种方式,连接成功后在EV3机器屏幕最上一行会出现EV3的IP地址。

64c0e137d90049e5732ed68b11ce4121.png

到了这步,可以打开win scp,输入EV3的IP地址登录EV3了。如果已经写好了代码,就可以将代码传进EV3执行了。

默认登录名:robot,默认密码:maker

71d367bf13f43a104bffbda53e4d677d.png

4cabe837c530f6d49c9af18e0807c713.png

不过且慢, 在将你的代码传进EV3之前,需要对传输的文件进行权限设置。(因为现在EV3上运行的EV3Dev是linux系统,linux系统的文件是否可执行,不是看扩展名,而是依赖文件权限的设置。)

打开win scp后,根据如下设置:

22950f5c50e5e2df750371400556d879.png

设置完成后,就可以将py文件传进EV3,在EV3上通过filebrowser找到文件,直接点击EV3中间的按钮就可以运行了。

现在,EV3真的可以运行自己写的py文件了。

如果使用VS code,则不用进行py文件的权限设置,因为vs code在将文件传进EV3之前处理好文件的权限。


如果你打算使用jupyter, notepad++这些编辑器编辑生成py文件,然后再用win scp传到EV3,那就不用往下看了。

以下是使用vscode才需要看。

vscode的确比较便捷好用,它可以编辑代码,连接EV3,调试及运行代码。推荐一试。

四、安装vs code

省略,如不懂可自行搜索。

五、通过vscode连接EV3。若连接成功,EV3名称前会有个小绿点。

a5fb5c79b18934217b88dd684ba1fbe0.png

040f4def16170f21dd04c557569f0956.png

675041aabb731b80decb9e31a7d2db1f.png

六、重点是配置

1.安装扩展

(1)microsoft python extension

(2)ev3dev-browser

b3c6fa762d1b85c410ee2c2e66025e54.png

2.选择一种方式启动一个项目

08b5b124277d7429de61f009e7b7f4e1.png

3.下载一个开始项目

下载地址:https://github.com/ev3dev/vscode-hello-python

20ceca4bf4df52dcfc539f912b754106.png

下载这个项目的意义在于,这个项目里边有一个文件夹:.vscode,文件夹里包含下面几个配置文件,其中的launch.json、settings.json对配置有用。当然,自己编写也是可以的。

launch.json

settings.json

extensions.json

.gitignore

把.vscode文件夹复制到项目的工作文件夹,删掉extension.json, .gitignore,只保留launch.json、settings.json

73a9070a9bc1940213fb1077691711fc.png

fce6c8bd080154d03dc9b0043ae96b04.png

4.修改配置文件

(1)launch.json修成为如下,重点是

"program": "/home/robot/${workspaceRootFolderName}/${relativeFile}"

{"version": "0.2.0","configurations": [{"name": "Download and Run Current File","type": "ev3devBrowser","request": "launch","program": "/home/robot/${workspaceRootFolderName}/${relativeFile}"}]
}

(2)settings.json修改如下:

{"files.eol": "n","ev3devBrowser.download.exclude": "{**/.*,LICENSE,README.md}"
}

配置成功后,在Debug界面中会出现Download and run current file.

01fda3736d77c917b3253ab6c803a627.png

而原来的Debug界面是这样的:

5e8f70d3578387e2e07969726816a947.png

5.配置虚拟环境(视情况而定,也可以不做。)

这一步的目的是,是让文件的运行有一个“相对独立且干净”的python环境,如果觉得不需要,也可以不做。

另外,这一步,可以部分解决“unable to import ev3dev2 ”报错。

一、确定已安装有ev3dev2库,如无,先在vscode终端或在cmd中安装:

pip install --upgrade pip
pip install python-ev3dev2

二、确认安装有virtualenv,如没有,先安装。

pip install virtualenv

三、打开CMD(win+R打开),进入工作文件夹,然后输入以下代码,作用是建立虚拟环境:

py -3 -m venv .venv

40829344d50a00a921618da1d1130af9.png

然后激活:

.venvScriptsactivate

运行activate后,会成这样:

2a8dad37dc4bc55ef0e0c87ec5eabb5a.png

这时,在工作文件夹内会多一个.venv的文件夹,说明成功。

eb9840aa66f477440fc15dd463ed9395.png

0b8f88a5b222045ab201946b3a7817af.png

四、点击下方蓝色状态栏的最左侧,将python解释器修改为虚拟环境中的解释器。

4a3ab6288843dd4442a7dcc5ca157330.png

七、其他

确定.py文件中代码的开头为:

#!/usr/bin/env python3

21bf64d7fc25cff9c75695fdc6f11cc6.png

否则会报错。

成功运行

连接好EV3和PC,随便写了一段代码,按F5运行,成功!

903ef9a3cf5e41a7b92dc99156cf9c29.png
851641e9e3ccb4afd39f17a67adf3847.png
https://www.zhihu.com/video/1197284882014138368
#!/usr/bin/env python3
import ev3dev2.fonts as fonts
from ev3dev2.motor import *
from ev3dev2.sound import *
from ev3dev2.led import *
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.button import *
from ev3dev2.display import *
from PIL import Image
from time import sleep, time
import tracebackclass myev3:def __init__(self,txt):# print("program starting...")self.m = Motor(address="A")self.sd=Sound()self.btn=Button()self.led=Leds()self.lcd=Display()self.txt=txtdef disp(self,txt):self.lcd.draw.text((5,10),txt, font=fonts.load('luBS14'))self.lcd.update()sleep(5)def left(self,state):if state:self.sd.speak('you press the left')self.m.on_for_rotations(SpeedPercent(50),5)self.led.set_color("LEFT","ORANGE")def right(self,state):if state:self.sd.speak('hello,nice to meet you.')self.led.set_color("LEFT","YELLOW")def showlogo(self):self.logo = Image.open('../py/pics/dzxclogo.jpg')self.lcd.image.paste(self.logo, (0,0))self.lcd.update()sleep(5)def run(self):       self.btn.on_left=self.leftself.btn.on_right=self.rightself.disp(self.txt)self.showlogo()while True:self.btn.process()sleep(0.02)           if __name__=='__main__':try:my=myev3("Welcome to nDa Zhi Xiao Chao nScientific labratory")my.run()except:# If there is any error, it will be stored in the log file in the same directorylogtime = str(time())f=open("log" + logtime + ".txt",'a')  traceback.print_exc(file=f)  f.flush()  f.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470554.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

移动文件读/写指针----lseek

头文件&#xff1a;#include<sys/types.h>、#include<unistd.h> 函数原型&#xff1a;off_t lseek(int fildes,off_t offset,int whence) 参数说明&#xff1a;fildes:文件描述符 offset:偏移量&#xff0c;正数表示正向偏移&#xff0c;负数表示负向偏移。 whence…

Yolo系列知识点梳理(Yolov1-v5)

文章目录1 概述2 Yolo系列模型2.1 基石 - Yolov12.1.1 Yolov1的网络结构2.1.2 Yolov1的feature map2.1.3 Yolov1的训练2.1.4 Yolov1的预测2.1.5 Yolov1小结2.2 Yolo9000 - Yolov22.2.1 Better2.2.1.1 引入了Batch normalization2.2.1.2 高分辨率的分类器2.2.1.3 加入了anchor机…

二十二、PHP框架Laravel学习笔记——集合的使用

一&#xff0e;创建集合 什么是集合&#xff1f;即&#xff1a;它是一种更具读取性和处理能力的数组封装&#xff1b;比如&#xff0c;我们从数据库得到的数据列表&#xff0c;它就是一种集合&#xff1b;数据集合&#xff0c;提供了大量的方法方便我们进行各种操作&#xff1…

二十三、PHP框架Laravel学习笔记——集合的常用方法

一&#xff0e;常用方法 all()方法&#xff0c;转换为属性形式输出&#xff0c;使用 dd 方法看类型&#xff1b; $collection collect([1, 2, 2, 3, 4, 4, 4]); dd($collection->all()); PS&#xff1a;$collection->dd()方法可以以 dd()模式输出&#xff0c;还有 du…

mac看图软件哪个好用_细数Mac上那些好用且免费的软件(三)

许多朋友购买了Mac电脑之后发现很多软件都没有&#xff0c;而且苹果商店好多软件都是收费的。那有没有免费的软件也能满足日常的需求呢&#xff1f;macw小编就为大家推荐一些免费且超级好用的软件&#xff0c;赶快来看看有没有你需要的吧&#xff01;细数Mac上那些好用且免费的…

图像表格实线和虚线检测

文章目录1 背景简述2 camelot中的方法2.1 二值化2.2 腐蚀膨胀2.3 轮廓检测2.4 结果展示3 基于霍夫直线检测的方法3.1 霍夫直线检测原理3.2 概率霍夫直线检测3.3 霍夫直线应用参考资料1 背景简述 图像中的表格结构化是一个比较热门的话题&#xff0c;其输入是一张图片&#xff…

二十四、PHP框架Laravel学习笔记——模型的数据集合

一&#xff0e;数据集合 数据集合&#xff0c;就是已经将模型方法 get()获取到的数据再进行处理&#xff1b;比如&#xff1a;map()方法&#xff0c;通过它可以实现类似访问器一样对字段进行处理的效果&#xff1b; $users User::get(); //使用集合方法 map 可以对输出的字…

论文阅读 - AUTOVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss

文章目录1 概述2 模型架构3 模块解析3.1 获取梅尔频谱3.2 speaker encoder3.3 AutoVC3.4 Vocoder4 关键部分参考资料1 概述 voice conversion这个任务的目标是输入两个音频&#xff0c;其输入是两段音频&#xff0c;一段音频称为content_audio&#xff0c;另一段称为speaker_a…

二十五、PHP框架Laravel学习笔记——模型的一对一关联

一&#xff0e;关联概念 关联模型&#xff0c;即&#xff1a;两张或以上的表进行一定规则的绑定关联&#xff1b;比如&#xff1a;一个学生(学生表)对应一张个人信息卡(信息表)&#xff0c;这种就是一对一&#xff1b;再比如&#xff1a;一篇博文(帖子表)对应多个评论(评论表)…

小工具:基于颜色的视频和图片切割

文章目录1 前言2 方案简述3 效果1 前言 最近做一个短视频相关的项目的时候&#xff0c;发现输入的视频有很多是有黑边的&#xff0c;有些可能是白边或者其他颜色的边。这对下游的模型处理有很大的影响。于是就写了一个自动判断填充边的颜色&#xff0c;并根据该颜色自动切割视…

二十六、PHP框架Laravel学习笔记——模型的一对多关联

二&#xff0e;一对多关联 一对多关联&#xff0c;本质上使用方法和一对一关联类似&#xff0c;内部实现略有不同&#xff1b; 创建另一个模型&#xff1a;book.php&#xff0c;我们看下这个表数据&#xff1b; PS&#xff1a;这里 user_id19 有三个&#xff0c;也就是蜡笔小…

论文阅读 - An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

文章目录1 概述2 方法简述2.1 encoder之前2.2 encoder之后3 实验结果参考资料1 概述 这篇论文是一篇将tranformer引入到图像领域的里程碑式的文章。因为这是第一次在处理图像时&#xff0c;将所有的卷积模块统统抛弃&#xff0c;只使用attention。并且实验证明了只用attention…

python五子棋人机对战_Python:游戏:五子棋之人机对战

原标题&#xff1a;Python&#xff1a;游戏&#xff1a;五子棋之人机对战 开端 画棋盘 首先肯定是要画出棋盘来&#xff0c;用 pygame 画出一个 19 19 或 15 15 的棋盘并不是什么难事&#xff0c;这在之前的文章中已经多次用到&#xff0c;就不赘述了。 画棋子 需要说一下的是…

二十七、PHP框架Laravel学习笔记——模型的多对多关联

二&#xff0e;多对多关联 多对多关联&#xff0c;比前面两种要复杂一些&#xff0c;需要一张中间表&#xff0c;共三张&#xff1b; (1) .users&#xff1a;用户表&#xff1b; (2) .roles&#xff1a;权限表&#xff1b; (3) .role_user&#xff1a;中间表&#xff1a;默…

论文阅读 - Is Space-Time Attention All You Need for Video Understanding?

文章目录1 概述2 模型结构2.1 模型输入2.2 attention模块2.3 分类模块3 模型分析3.1 不同attention方式3.2 不同的输入3.3 不同的模型3.4 不同的预训练数据3.5 不同的数据量3.6 position embedding的影响3.7 长输入时长3.8 不同的transformer3.9 不同的patch size3.10 attentio…

iOS中常见的6种传值方式,UIPageViewController

通过属性传值、方法传值、代理传值、Block传值、单例传值、通知传值6种方式进行不同视图之间的传值。不同方式只需要在AppDelegate中更改下UINavigationController的根控制器即可。使用很简单的实例让你很快理解不同的传值方式。 UIPageViewController(上传者&#xff1a;JoneJ…

websocket 获取ip_Spark+Kafka+WebSocket+eCharts实时分析-完全记录(1)

本系列内容&#xff1a;Kafka环境搭建与测试Python生产者/消费者测试Spark接收Kafka消息处理&#xff0c;然后回传到KafkaFlask引入消费者WebSocket实时显示版本&#xff1a;spark-2.4.3-bin-hadoop2.7.tgzkafka_2.11-2.1.0.tgz------------------------第1小节&#xff1a;Kaf…

二十八、PHP框架Laravel学习笔记——模型的关联查询

二&#xff0e;关联查询 前几篇博文&#xff0c;了解了三种基础的关联模型&#xff0c;并简单的进行查询&#xff1b;本节课&#xff0c;我们详细的了解更多的查询方案&#xff1b; //下面两种查询是一样的&#xff1b; $books User::find(19)->book; $books User::fin…

搞懂CRF

文章目录1 前言2 Log-linear model3 MEMM3.1 模型概述3.2 label bias问题4 CRF4.1 模型概述4.2 模型训练4.3 模型解码4.4 小结参考资料1 前言 条件随机场(conditional random field, CRF)是在建立序列模型时的常用模块&#xff0c;它的本质就是描述观测到的序列xˉ\bar{x}xˉ对…

skywalking 安装_SkyWalking全链路追踪利器

随着目前系统架构的复杂度越来越高(中台、微服务)&#xff0c;并且线上应用的多级监控覆盖到了通讯、应用处理过程监控并且实现端到端的应用监测&#xff0c;线上性能故障的快速定位修复&#xff1b;而传统的监控分析方式已经无法满足我们的需求&#xff0c;因此许多强大的APM工…