精品国产一区在线_av无码中文字幕无码王_天海翼三点刺激高潮不停_好硬好大好爽视频_欧美高清一区三区在线专区_香蕉黄色片

嵌入式開發(fā)中PlantUML圖表的應用!

在嵌入式開發(fā)中,設計文檔和系統(tǒng)架構圖是溝通需求、梳理邏輯的核心工具。

但傳統(tǒng)的拖拽式繪圖工具效率低、難以維護,而PlantUML通過代碼生成圖表的方式,完美解決了這一問題。

它不僅支持UML圖,還能繪制網(wǎng)絡拓撲、狀態(tài)機等嵌入式常用圖表,代碼即文檔,版本可控

今天我們就來分享如何用PlantUML進行嵌入式圖表設計!

一、plantuml環(huán)境

我們可以使用plantuml在線服務器,也可以自己安裝本地環(huán)境。

1、plantuml在線服務器

在線服務器提供了個很簡潔的界面,在編輯區(qū)編寫plantuml代碼,對應地就能顯示繪圖效果;可以導出PNG、SVG、ASCII Art三種格式。

http://www.plantuml.com/plantuml/uml/SyfFKj2rKt3CoKnELR1Io4ZDoSa700001

2、本地環(huán)境

我們可以搭建本地環(huán)境:VSCode中安裝plantuml 插件

搭建本地環(huán)境需要依賴JavaGraphViz

plantuml快速入門指南:https://plantuml.com/zh/starting

java:https://www.oracle.com/java/technologies/downloads

graphviz:https://graphviz.org/download/

二、繪制時序圖

在我們嵌入式中,常常需要梳理各種業(yè)務流程的時序。

比如嵌入式設備與傳感器、外設的通信協(xié)議解析。

假設需要通過I2C讀取溫濕度傳感器的數(shù)據(jù),時序圖可清晰展示主從設備交互,PlantUML代碼示例如:

@startumlparticipant MCU as "主控MCU"participant Sensor as "溫濕度傳感器"MCU -> Sensor: 發(fā)送啟動信號(START)MCU -> Sensor: 發(fā)送設備地址(0x44)activate Sensor #LightBluealt 地址匹配成功    Sensor --> MCU: ACK響應    MCU -> Sensor: 讀取溫濕度寄存器    Sensor --> MCU: 發(fā)送數(shù)據(jù)字節(jié)(2 Bytes)else 地址不匹配    Sensor --> MCU: NACK響應    MCU -> MCU: 錯誤處理enddeactivate Sensor@enduml

效果

圖中展示了I2C通信的啟動、尋址、數(shù)據(jù)傳輸和異常處理流程,箭頭方向明確,邏輯一目了然。

代碼解讀:

1、起始、結束聲明

@startuml@enduml

2、參與者定義

participant MCU as "主控MCU"participant Sensor as "溫濕度傳感器"

3、消息交互

MCU -> Sensor: 發(fā)送啟動信號(START)MCU -> Sensor: 發(fā)送設備地址(0x44)
  • -> 表示從一個參與者向另一個參與者發(fā)送消息的箭頭。

4、激活參與者

activate Sensor #LightBlue
  • activate 關鍵字用于激活一個參與者,表示該參與者開始處理接收到的消息。
  • #LightBlue 是給激活狀態(tài)添加的顏色,這里將溫濕度傳感器的激活狀態(tài)標記為淺藍色,方便在可視化的時序圖中區(qū)分。

5、條件分支處理

alt 地址匹配成功    Sensor --> MCU: ACK響應    MCU -> Sensor: 讀取溫濕度寄存器    Sensor --> MCU: 發(fā)送數(shù)據(jù)字節(jié)(2 Bytes)else 地址不匹配    Sensor --> MCU: NACK響應    MCU -> MCU: 錯誤處理end
  • alt 和 else 關鍵字用于創(chuàng)建條件分支,根據(jù)不同的條件執(zhí)行不同的操作。

6、 停用參與者

deactivate Sensor
  • deactivate 關鍵字用于停用一個參與者,表示該參與者完成了當前的處理任務。這里表示溫濕度傳感器處理完與主控 MCU 的通信交互,結束激活狀態(tài)。

三、繪制狀態(tài)機圖

在嵌入式開發(fā)中,常常使用使用狀態(tài)機模型來管理系統(tǒng)的復雜行為,確保邏輯清晰且可靠。

嵌入式設備的狀態(tài)管理,如低功耗模式切換、故障恢復機制。

如智能手表的電源狀態(tài)切換(運行、休眠、充電、故障),PlantUML代碼示例如:

@startumlstate "休眠" as Sleepstate "運行" as Activestate "充電" as Chargingstate "故障" as Error[*] --> Sleep : 上電初始化Sleep --> Active : 用戶按鍵喚醒Active --> Sleep : 無操作超時Active -right-> Charging : 插入充電器Charging --> Active : 充滿電Active --> Error : 硬件異常Error --> [*] : 重啟復位@enduml

代碼解讀:

1、狀態(tài)定義

state "休眠" as Sleepstate "運行" as Activestate "充電" as Chargingstate "故障" as Error
  • state 關鍵字用于定義狀態(tài)圖中的狀態(tài)。

2、初始狀態(tài)及狀態(tài)轉換

[*] --> Sleep : 上電初始化
  • [*] 表示狀態(tài)圖的初始狀態(tài),即設備的起始點。
  • --> 表示狀態(tài)之間的轉換箭頭。
  • : 上電初始化 是轉換的觸發(fā)條件。整個語句表示設備上電后,首先進行初始化操作,然后進入 “休眠” 狀態(tài)。

通過代碼定義狀態(tài)轉移條件,方便迭代修改,避免圖形拖拽導致的錯位問題。

四、類圖

類圖是描述嵌入式系統(tǒng)中各個類以及它們之間關系的一種重要工具。例如,對于一個智能溫度控制系統(tǒng),需要考慮溫度傳感器、微控制器、顯示器、按鍵等實體,以及它們之間的數(shù)據(jù)傳輸和控制關系。PlantUML代碼示例如:

@startumlclass TemperatureSensor {    - temperatureValue: float    + readTemperature(): float}class MicroController {    - processedData: float    + processData(temperature: float): void    + controlOutput(): void}class Display {    - displayMode: int    + showData(data: float): void}class Button {    - buttonState: bool    + checkButtonState(): bool}TemperatureSensor "1" --> "1" MicroController : sends dataMicroController "1" --> "1" Display : sends dataMicroController "1" --> "1" Button : checks state@enduml

五、其它圖表

1、部署圖

嵌入式系統(tǒng)中,部署圖需要展示硬件節(jié)點和軟件組件的分布情況。常見的應用場景可能有智能家居、工業(yè)控制、車載系統(tǒng)等。

嵌入式系統(tǒng)的硬件連接拓撲,如物聯(lián)網(wǎng)網(wǎng)關的模塊部署。  智能家居網(wǎng)關連接示意圖PlantUML代碼示例如:

@startumlnwdiag {  network SmartHome {    address = "192.168.1.x/24"        gateway [address="192.168.1.1", description="主控單元"];    zigbee [address="192.168.1.2", description="Zigbee協(xié)調(diào)器"];    sensor1 [address="192.168.1.3", description="溫度傳感器"];    sensor2 [address="192.168.1.4", description="人體紅外"];  }}@enduml

2、活動圖

嵌入式系統(tǒng)啟動自檢、中斷處理流程。 設備上電自檢(POST)流程活動圖:

@startumlstart:上電初始化;if (電源電壓正常?) then (是)  :初始化外設;  if (內(nèi)存校驗通過?) then (是)    :加載固件;    :啟動主任務;  else (否)    #red:觸發(fā)看門狗復位;  endifelse (否)  #red:進入安全關機模式;endifstop@enduml

用PlantUML讓你的嵌入式設計既專業(yè)又高效,從此告別“畫圖兩小時,改圖一整天”!

聲明:本內(nèi)容為作者獨立觀點,不代表電子星球立場。未經(jīng)允許不得轉載。授權事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 1
收藏 2
關注 30
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 欧美午夜精品久久久久免费视 | 久99九色视频在线观看 | 俄罗斯毛毛xxxx喷水 | 粉嫩虎白女在线观看中国女 | 久久精品日产第一区二区 | 18禁美女裸体网站无遮挡 | 在线视频福利 | 日本天堂中文字幕 | 国产精品一区二区三级 | 麻豆中文字幕在线观看 | 亚洲欧美精品午睡沙发 | 精品国产乱码久久久久久蜜臀网站 | 久久久久久亚洲Av无码精品专口 | 亚洲一区二区免费在线 | 男男gaysgay久久网站 | 色免费在线观看 | 99精品女人在线观看免费视频 | 老色鬼视频77777av | 亚洲性无码av在线欣赏网 | 视频在线观看入口黄最新永久免费国产 | 亚洲欧美日韩精品久久奇米一区 | 少妇潮喷无码白浆水视频 | 东北少妇不带套对白 | 91?清免费看 | 字幕日韩视频一区二区 | 国产呦系列呦交 | 国产欧美日韩精品一区二区图片 | 日韩精品在线观看视频 | 国产主播专区精品 | 欧美高清www| 中文屏幕乱码av | china16hdxxxx中国 91亚洲欧美 | 久久精品女人天堂AV麻 | 精久国产Av一区二区三区孕妇 | 国产精品青青在线麻豆 | 亚洲啊v| 性无码一区二区三区在线观看 | 狼友av永久网站免费观看 | 国产自av| 国产九区一区在线 | 亚洲综合一区二区三区无码 |