天天看點

你們要的練手項目來了

  最近有越來越多做電氣的小夥伴開始學習C#來做上位機開發,很多人在學習一段時間後,都有這種感覺,似乎學到了很多知識,但是不知道怎麼應用,是以我找了一個真實的上位機小項目,讓大家來練練手。這篇文章主要對這個項目案例及開發過程做個整體介紹。

PS:文末提供完整錄播視訊及源碼

1. 項目案例介紹

        很多人對單片機有一種特殊的情懷,總是感覺單片機很神秘或很複雜。單片機簡稱MCU,即Micro Control Unit,是将CPU、存儲器(RAM和ROM)、多種IO接口等內建在一塊晶片上,形成一個晶片級計算機,可以這麼說,在我們的生活和工作中,單片機無處不在。

        單片機MCU的使用分為兩種,一種是單片機開發,就是嵌入式開發,一般采用C語言程式設計,另一種是單片機應用,比如和單片機進行通信控制,而作為上位機開發人員,我們更多偏向于後者,上位機按照既定的協定對單片機實作控制。控制系統的使用者是操作人員,他們不可能去直接操作單片機,是以上位機的職責是将單片機和操作人員聯系起來,通過UI界面給操作人員提供展示和控制,再将指令傳遞給單片機來執行動作,最終形成一套完整的控制系統。

        本案例是一個基于單片機的序列槽通信案例,主要是通過上位機來實作對電機的速度控制,并顯示電機實時速度。調速模式會有多種,包括電機正轉、電機反轉、電機正反轉、雙向混沌、單向混沌五種模式。

2. MCU協定分析

針對五種調速模式的描述如下所示:

調速模式 調速說明
電機正轉 發送一個大于0的速度給單片機
電機反轉 發送一個小于0的速度給單片機
電機正反轉 發送一個速度正負值及換速時間給單片機
單向混沌 随機或手動生成N個的随機正數,定時發送給單片機
雙向混沌 随機或手動生成N個随機自然數,定時發送給單片機

從上面的描述,我們可以看出,調速的本質都是發送封包給單片機,不同的調速模式影響的是發送的數值和發送的頻率,是以上位機和單片機之間必須要約定協定,協定如下所示:

功能指令 協定格式 備注
S+速度值+; 速度值必須為正數,如S+40;
速度值必須為負數,如S-40;
T+時間+S+速度值+; 時間為換速時間,如T5+-40;
S+速度值+; 速度值為正數,生成随機數,定時發送
速度值為自然數,生成随機數,定時發送
速度回報 V+速度值+; 傳回的速度值,如V+40;
速度清零 速度值設為0,即S+0;或者S-0;

協定規定:單片機與上位機之間的通信格式為:波特率9600,資料位8,停止位1,校驗位無,設定速度範圍為10-300rpm,回報速度範圍為0-1000rpm,換算時間範圍為1-10秒,通信編碼格式為ASCII。

上位機開發功能要求:

  • 與單片機之間的連接配接提示及斷開提示
  • 可以自由選擇通訊端口
  • 調試模式可以随時調整
  • 混沌模式随機數支援自動生成和人為輸入/複制粘貼
  • 支援換速時間快速設定
  • 支援實時速度顯示并可控
  • 支援實時資料寫入并可控
  • 支援發送指令可存儲、可追溯
  • 軟體打開時保持上次關閉時的狀态

3. 上位機界面設計

根據開發功能要求,整體設計界面如下圖所示:

你們要的練手項目來了

 當選擇雙向混沌或者單向混沌時,會彈出混沌值設定界面,支援自動生成及手動輸入,如下圖所示:

你們要的練手項目來了

4. 粉絲福利

        這個項目整體來說難度不是很大,但是很具有代表性,非常适合上位機初學者來練手。很多初學者學習最大的問題就是手頭沒有實際項目,大家可以把這個當做一個實際項目來練手。

        為了感謝大家一直以來的支援,我們已經将這部分的視訊整理好,免費贈送給大家學習,需要視訊及源碼的小夥伴,趕緊聯系助教老師領取吧!

名額有限,先到先得,活動僅限當天。如添加不上,請+:xiketang789

錄播視訊大綱如下:

你們要的練手項目來了

繼續閱讀