2020很特殊!這個春節假期,整天就是吃飯、睡覺、追劇、憂國憂民。覺也睡煩了,假期還在繼續。趁著閒暇,把自己好多年前制定的Flag重新回憶一遍,爭取在剩下的幾天假期中一一搞定!
記得之前在很多項目開發中,都需要通過上位機來控制ECU或者通過上位機來讀取ECU中的數據。其中上位機和ECU的通訊接口有串口,LIN或者CAN總線。串口作為一種低成本而又簡單的通訊方式,仍然有很多客戶在使用。畢竟,一個USB轉串口工具,淘寶網上只要幾十塊就可以買一個,而LIN總線或CAN總線轉換接口,成本至少在幾百元以上。
要實現上位機和ECU之間的串口通訊,除了一個USB轉串口硬體工具以外,還需要一個上位機軟體。上位機軟體可以採用串口調試助手(可以從網上免費下載),但是很多情況下,串口調試助手無法滿足控制和數據監視,以及分析功能,還需要根據項目需求,進行定製化開發。
定製化開發串口上位機可以採用VisualBasic、Visual C#、labview等軟體開發。這些軟體特別適合於開發圖形化界面。但是這幾個軟體需要佔用很大的硬碟空間,而且對於文件操作,數據記錄等並不是特別方便。最近聽說python很火,一直好奇能否用python開發一個串口上位機軟體,經過這幾天的嘗試,終於成功了。接下來給大家分享一下。
1. 安裝python開發環境
首先到python官網https://www.python.org/downloads/windows/下載python軟體。如下圖所示,最新版本為3.8. 本人的電腦是WIN 10 64位作業系統,需要下載的文件為:Windowsx86-64 executable installer(64位作業系統一定要下載這個文件,如果下載32位的文件,後果自負!!!)下載好的文件名為:python-3.8.1-amd64.exe.
雙擊這個文件,進行安裝。安裝時,選擇Add python3.8 to PATH。這一點也非常重要!選中這個框,後續會省去很多麻煩的。單擊InstallNow, 可以用默認的安裝路徑安裝。
安裝完成後,在運行窗口或者win10的搜索窗口中輸入」cmd」,打開DOS窗口。
在DOS窗口中出現:C:\Windows\system32>,然後輸入python, 回車,出現如上圖所示的內容,以及「>>>」,說明python已經安裝成功。然後在>>>後面,輸入exit()可以退出。
在win10程序中,可以發現新安裝的程序:IDLE (python 3.8 64-bit)。運行這個程序,出現IDLE開發環境界面
2. 安裝pyserial模塊:
Python的最大優點是共享和開源,有很多工程師已經開發了很多程序模塊,並且無私奉獻出來,我們可以直接利用這些現成的模塊。是不是相當於踩在巨人的肩膀上一樣啊?所以首先我們要感謝一下這些前輩們!他們已經把串行通訊的代碼封裝在了pyserial模塊中(即便封裝好,你也可以看到原始碼的),接下來我們可以直接安裝這個模塊了。
大家還記得把大象放進冰箱的三步法嗎,那麼我們安裝pyserial是不是也要經過找到網址,下載軟體,安裝軟體三步法呢?No! 讓我們一起見證奇蹟是如何發生的吧:運行cmd把DOS窗口打開,在C:\Windows\system32>後面直接輸入」pip install pyserial」,然後系統會自動搜索下載連結,下載並且安裝,一步搞定!
在C:\Windows\system32>後輸入」python」,回車,當出現「>>>」以後,輸入import serial, 導入pyserial模塊。然後在「>>>」之後,輸入「serial」,可以看到pyserial被安裝到的文件夾。
3. 編寫串口上位機軟體:
上位機首先向ECU發出指令:控制命令(用字母c表示),讀取數據指令(用字母r表示)ECU收到指令後,進行處理,如果是c,則將LED藍燈點亮;如果是r,則將LED紅燈點亮,並向上位機發送0x30到0x39的十個數字。上位機發出r指令後,等待接收數據,接收到數據以後,將數據輸出到屏幕。
打開IDLE軟體,創建一個新文件,並且保存為SCI.py
編寫上位機界面程序
在Run菜單中,選擇Run Module或者直接按F5鍵,運行程序,界面如下:
好的,大功告成!我們已經完成了上位機和ECU之間的基本通訊流程。是不是軟體非常簡單呢?這就是python最大的優點:簡約而不簡單!
總結
我們再回顧一下python開發一個基於串口通訊的上位機程序的步驟:
到python.org下載python 3.8 64-bit並安裝
使用pipinstall pyserial安裝serial模塊
編寫上位機和ECU的通訊流程,畫出軟體流程圖,編寫代碼,運行測試程序
熟悉了這個程序以後,我們還可以在這個程序上增加更多的功能:
以上每個功能的實現,也只需要幾行代碼就可以實現,接下來的幾年裡,我會慢慢介紹給大家。好的,如果大家覺得這個串口好用的話,趕緊把電腦拿出來試一試吧。
希望對你的工作有所幫助!