資源簡介
基于pyqt5的串口通訊助手程序。可實現串口檢測,串口參數設置,數據發送和接受,可設為16進制數據。

代碼片段和文件信息
import?sys
import?serial
import?serial.tools.list_ports
from?PyQt5?import?QtWidgets
from?PyQt5.QtWidgets?import?QMessageBox
from?PyQt5.QtCore?import?QTimer
from?Serial.ui_demo_1?import?Ui_Form
class?Serial(QtWidgets.QWidget?Ui_Form):
????def?__init__(self):
????????super(Serial?self).__init__()
????????self.setupUi(self)
????????self.init()
????????self.setWindowtitle(“串口助手“)
????????self.ser?=?serial.Serial()
????????self.port_check()
????????#?接收數據和發送數據數目置零
????????self.data_num_received?=?0
????????self.lineEdit.setText(str(self.data_num_received))
????????self.data_num_sended?=?0
????????self.lineEdit_2.setText(str(self.data_num_sended))
????def?init(self):
????????#?串口檢測按鈕
????????self.s1__box_1.clicked.connect(self.port_check)
????????#?串口信息顯示
????????self.s1__box_2.currentTextChanged.connect(self.port_imf)
????????#?打開串口按鈕
????????self.open_button.clicked.connect(self.port_open)
????????#?關閉串口按鈕
????????self.close_button.clicked.connect(self.port_close)
????????#?發送數據按鈕
????????self.s3__send_button.clicked.connect(self.data_send)
????????#?定時發送數據
????????self.timer_send?=?QTimer()
????????self.timer_send.timeout.connect(self.data_send)
????????self.timer_send_cb.stateChanged.connect(self.data_send_timer)
????????#?定時器接收數據
????????self.timer?=?QTimer(self)
????????self.timer.timeout.connect(self.data_receive)
????????#?清除發送窗口
????????self.s3__clear_button.clicked.connect(self.send_data_clear)
????????#?清除接收窗口
????????self.s2__clear_button.clicked.connect(self.receive_data_clear)
????#?串口檢測
????def?port_check(self):
????????#?檢測所有存在的串口,將信息存儲在字典中
????????self.Com_Dict?=?{}
????????port_list?=?list(serial.tools.list_ports.comports())
????????self.s1__box_2.clear()
????????for?port?in?port_list:
????????????self.Com_Dict[“%s“?%?port[0]]?=?“%s“?%?port[1]
????????????self.s1__box_2.addItem(port[0])
????????if?len(self.Com_Dict)?==?0:
????????????self.state_label.setText(“?無串口“)
????#?串口信息
????def?port_imf(self):
????????#?顯示選定的串口的詳細信息
????????imf_s?=?self.s1__box_2.currentText()
????????if?imf_s?!=?““:
????????????self.state_label.setText(self.Com_Dict[self.s1__box_2.currentText()])
????#?打開串口
????def?port_open(self):
????????self.ser.port?=?self.s1__box_2.currentText()
????????self.ser.baudrate?=?int(self.s1__box_3.currentText())
????????self.ser.bytesize?=?int(self.s1__box_4.currentText())
????????self.ser.stopbits?=?int(self.s1__box_6.currentText())
????????self.ser.parity?=?self.s1__box_5.currentText()
????????try:
????????????self.ser.open()
????????except:
????????????QMessageBox.critical(self?“Port?Error“?“此串口不能被打開!“)
????????????return?None
????????#?打開串口接收定時器,周期為2ms
????????self.timer.start(2)
????????if?self.ser.isOpen():
????????????self.open_button.setEnabled(False)
????????????self.close_button.setEnabled(True)
????????????self.formGroupBox1.settitle(“串口狀態(已開啟)“)
????#?關閉串口
????def?port_close(self):
????????self.timer.stop()
????????self.timer_send.stop()
????????try:
????????????self.ser.close()
????????except
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6694??2018-07-26?16:59??Serial\pyserial_demo.py
?????文件??????12570??2018-04-18?20:18??Serial\ui_demo_1.py
?????文件??????12193??2018-04-18?20:18??Serial\ui_demo_1.ui
?????文件???????6577??2018-07-26?16:51??Serial\__pycache__\ui_demo_1.cpython-36.pyc
?????目錄??????????0??2018-07-26?16:51??Serial\__pycache__
?????目錄??????????0??2018-07-26?16:59??Serial
-----------?---------??----------?-----??----
????????????????38034????????????????????6
- 上一篇:管理系統 vs2010 圖書管理系統源代碼
- 下一篇:pyqt5圖片和視頻瀏覽器
評論
共有 條評論