0
ボタンをクリックせずにシリアル接続を自動化しようとしています。 GUIロード時には、マウスを使用せずに任意のボタン(自動読み込みと更新)を使わずに、直ちにシリアルを読み込み、間隔を空けてリフレッシュする必要があります。PyQt5 - 自動化シリアルモジュール
これはどのように可能ですか? ...スクリプトと以下のGUIを参照してください
import schedule
import serial
import sys
from PyQt5 import uic, QtWidgets
qtCreatorFile = "gui.ui"
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile)
estudiantes = [' ',' ',' ',' ']
ser = serial.Serial('COM9', baudrate=9600, timeout=1)
class MyApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
QtWidgets.QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.Boton.clicked.connect(self.ingresos)
#self.ingresos()
def ingresos(self):
dato = ser.readline().decode('ascii')
#datos = (self.Box4.toPlainText())
#dato = str(datos)
estudiantes.insert(0,dato)
estudiantes.pop()
self.Box1.setText(estudiantes[0])
self.Box2.setText(estudiantes[1])
self.Box3.setText(estudiantes[2])
self.Box4.setText(estudiantes[3])
#self.Box1.setText("estudiantes")
# =============================================
def job():
# print("I'm working...")
dato = ser.readline().decode('ascii')
#datos = (self.Box4.toPlainText())
#dato = str(datos)
estudiantes.insert(0,dato)
estudiantes.pop()
self.Box1.setText(estudiantes[0])
self.Box2.setText(estudiantes[1])
self.Box3.setText(estudiantes[2])
self.Box4.setText(estudiantes[3])
#self.Box1.setText("estudiantes")
# .......................
schedule.every(0.05).minutes.do(job)
while True:
schedule.run_pending()
time.sleep(1)
# .... Time definition ....
# 0.05 = 05 Seconds
# 0.50 = 50 Seconds
# 5.00 = 05 Minutes
# =============================================
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MyApp()
window.show()
sys.exit(app.exec_())
PyQt5 GUI .uiファイルはHERE ....です
:
コード:例えば以下に示すようにメインスレッドに信号を介してデータを送信、または
QThreadPool
とQRunnable
を使用するなど、いくつかのオプションがあります。一度に4つのボックスの代わりに2つのボックスを使用するだけです。どうすれば修正できますか? – userPyGeo@userPyGeoコードを修正しました。どのくらいの頻度でデータを送信しますか? – eyllanesc
それはそれです。スピードは良いです – userPyGeo