python學(xué)習(xí)交互模式 micropython是用python寫(xiě)的嗎?
micropython是用python寫(xiě)的嗎?MicroPython本來(lái)是為嵌入式微處理器設(shè)計(jì)運(yùn)行的,比如也可以在nRF51822 (256kB flash 16kB RAM)的芯片上運(yùn)行,也有人慌慌
micropython是用python寫(xiě)的嗎?
MicroPython本來(lái)是為嵌入式微處理器設(shè)計(jì)運(yùn)行的,比如也可以在nRF51822 (256kB flash 16kB RAM)的芯片上運(yùn)行,也有人慌慌張張?jiān)赟TM32F103上運(yùn)行。拜托,從代碼的角度來(lái)說(shuō),Python函數(shù)棧的官方默認(rèn)是16K RAM,也就是說(shuō)它可以在很多微芯片上提供一個(gè)極小的Python代碼交互環(huán)境,但這并不包括它們的擴(kuò)展函數(shù)。畢竟編譯更多的功能代碼意味著。需要更多的閃存或外部存儲(chǔ)。
高度和寬度
根據(jù)定位場(chǎng)景,我們可以看到MicroPython在硬件深度上可以走向超低功耗芯片開(kāi)發(fā)領(lǐng)域,Python語(yǔ)言的開(kāi)發(fā)模式?jīng)Q定了它的軟件寬度,在全世界流行的Python領(lǐng)域都可以借鑒。參考一下,這帶來(lái)了很多改變,比如改變了以前的硬件測(cè)試流程和開(kāi)發(fā)流程,改變了硬件程序開(kāi)發(fā)難的刻板印象,后面會(huì)詳細(xì)介紹。
Arduino(C)
基于c代碼的設(shè)計(jì)
它的優(yōu)勢(shì)是兼容C,可以無(wú)縫訪問(wèn)ESP-IDF。
大量的遺留代碼庫(kù)可以直接集成使用。
近年來(lái)外設(shè)硬件庫(kù)質(zhì)量大打折扣,導(dǎo)致硬件開(kāi)發(fā)后缺乏穩(wěn)定性。
Java description language
常見(jiàn)于Ruff lite、JerryScript等。
一個(gè)新的東西,類似于MicroPython的結(jié)構(gòu)。
支持JS異步驅(qū)動(dòng)事件模型要求芯片必須有系統(tǒng)(RTOS)。
在硬件上使用瀏覽器開(kāi)發(fā)方法。
硬件驅(qū)動(dòng)相關(guān)的支持庫(kù)比較薄弱,所以基于它深耕硬件接口的開(kāi)發(fā)者并不多。
相關(guān)開(kāi)發(fā)資料和代碼不夠穩(wěn)定。
Left upper arm
與MicroPython和JerryScript相比,它的可移植性更簡(jiǎn)單。
如倉(cāng)庫(kù):
但因?yàn)閘ua是小眾語(yǔ)言,所以地位和bat、bash差不多。
所以它在開(kāi)發(fā)和應(yīng)用領(lǐng)域不是很受歡迎,但作為一個(gè)自動(dòng)化腳本工具,它仍然很棒。
基本沒(méi)有周邊相關(guān)的開(kāi)發(fā)資料,了解lua的大多是自戀的,比如我(大概)。
ESPEasy
大概是一個(gè)開(kāi)發(fā)環(huán)境,類似于路由器系統(tǒng)(openwrt)。
It 除了好玩之外,它一無(wú)是處。
像這樣的固件還有很多,所以我贏了。;這里就不舉例了。
esp-idf
硬件開(kāi)發(fā)芯片廠商一般提供SDK,esp32提供的多為esp-idf、esp-adf、esp-mdf等等,對(duì)應(yīng)的stm32 hal或CC25XX棧為原生。c代碼SDK。
上述開(kāi)發(fā)環(huán)境是基于這種持續(xù)開(kāi)發(fā)所獲得的產(chǎn)品。
在上述對(duì)各種開(kāi)發(fā)環(huán)境的初步了解之后,讓 下面我們來(lái)比較一下MicroPython的優(yōu)缺點(diǎn)。
Advantages and disadvantages of microfilaments
不難看出,MicroPython和Python一樣,發(fā)揮了glue語(yǔ)言的優(yōu)勢(shì),最大限度地兼容并保持了各自的優(yōu)勢(shì),減少了劣勢(shì)。
在動(dòng)態(tài)語(yǔ)言大戰(zhàn)中,MicroPython保持了面向進(jìn)程、對(duì)象、節(jié)和函數(shù)的編程語(yǔ)法,豐富的開(kāi)發(fā)帶來(lái)了代碼開(kāi)發(fā)的廣度。另一方面,lua從語(yǔ)法上砍掉了很多開(kāi)發(fā)中常用的語(yǔ)法糖,大大削減了代碼量。從開(kāi)箱即用的角度來(lái)看,MicroPython迎合了大多數(shù)開(kāi)發(fā)者的拿來(lái)主義(我?)。
與JavaScript相比,Python沒(méi)有。;在性能上沒(méi)有太多優(yōu)勢(shì)。唯一的優(yōu)勢(shì)是Js s編程思維很長(zhǎng)一段時(shí)間不適合面向過(guò)程領(lǐng)域的C語(yǔ)言硬件編程,比如串口收發(fā)機(jī)。在Js中,在基于的異步事件綁定模型下,需要設(shè)置一些回調(diào)函數(shù)等待處理。在MicroPython中,通過(guò)多線程可以實(shí)現(xiàn)Js效果,但是通過(guò)While無(wú)限循環(huán)輪詢或者不使用多線程的非阻塞狀態(tài)機(jī)也可以實(shí)現(xiàn)同樣的功能。后者 s無(wú)限循環(huán)是嵌入式c中常見(jiàn)的編程習(xí)慣,然而在JS的硬件編程中,如果一個(gè)函數(shù)出現(xiàn)無(wú)限循環(huán),那真的是災(zāi)難,所有后臺(tái)線程都可以 t run,但是無(wú)限循環(huán)的開(kāi)發(fā)確實(shí)不好,建議多開(kāi)發(fā)硬件。編寫(xiě)異步驅(qū)動(dòng)程序代碼或狀態(tài)機(jī)代碼來(lái)提高IO性能。
所以在眾多動(dòng)態(tài)語(yǔ)言中,MicroPython與C語(yǔ)言的兼容性最好,在編程中也是如此。同時(shí),向后兼容語(yǔ)言吸收了優(yōu)秀上層代碼的精華,尤其是異常機(jī)制和動(dòng)態(tài)類型。
此時(shí),與C或C語(yǔ)言相比,MicroPython犧牲了部分執(zhí)行性能,返回C的每段Python代碼平均執(zhí)行函數(shù)操作增加了5 us左右,這是我寫(xiě)軟串口時(shí)發(fā)現(xiàn)的,但也帶來(lái)了解釋器連接。通過(guò)動(dòng)態(tài)調(diào)整執(zhí)行接口的參數(shù),加速了硬件程序的驗(yàn)證和開(kāi)發(fā)。
在硬件程序的主控開(kāi)發(fā)中,我們經(jīng)常會(huì)面臨大量的硬件API通信調(diào)試,就像在網(wǎng)絡(luò)服務(wù)中調(diào)試HTTP API,在硬件中控制UART、I2C、SPI、RS485、CAN等從設(shè)備,使得用Micropthon開(kāi)發(fā)驗(yàn)證比用C和Arduino快。畢竟他們每次編譯2分鐘,運(yùn)行10秒,而Micropthon燒2分鐘,然后每5秒運(yùn)行一次。反復(fù)操作,這也得益于MicroPython的硬件外設(shè)驅(qū)動(dòng)開(kāi)發(fā)相當(dāng)可靠穩(wěn)定(其實(shí)也是ESP-IDF穩(wěn)定可靠XD的原因)。
所以我可以在幾個(gè)小時(shí)內(nèi)調(diào)試別人花一天調(diào)試的硬件接口,尤其是多機(jī)協(xié)議的重復(fù)測(cè)試接口,比如Modbus readaddr或者這種接口。當(dāng)然,上面提到的開(kāi)發(fā)甚至是封裝成AT指令的接口。模式也可以,但是更復(fù)雜的后續(xù)邏輯操作可以在Python解釋器的基礎(chǔ)上編寫(xiě),而不是調(diào)試AT固件的指定接口形式。
總而言之,MicroPython s硬件開(kāi)發(fā)狀態(tài)處于硬件開(kāi)發(fā)的初步驗(yàn)證和原始開(kāi)發(fā)階段,后期大部分會(huì)轉(zhuǎn)回C。在軟件領(lǐng)域,有大量的邏輯樣本代碼供硬件開(kāi)發(fā)調(diào)用和測(cè)試,對(duì)于硬件開(kāi)發(fā)人員來(lái)說(shuō)會(huì)收獲更多。多控硬件的方讓軟件人員更容易配合硬件人員開(kāi)發(fā)調(diào)試硬件。
標(biāo)簽
Python如何畫(huà)出交互式漏斗圖?
pyecharts中的漏斗功能可以繪制漏斗圖,根據(jù)數(shù)據(jù)大小自動(dòng)生成自上而下排列的漏斗狀圖形。
工具/原材料pythonpyecharts方法/步驟導(dǎo)入到漏斗模塊。
Import funnel from pyecharts
初始化圖形參數(shù)。
Funnel funnel (funnel diagram