python将txt转json_Python控制乐高EV3,以及VSCODE环境配置
樂高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卡中。
二、將TF卡插入EV3中,開機。開機時間較久,大概需要30秒甚至更長,要耐心等待。
到出現這個圖,就差不多了。
最后會出現這個界面,就OK了。
三、連接PC和EV3
1.USB線連接
按下圖選擇:
2.藍牙
按下圖選擇
3.wifi,這個需要適配器。我沒有。
不論哪種方式,連接成功后在EV3機器屏幕最上一行會出現EV3的IP地址。
到了這步,可以打開win scp,輸入EV3的IP地址登錄EV3了。如果已經寫好了代碼,就可以將代碼傳進EV3執行了。
默認登錄名:robot,默認密碼:maker
不過且慢, 在將你的代碼傳進EV3之前,需要對傳輸的文件進行權限設置。(因為現在EV3上運行的EV3Dev是linux系統,linux系統的文件是否可執行,不是看擴展名,而是依賴文件權限的設置。)
打開win scp后,根據如下設置:
設置完成后,就可以將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名稱前會有個小綠點。
六、重點是配置
1.安裝擴展
(1)microsoft python extension
(2)ev3dev-browser
2.選擇一種方式啟動一個項目
3.下載一個開始項目
下載地址:https://github.com/ev3dev/vscode-hello-python
下載這個項目的意義在于,這個項目里邊有一個文件夾:.vscode,文件夾里包含下面幾個配置文件,其中的launch.json、settings.json對配置有用。當然,自己編寫也是可以的。
launch.json
settings.json
extensions.json
.gitignore
把.vscode文件夾復制到項目的工作文件夾,刪掉extension.json, .gitignore,只保留launch.json、settings.json。
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.
而原來的Debug界面是這樣的:
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然后激活:
.venvScriptsactivate運行activate后,會成這樣:
這時,在工作文件夾內會多一個.venv的文件夾,說明成功。
四、點擊下方藍色狀態欄的最左側,將python解釋器修改為虛擬環境中的解釋器。
七、其他
確定.py文件中代碼的開頭為:
#!/usr/bin/env python3否則會報錯。
成功運行
連接好EV3和PC,隨便寫了一段代碼,按F5運行,成功!
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()總結
以上是生活随笔為你收集整理的python将txt转json_Python控制乐高EV3,以及VSCODE环境配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongodb数据库导出备份
- 下一篇: vue @input带参数_Vue 全家