如何使用Python開發串口通訊上位機(一)

2021-02-14 芯連心嵌入式設計交流

用Python開發串口通訊型上位機,其實並非最優解,本系列更新只為個人學習與總結。如果有C語言底子,嵌入式層面的上位機開發,C++ Builder,C#才是更加好用的利器。

什麼是上位機

從事過嵌入式軟體開發或者工控機開發的,對上位機應該都不陌生。簡單來說,上位機指的是能夠發送指令的計算機或者控制器,通過各類通訊獲取下位機信息,控制下位機的行為等。

最典型的例子,電腦端的串口助手(上位機),通過RS232-DB9或者USB轉串口,與單片機(下位機)的串口通訊,獲取單片機系統的狀態等。


圖片來自百度百科

此系列文章,與大家講講如何使用Python進行串口通訊型上位機的開發。此為第一篇。
  

準備工作

1. 串口調試助手,用於驗證通訊,此處推薦使用Uartassistant,百度一下即可輕鬆找到下載方法

2. Virtual Serial Port:虛擬串口,可以在沒有實際串口線連接的情況,在電腦端虛擬出對接的兩個串口,方便我們在沒有下位機或者未就緒的情況下,驗證數據的收發,下圖為虛擬出COM1與COM2兩個串口,並內部互聯,打開兩個1中調試助手,分別配置為COM1和COM2,波特率相同,在COM1發送「Hello world」,COM2即可收到

3. Pyqt5:用於開發界面,詳見前面幾期內容

三步學會Python開發上位機並處理excel數據(一)

4. PyCharm:Python IDE

三步學會Python開發上位機並處理excel數據(一)

5. Pyserial庫安裝-pip install pyserial

Pyserial API的使用參見官網:

https://pythonhosted.org/pyserial/pyserial_api.html。

初始化參數:

name:設備名字
port:讀或者寫埠
baudrate:波特率
bytesize:字節大小
parity:校驗位
stopbits:停止位
timeout:讀超時設置
writeTimeout:寫超時
xonxoff:軟體流控
rtscts:硬體流控
dsrdtr:硬體流控
interCharTimeout:字符間隔超時

常用接口

isOpen():查看埠是否被打開。
open() :打開埠『。
close():關閉埠。
read():從埠讀字節數據。默認1個字節。
read_all():從埠接收全部數據。
write("hello"):向埠寫數據。
readline():讀一行數據。
readlines():讀多行數據。
in_waiting():返回接收緩存中的字節數。
flush():等待所有數據寫出。
flushInput():丟棄接收緩存中的所有數據。
flushOutput():終止當前寫操作,並丟棄發送緩存中的數據。

簡易驗證代碼:

1. 使用虛擬串口,配置COM1與COM2

2. 打開串口助手,配置為COM2,9600後打開

3. Pycharm或者jupyter notebook輸入如下代碼並運行

運行截圖如下:

1. Python打開串口後發送「Python serial port demo!」

2. 另外一端的COM2,手動輸入「Yes」,Python程序接收到後列印出來

總結

本篇主要介紹了什麼是上位機以及Python開發串口通訊型上位機所需的準備工作,並簡單展示了如何進行串口收發。

一個好的上位機還需要更多功能,將會在接下來幾期逐步深入與完善,敬請期待哦。

相關焦點

  • Qt 串口上位機開發《Rice 上位機 學習開發》
    前幾天分享了一個使用C#開發的串口上位機,那麼今天教你如何100行QT代碼實現一個串口上位機。
  • Matlab上位機開發(五)Matlab串口通信
    設置的為byte,則使用 fwrite 。關閉串口在不使用串口或者關閉界面之前,必須要關閉串口,否則下次將無法打開該串口:close(scom)2. 串口中斷上面講述了使用fread手動讀取數據的方式,但是實際應用中,需要使用串口中斷自動接收並處理數據。
  • 【原創】教你如何擁有自己的「串口」上位機
    串口對於開發調試是必不可少。不過有時候你會覺得用別人的串口工具會感覺到很痛苦。太多限制,太局限性,比如要抓取調試的LOG的某個欄位,要實時監控數據,要對接收到的數據進行解析,用sscom、putty、xshell等上位機都無法實現自己想要的功能。所以我們要定製畫一款屬於自己的上位機,來實現自己想要的功能,想怎麼搞就怎麼搞。
  • 使用python實現win10系統和arduino usb串口通信
    其次是按照從簡原則,先從最直接的方式入手,也就是使用usb串口通信當前的arduino就是使用usb連接到pc電腦,無需其他操作(如果使用藍牙,wifi,還需要對應的模塊和較多的程序開發)pc電腦通信完成後,再用arduino通信樹莓派,無縫對接,本質都是系統,都是usb連接,都可以使用python(當前環境為居家場景)測試上位機操作
  • 手把手教你用Labview寫一個串口上位機
    今天就是教大家用LabVIEW畫一個串口上位機。LabVIEW是一種程序開發環境,由美國國家儀器(NI)公司研製開發,類似於C和BASIC開發環境,但是LabVIEW與其他計算機語言的顯著區別是:其他計算機語言都是採用基於文本的語言產生代碼,而LabVIEW使用的是圖形化編輯語言G編寫程序,產生的程序是框圖的形式。
  • VB.net如何獲取計算機的串口
  • 連載丨手把手教你winform上位機系列一:認識winform上位機
    今天要講的是Windows系統下的Winform桌面應用作為上位機,大家是不是用觸模屏和組態軟體是總是想實現一些特殊功能但是組態軟體本身不支持該功能,但是Winform可以做到你想做的一切,Winform是微軟Visual Studio IDE開發平臺下的桌面應用開發,我們可以充分利用C#高級語言的優勢和靈活性以及高擴展性來開發我們的上位機監控界面,先來個簡單
  • 什麼是上位機,什麼是下位機?
    上位機是指可以直接發出操控命令的計算機,一般是PC/host computer/master computer/upper computer,屏幕上顯示各種信號變化(液壓,水位,溫度等)。下位機不時讀取設備狀態數據(一般為模擬量),轉換成數位訊號反饋給上位機。上下位機都需要編程,都有專門的開發系統。在概念上,控制者和提供服務者是上位機,被控制者和被服務者是下位機,也可以理解為主機和從機的關係,但上位機和下位機是可以轉換的。
  • C#做一個簡單的進行串口通信的上位機
    上位機可以接收下位機的信號。下位機是一個控制器,是直接控制設備獲取設備狀況的計算機。上位機發出的命令首先給下位機,下位機再根據此命令解釋成相應時序信號直接控制相應設備。下位機不時讀取設備狀態數據(一般為模擬量),轉換成數位訊號反饋給上位機。上位機不可以單獨使用,而下位機可以單獨使用。2、串口通信        串口相當於硬體類型的接口。
  • STM32F103C8T6工控板與LabVIEW的串口通訊實例
    串口通信(Serial Communications)是指外設與計算機間,通過數據線按位進行傳輸數據的一種通訊方式
  • 使用pycharm開發上位機配置pyqt5的環境
    在上位機的開發過程中,使用QT的圖形化界面,是開發上位機最好最簡單的選擇,因此我將講述配置pyqt5的環境。
  • QT5串口編程——編寫簡單的上位機
    下面開始介紹串口類的使用。
  • 快速上手Android藍牙串口開發
    /   作者簡介   /本篇文章來自gtf35的投稿,分享了Android中的藍牙開發的內容,相信會對大家有所幫助!同時也感謝作者貢獻的精彩文章。gtf35的博客地址:https://blog.gtf35.top//   前言   /最近在做做物聯網相關的內容,經常需要用到藍牙串口來和單片機通訊。
  • 串口通訊的原理、代碼實現及注釋
    串口通訊是一種很常用的通訊方式,用的電纜數量少、操作簡單。
  • Arduino之串口通訊
    串口通訊Arduino不僅僅是全球最流行的開源硬體,也是一個優秀的硬體開發平臺,更是硬體開發的趨勢。Arduino簡單的開發方式使得開發者更關注創意與實現,更快的完成自己的項目開發,大大節約了學習的成本,縮短了開發的周期。
  • 淺談網絡串口透傳晶片——CH9120
    CH9120是一款網絡串口透傳晶片。CH9120內部集成TCP/IP協議棧,可實現網絡數據包和串口數據的雙向透明傳輸,具有TCP CLIENT、TCP SERVER、UDP CLIENT 、UDP SERVER  4種工作模式,串口波特率最高可支持到921600bps,可通過上位機軟體或者串口命令輕鬆配置,方便快捷。 下圖為CH9120一般應用框圖。
  • STM32串口通信基本原理
    在同步通訊中,數據信號所傳輸的內容絕大部分是有效數據,而異步通訊中會則會包含數據幀的各種標識符,所以同步通訊效率高,但是同步通訊雙方的時鐘允許誤差小,稍稍時鐘出錯就可能導致數據錯亂,異步通訊雙方的時鐘允許誤差較大。常見的串行通信接口
  • Delphi串口通信技術資料:軟體/源碼/論文/書籍/視頻/控制項/程序
    MCU為AVR單片機060、phonectrl是一款利用手機遙控電腦的軟體,利用串口進行通信061、RS232串口通訊隨書源碼,包含書中的全部Delphi源碼,是學習串口通訊的好東西062、SJX-600測試,有串口代碼063、sony 351音響串口控制程序!
  • VC++6.0串口通信技術資料:軟體/源碼/論文/書籍/視頻/控制項/程序
    轉換和溫度測量097、VC串口控制加攝像頭視頻適合機器人上位機,只要適當改變active控制項屬性,就可以適應不同串口,很適合做機器人的上位機編程入門098、VC串口類,用於開發串口通信用099、VC串口實現代碼,測試通過。
  • 在Win7 64位上使用Python進行串口通信
    如果使用VC++ QT開發,可能用時較多,使用python,如果掌握使用方法,可以直接讀寫測試,配合設備或是串口助手,很快驗證與實現。Python有沒有現成的串口API直接調用呢?經過實踐驗證,需要安裝一個叫 Pyserial的組件即可。這個可以在github上下載。下載地址為:       在windows 7 64bit 上可以使用嗎?