日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PyQT5+Pycharm編寫一個(gè)簡(jiǎn)單的串口上位機(jī)

Harmony&嵌入式學(xué)習(xí) ? 來(lái)源:Harmony&嵌入式學(xué)習(xí) ? 作者: Harmony&嵌入式學(xué) ? 2023-05-13 13:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

最近開始學(xué)習(xí)python,還是去年暑假看過一些python語(yǔ)法,至今忘的差不多了,初中的時(shí)候?qū)W過E語(yǔ)言,當(dāng)時(shí)初中制作些單機(jī)外掛之類(CF也做過,呃就是被封號(hào)了),最近玩的嵌入式有時(shí)候需要用到上位機(jī),之前都是通過E語(yǔ)言做的,總覺得拿不出手,便想著換一個(gè)語(yǔ)言寫一個(gè)上的了臺(tái)面的

綜合考慮,選擇的PyQt5來(lái)編寫上位機(jī)(因?yàn)閜ython方便些嘛)

話不多說(shuō),正文開始:

(1)pycharm的安裝

下載連接:http://www.jetbrains.com/pycharm/download/#section=windows

pYYBAGRfHDqAEgpTAAHWWShbQcA352.png

在這里我選擇的是win10版本的pycharm,大家根據(jù)系統(tǒng)自行選擇,安裝過程就不在贅述了。

(2)PyQt5的安裝

這個(gè)我搜索的時(shí)候大家都使用的是pip的方式安裝,在這的話我推薦通過Pycharm來(lái)安裝,比較方便些。

poYBAGRfHFmAbvMkAACpQCYkamw956.png

pYYBAGRfHGOACqVdAAD7muRPAT0583.png

poYBAGRfHHGAf0NkAAEb9Bo3v0k762.png

輸入pyqt5后選擇Install即可

(3)Designer.exe的使用(畫界面)

打開designer開始繪制我們的界面:

poYBAGRfHJeAIbzBAAFKDmUtaaU153.png

繪制完成后由UI文件生成PY文件,此時(shí)就可以開始編寫代碼了

(4)編寫程序

新建一個(gè)PY文件,我使用的名稱為demo.py

先引入需要使用的庫(kù)

import sys
import serial
import re
import binascii
import _thread
import time
import serial.tools.list_ports
from UI1 import Ui_MainWindow
from PyQt5 import QtWidgets

此時(shí)我們開始編寫"MAIN"函數(shù),將窗口顯示出來(lái),在這里我是選擇了一個(gè)繼承類,來(lái)繼承通過PYQT5繪制的界面

class PC_software(QtWidgets.QMainWindow,Ui_MainWindow):

    def __init__(self):
        super(PC_software,self).__init__()
        self.setupUi(self)
 
 
if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    myshow = PC_software()
    myshow.show()
    sys.exit(app.exec_())

此時(shí)可以正常顯示界面,但是沒有功能,在PC_software下添加些其它函數(shù)

class PC_software(QtWidgets.QMainWindow,Ui_MainWindow):
    def __init__(self):
        super(PC_software,self).__init__()
        self.setupUi(self)
 
        self.ser = serial.Serial()
        self.ser.baudrate = 9600
        self.ser.bytesize = 8  # 設(shè)置數(shù)據(jù)位
        self.ser.stopbits = 1  # 設(shè)置停止位
        self.ser.parity = "N"  # 設(shè)置校驗(yàn)位
        self.pushButton_4.clicked.connect(self.Clear_text)
        self.pushButton.clicked.connect(self.Screach_COM)
        self.pushButton_2.clicked.connect(self.Clink_COM)
        self.pushButton_3.clicked.connect(self.Data_Send)
        self.Screach_COM()
    def Clear_text(self):
        self.textEdit.clear()
        self.textBrowser.clear()
    def Screach_COM(self):
        self.comboBox.clear()
        port_list = list(serial.tools.list_ports.comports())
        com_numbers = len(port_list)
        p1 = re.compile(r'[(](.*?)[)]', re.S)
        for i in range(com_numbers):
            com_list = str(port_list[i])
            com_name = re.findall(p1, com_list)
            com_name = str(com_name)
            strlist = com_name.split("'")
            self.comboBox.addItem(strlist[1])
    def Clink_COM(self):
        self.ser.port = self.comboBox.currentText()
        if self.ser.is_open == True :
            self.ser.close()
            self.pushButton_2.setText('打開串口')
        else:
            self.ser.open()
            self.pushButton_2.setText('關(guān)閉串口')
    def Data_Send(self):
        if self.ser.is_open == True:
            self.ser.write((self.textEdit.toPlainText()+'rn').encode('gbk'))
            #self.ser.write(str(binascii.b2a_hex(self.textEdit.toPlainText()))) #嘗試編寫HEX發(fā)送—失敗
    def Data_Recive(self):
 
         while True:
             if self.ser.is_open == True:
                self.RC_data = self.ser.read_all()
                if self.RC_data != b'':
                   #print('receive',self.RC_data.decode("gbk"))
                    self.textBrowser.insertPlainText(self.RC_data.decode("UTF-8"))
                    self.textBrowser.moveCursor(self.textBrowser.textCursor().End)  # 文本框顯示到底部

分別實(shí)現(xiàn)串口掃描、清空接收、打開/關(guān)閉串口、發(fā)送數(shù)據(jù)以及多線程的接收功能。

此時(shí)在主函數(shù)里面創(chuàng)建線程

_thread.start_new_thread(myshow.Data_Recive,())

此時(shí)運(yùn)行一下程序并驗(yàn)證功能,發(fā)現(xiàn)OK

pYYBAGRfHP6AB5zuAAA0M7ff2Sk136.png

(5)遇到的問題

首先遇到的問題是無(wú)法再另一個(gè)文件里面使用其它的槽和對(duì)應(yīng)函數(shù),經(jīng)過多個(gè)群里面的大佬檢測(cè)后語(yǔ)句沒有問題,最后發(fā)現(xiàn)是在主函數(shù)里面的映射有問題。(更深入了解了python語(yǔ)法的映射關(guān)系)

第二個(gè)問題是在使用serial庫(kù)時(shí)的發(fā)送部分的轉(zhuǎn)碼,后來(lái)通過encode("GBK")來(lái)解決

第三個(gè)問題是接受部分,因?yàn)榇蜷_串口后要時(shí)刻準(zhǔn)備接收,初始是使用了while True來(lái)實(shí)現(xiàn)試試監(jiān)聽,后來(lái)發(fā)現(xiàn)這樣程序根本無(wú)法運(yùn)行(無(wú)法進(jìn)入界面),后來(lái)通過搜索,以線程的方式實(shí)現(xiàn)了互不干擾的實(shí)時(shí)監(jiān)聽。(python3里thread的庫(kù)名稱更改成了_thread)

編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1627

    瀏覽量

    83394
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4889

    瀏覽量

    90328
  • pyqt5
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    3648
  • 上位機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    10

    瀏覽量

    2656
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    labview串口上位機(jī)

    用labview做的個(gè)簡(jiǎn)單串口上位機(jī),可作為智能車的上位機(jī)
    發(fā)表于 06-20 23:22

    如何做一個(gè)簡(jiǎn)單串口上位機(jī)程序

    篇來(lái)做一個(gè)簡(jiǎn)單串口上位機(jī)程序,配合【STM32F103筆記】中的串口程序使用,后續(xù)還可以在
    發(fā)表于 01-14 06:54

    怎樣使用Qt去編寫個(gè)簡(jiǎn)單上位機(jī)

    怎樣使用Qt去編寫個(gè)簡(jiǎn)單上位機(jī)呢?有哪些步驟?
    發(fā)表于 03-02 06:07

    分享【串口上位機(jī)顯示波形】的軟件

    看到好多人都需要這個(gè)東西,這玩意確實(shí)好用,但是網(wǎng)上分享出來(lái)的這類軟件還是太少,而且貌似都不能直接拿來(lái)使用,下位機(jī)是需要定的協(xié)議才可以讓上位機(jī)打印出波形的 我之前有過匿名
    發(fā)表于 12-12 16:50 ?43次下載
    分享【<b class='flag-5'>串口上位</b><b class='flag-5'>機(jī)</b>顯示波形】的軟件

    IMUKit 9軸慣性測(cè)量單元的串口上位機(jī)軟件應(yīng)用程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是IMUKit 9軸慣性測(cè)量單元的串口上位機(jī)軟件應(yīng)用程序免費(fèi)下載。
    發(fā)表于 05-24 08:00 ?5次下載

    【閑來(lái)無(wú)事玩C#】1、簡(jiǎn)單串口上位機(jī)程序

    篇來(lái)做一個(gè)簡(jiǎn)單串口上位機(jī)程序,配合【STM32F103筆記】中的串口程序使用,后續(xù)還可以在
    發(fā)表于 01-14 11:21 ?20次下載
    【閑來(lái)無(wú)事玩C#】1、<b class='flag-5'>簡(jiǎn)單</b>的<b class='flag-5'>串口上位</b><b class='flag-5'>機(jī)</b>程序

    基于QT的簡(jiǎn)單上位機(jī)

    。同樣的,我們也從編寫個(gè)簡(jiǎn)單的基于QT的上位機(jī)來(lái)體會(huì)體會(huì)
    發(fā)表于 05-08 10:57 ?19次下載
    基于QT的<b class='flag-5'>簡(jiǎn)單</b>的<b class='flag-5'>上位</b><b class='flag-5'>機(jī)</b>

    手把手教你編寫個(gè)上位機(jī)

    本次來(lái)教大家編寫個(gè)基于QT的簡(jiǎn)單上位機(jī)。 學(xué)習(xí)
    發(fā)表于 05-08 10:36 ?1次下載
    手把手教你<b class='flag-5'>編寫</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>上位</b><b class='flag-5'>機(jī)</b>

    QT|編寫個(gè)簡(jiǎn)單上位機(jī)

    QT | 編寫個(gè)簡(jiǎn)單上位機(jī) 時(shí)間 :2023-03-19文章目錄QT |
    發(fā)表于 05-08 10:12 ?3次下載
    QT|<b class='flag-5'>編寫</b><b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>簡(jiǎn)單</b>的<b class='flag-5'>上位</b><b class='flag-5'>機(jī)</b>

    PyQT開發(fā)上位機(jī)教程

    ,兩個(gè)都需要安裝,需要記住安裝的位置,會(huì)兒需要設(shè)置環(huán)境變量。 pip install PyQt5pip install PyQt5 - tools ( DemoProject )E
    發(fā)表于 05-08 09:59 ?3次下載
    <b class='flag-5'>PyQT</b>開發(fā)<b class='flag-5'>上位</b><b class='flag-5'>機(jī)</b>教程

    Python從零開始制作溫濕度串口上位機(jī)

    該項(xiàng)目為本人的次課設(shè),在很多項(xiàng)目開發(fā)中,都需要通過上位機(jī)來(lái)控制或者讀取 MCU、MPU 中的數(shù)據(jù)。上位機(jī)和設(shè)備間的通信協(xié)議有
    發(fā)表于 05-09 14:39 ?6次下載
    Python從零開始制作溫濕度<b class='flag-5'>串口上位</b><b class='flag-5'>機(jī)</b>

    自己做一個(gè)C#串口上位機(jī)

    最近想發(fā)個(gè)之前自己做的個(gè)簡(jiǎn)單串口上位機(jī),當(dāng)然,
    發(fā)表于 05-09 14:24 ?10次下載
    自己做<b class='flag-5'>一個(gè)</b>C#<b class='flag-5'>串口上位</b><b class='flag-5'>機(jī)</b>

    pycharm上位機(jī)

    pycharm上寫上位機(jī) 安裝pyqt5(安裝好了Anaconda)用pip安裝: pip install pyqt5,安裝: pip i
    發(fā)表于 05-09 14:27 ?0次下載
    用<b class='flag-5'>pycharm</b>寫<b class='flag-5'>上位</b><b class='flag-5'>機(jī)</b>

    C#開發(fā)簡(jiǎn)單串口上位機(jī)

    采用C#開發(fā)上位機(jī)非常方便,具體步驟如下:1.繪制個(gè)上位機(jī)的界面,如下圖所示: 不要忘記還有下
    發(fā)表于 05-10 14:27 ?11次下載
    C#開發(fā)<b class='flag-5'>簡(jiǎn)單</b>的<b class='flag-5'>串口上位</b><b class='flag-5'>機(jī)</b>

    使用pycharm開發(fā)上位機(jī)配置pyqt5的環(huán)境

    上位機(jī)的開發(fā)過程中,使用QT的圖形化界面,是開發(fā)上位機(jī)最好最簡(jiǎn)單的選擇,因此我將講述配置pyqt5
    發(fā)表于 05-29 16:12 ?0次下載
    使用<b class='flag-5'>pycharm</b>開發(fā)<b class='flag-5'>上位</b><b class='flag-5'>機(jī)</b>配置<b class='flag-5'>pyqt5</b>的環(huán)境
    江源县| 长葛市| 西林县| 兴业县| 岳池县| 巫山县| 太湖县| 苏尼特右旗| 龙里县| 平果县| 锡林郭勒盟| 东光县| 浑源县| 烟台市| 岚皋县| 鄂州市| 图们市| 凤城市| 石屏县| 崇礼县| 南丰县| 宜良县| 石景山区| 新平| 萍乡市| 朝阳市| 崇礼县| 道孚县| 全州县| 泰和县| 龙川县| 浦江县| 尼木县| 霍州市| 永宁县| 府谷县| 巴东县| 吴堡县| 蓝田县| 白山市| 涞水县|