python 串口上位机_如何使用Python开发串口通讯上位机(二)
黑色的dos窗口對于大部分來說,頁面極為不友好,且操作不方便,因此本篇主要講講如何結(jié)合QtDesigner創(chuàng)建一個UI并初步與串口Api鏈接。1
QtDesigner進行上位機頁面設(shè)計
Python下的軟件頁面設(shè)計推薦使用Pyqt5,相關(guān)的介紹和環(huán)境安裝參見往期內(nèi)容。
1. 打開QtDesigner軟件,新建窗口,通過拖拖拽拽創(chuàng)建一個最基礎(chǔ)功能的界面。小技巧:用group組件將同一類元素放在同一個組中,即美觀,又方便查找
2. 設(shè)置界Group中通過ComboBox創(chuàng)建串口號與波特率的下拉選擇。
3. 調(diào)試信息Group則為ListWidget控件,用于展示過程的提示,方便問題定位。
4. 數(shù)據(jù)的發(fā)送與接收Group則加上了hex與否的選擇框,方便查看原始十六進制數(shù)據(jù)
如上圖,搭建好頁面后,根據(jù)往期文章的設(shè)置方法,直接在Pycharm中生成UI的py文件。
生成后的Py代碼只是一個頁面相關(guān)的類,所以還需要創(chuàng)建一個主程序,import 生成的頁面代碼文件,創(chuàng)建對象并實例化。
這樣我們就能實例化頁面,并讓我們的程序不再是黑框的cmd窗口啦。
2
串口操作事件關(guān)聯(lián)-自動搜索可用串口
有了頁面以后,接下來我們就要將頁面的各個組件與serial庫的操作API相關(guān)聯(lián)了。首先來看看如何動態(tài)識別電腦可用端口與打開端口。
USB轉(zhuǎn)串口映射到電腦設(shè)備管理器的COM口存在一定的隨機性,有可能到COM30+,如果COM下拉選擇從1-30,則顯得不夠智能而且每次都需要打開設(shè)備管理器確認。
所以大部分串口調(diào)試助手都有動態(tài)自動更新可用串口的功能。所以咱們也得跟上才行。實現(xiàn)方法如下:
- 在serial類中導入serial.tools.list_ports
- 使用serial.tools.list_ports.comports()接口獲取可用端口。不妨先用下述代碼測試一下
- 與頁面綁定,為了不破壞自動生成的代碼結(jié)構(gòu),我們在UI代碼中創(chuàng)建一個新函數(shù),專門用于自定義的頁面設(shè)置與更新。此代碼會在第一次打開上位機時執(zhí)行。
3
串口操作事件關(guān)聯(lián)-串口打開與收發(fā)
解決了串口自動搜索,接下來該與Open與收發(fā)事件相關(guān)聯(lián)。在選定了串口號以后,通過點擊打開按鈕,將串口打開或者關(guān)閉。因此我們需要將按鈕的點擊事件注冊關(guān)聯(lián)。
- 首先加入初始化函數(shù),創(chuàng)建一個空對象用于后續(xù)關(guān)聯(lián)串口引擎。注:__init__()為python類的關(guān)鍵字,在類創(chuàng)建時會自動執(zhí)行;另外從編碼規(guī)范來說,不建議在__init__()之外定義類的成員.
-? 將按鍵的click事件關(guān)聯(lián)到一個自定義事件函數(shù),函數(shù)內(nèi)容根據(jù)操作需求再行細化
操作層面的詳細需求如下:
- 在未打開任何串口之前,允許用戶打開
- 如果當前時刻已經(jīng)有串口打開了,則該按鈕文本應(yīng)變換為“關(guān)閉”
- 如果打開失敗,還應(yīng)該有提示信息
代碼如下:
接下來參照前面一期內(nèi)容,關(guān)聯(lián)發(fā)送與接收事件。
下面動圖為初步效果。
4
總結(jié)
本篇主要介紹了上位機UI設(shè)計以及如何與serial相關(guān)操作進行關(guān)聯(lián)。
為了展示初學狀態(tài),所以代碼寫的比較隨意凌亂。相信大部分人剛接觸Python時,狀況類似。
下一講中,我會基于此版本程序,講講如何對代碼進行優(yōu)化以及新增Hex格式的收發(fā)顯示。關(guān)注公眾號,獲取更多干貨哦。
總結(jié)
以上是生活随笔為你收集整理的python 串口上位机_如何使用Python开发串口通讯上位机(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: androidstudio返回之前界面_
- 下一篇: python是动态类型语言、变量不需要显