用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開發串口通訊型上位機所需的準備工作,並簡單展示了如何進行串口收發。
一個好的上位機還需要更多功能,將會在接下來幾期逐步深入與完善,敬請期待哦。