【发布时间】:2016-05-24 03:11:57
【问题描述】:
我认为我的问题很简单,但我遇到了障碍。我不是程序员,但需要一个程序来通过 Arduino 控制激光雕刻机。我的原始代码大部分都在工作,但我希望能够使用 QComboBox 选择一个串行端口,这样我就可以让每个人都可以使用它。
我想出了如何用下面的代码做到这一点:
import sys
import serial
import time
import serial.tools.list_ports
from PyQt4 import QtGui
from window_test import Ui_MainWindow
class Main(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.ui.btn_laser_poweron.clicked.connect(self.btnFIRE)
self.ui.btn_laser_poweroff.clicked.connect(self.btnOFF)
self.ui.btn_lig_power.clicked.connect(self.btnLIG)
self.ui.btn_cutting_power.clicked.connect(self.btnCUT)
self.ui.btn_power_meter.clicked.connect(self.btnTEST)
self.ui.spinBox.valueChanged.connect(self.PwrLevel)
self.ui.comboBox.activated.connect(self.srlprt)
def srlprt(self):
serial.Serial(str(self.ui.comboBox.currentText()))
def btnFIRE(self):
ser.write("a" + chr(255))
def btnOFF(self):
ser.write("b" + chr(0))
def btnTEST(self):
ser.write("c" + chr(0))
time.sleep(59.5)
ser.write("d" + chr(255))
def btnLIG(self):
ser.write("e" + chr(29))
def btnCUT(self):
ser.write("f" + chr(160))
def PwrLevel(self):
val = self.ui.spinBox.value()
ser.write("g" + chr(val))
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = Main()
window.show()
sys.exit(app.exec_())
现在我的问题是我的按钮都不起作用,因为“ser”不是全局定义的。我知道当我在类定义之上删除“ser = serial.Serial(port = COM3)”时我打破了它,但我不知道如何修复它。任何帮助将不胜感激。
干杯!
【问题讨论】:
-
self.ser = serial.Serial(str(self.ui.comboBox.currentText()))
标签: python-2.7 serial-port pyqt4