利用python做串口通訊上位機

2021-03-02 此乃田E

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的通訊流程,畫出軟體流程圖,編寫代碼,運行測試程序

熟悉了這個程序以後,我們還可以在這個程序上增加更多的功能:

以上每個功能的實現,也只需要幾行代碼就可以實現,接下來的幾年裡,我會慢慢介紹給大家。好的,如果大家覺得這個串口好用的話,趕緊把電腦拿出來試一試吧。

希望對你的工作有所幫助!

相關焦點

  • 有關Keil軟體仿真的51單片機串口調試技巧
    通常使用單片機串口通過RS232/RS485電平轉換晶片與上位機連接,以進行上位機與下位機的數據交換、參數設置、組成網絡以及各種外部設備的連接等。RS232/RS485串行接口總線具有成本低、簡單可靠、容易使用等特點,加上其歷史悠久,所以目前應用仍然非常廣泛;特別對於數據量不是很大的場合,串口通信仍然是很好的選擇,有著廣闊的使用前景。  在單片機編程中,串口佔了很重要的地位。
  • 利用Python開發App實戰
    說在前面的話python語言雖然很萬能,但用它來開發app還是顯得有點不對路,因此用python開發的app應當是作為編碼練習、或者自娛自樂所用,加上目前這方面的模塊還不是特別成熟,bug比較多,總而言之,勸君莫輕入。
  • 利用python免殺cs shellcode
    我決定暫時拋開金錢至上的價值體系,以一個Fucking loser的身份去尋找人生中的三大哲學問題,我是誰,我在哪兒,我在做什麼。褪去了網際網路行業的爾虞我詐,輕浮縹緲。在這個鋪天蓋地的泛娛樂時代,我決定去看看大海,去感受下海水的味道,沒錯,它確實是鹹的。當沙灘上的沙子鋪滿全身的那一刻,我,擁有了幾分鐘童年。在途中,偶遇了黃河,沒錯,它確實很黃,並且波濤洶湧。
  • 利用Python實現FGO自動戰鬥腳本,再也不用爆肝啦~
    利用Python實現FGO自動戰鬥腳本,再也不用爆肝啦~識別與匹配利用Python實現FGO自動戰鬥腳本,再也不用爆肝啦~實現如果你依然在編程的世界裡迷茫,不知道自己的未來規劃,對python感興趣,這裡推薦一下我的學習交流圈:424115737,裡面都是學習python的,從最基礎的python【python,遊戲,黑客技術,網絡安全、爬蟲】到網絡安全的項目實戰的學習資料都有整理,送給每一位python小夥伴,希望能幫助你更了解python,學習python人工智慧、爬蟲
  • 從串口驅動到Linux驅動模型,想轉Linux的必會!
    3、關於串口的種種眾所周知。我們現在的計算機上面有很多接口。如USB。網口。並口等。串口總線是其中的一個。串行接口簡稱串口,也稱串行通信接口或串行通訊接口(通常指COM接口),是採用串行通信方式的擴展接口。
  • python能做什麼
    python能做什麼?書聲琅琅Python培訓老師介紹,最近許多的朋友諮詢,聽說python很火,甚至可以超越JAVA,因此很想學這個python,但是不知道python能做什麼,能完成一些什麼項目呢?針對這個問題,今天徐老師跟大家來聊一聊python能做什麼的話題。
  • 利用python計算三角形的面積
    利用python計算三角形的面積。(1)輸入三個數,作為三角形的三個邊長,利用海倫公式計算三角形的面積。海倫公式:假設在平面內,有一個三角形,邊長分別為 a、b、c,三角形的面積 S可由以下公式求得。
  • 利用ESP32晶片DIY有線鍵盤轉無線鍵盤模塊軟鍵篇
    作為ESP32讀取USB鍵盤信息的中間晶片,說實話CH9350做的並不好,國產晶片真的是有各種各樣的問題(預告一下,下一個版本我會使用CH579F做一個更小的轉換模塊)。首先,CH9350有很多個工作模式,這幾個模式中最終我使用了模式2,這點如果小夥伴們去按照硬體打板的話要注意了。
  • 終於有人把常用的三種通訊方式:RS485、RS232、RS422講明白了
    我們都知道,在一般情況下我們會使用串口進行通訊,但是這種串口只適合連接2個設備之間,因此存在很多不方便之處(比如我們進行一對多的通訊),制約了串行數據的收發,這個時候我們就可能需要用到485通訊協議。除了RS485以外,常見的還有RS232和RS422。
  • 深圳Python培訓班打造行業高標準Python人才
    我們都知道Web前端一直都是不可忽視的存在,我們離不開網絡,離不開Web前端,利用Python的框架可以做網站,而且都是一些精美的前端界面,另外我們需要掌握一些數據的應用。Python火的原因1、python相比別的高級語言集成度更高,除了執行的效率低些,開源可以調用的類庫實在太多了,要實現一個功能,如果換作傳統的程式語言,需要實現基本的功能模塊,但直接調用類庫很方便的搞定,特別適合零基礎的學習, 幾行代碼就能實現很強大的功能。
  • 運用OPC實現WinCC與西門子SIMOTION的通訊
    上位機wincc,simotion d445和操作員面板winccflexible要實現時間同步功能。系統功能實現由於西門子的上位監控軟體protool提供了基於運動控制器simotion的通訊驅動,因此可以通過簡單的組態實現與simotion的通訊,繼而將數據取入計算機中。