Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. import sys
  2. import serial
  3.  
  4.  
  5. from PyQt5.QtWidgets import QMainWindow, QApplication
  6. from PyQt5.QtCore import QThread, pyqtSignal
  7. from PyQt5.uic import loadUi
  8.  
  9.  
  10. ser = serial.Serial('/dev/tty.usbmodem14201', 9600, timeout=1)
  11.  
  12. class TestThread(QThread):
  13. serialUpdate = pyqtSignal(str)
  14. def run(self):
  15. while ser.is_open:
  16. QThread.sleep(1)
  17. value = ser.readline().decode('ascii')
  18. self.serialUpdate.emit(value)
  19. ser.flush()
  20.  
  21. class MainWindow(QMainWindow):
  22. def __init__(self):
  23. super(MainWindow, self).__init__()
  24. loadUi('/Users/bogdanvesa/P2A_GUI/mainwindow.ui', self)
  25. self.thread = TestThread(self)
  26. self.thread.serialUpdate.connect(self.handleSerialUpdate)
  27.  
  28. self.connect_btn.clicked.connect(self.connectSer)
  29. self.lcd_EBtn.clicked.connect(self.startThread)
  30.  
  31. def startThread(self):
  32. self.thread.start()
  33.  
  34. def handleSerialUpdate(self, value):
  35. print(value)
  36. self.lcd_lineEdit.setText(value)
  37.  
  38.  
  39. def main():
  40.  
  41. app = QApplication(sys.argv)
  42. form = MainWindow()
  43. form.show()
  44. sys.exit(app.exec_())
  45.  
  46. if __name__ == "__main__":
  47. main()
  48.  
  49. from PyQt5 import QtCore, QtWidgets, QtSerialPort
  50.  
  51. class Widget(QtWidgets.QWidget):
  52. def __init__(self, parent=None):
  53. super(Widget, self).__init__(parent)
  54. self.message_le = QtWidgets.QLineEdit()
  55. self.send_btn = QtWidgets.QPushButton(
  56. text="Send",
  57. clicked=self.send
  58. )
  59. self.output_te = QtWidgets.QTextEdit(readOnly=True)
  60. self.button = QtWidgets.QPushButton(
  61. text="Connect",
  62. checkable=True,
  63. toggled=self.on_toggled
  64. )
  65. lay = QtWidgets.QVBoxLayout(self)
  66. hlay = QtWidgets.QHBoxLayout()
  67. hlay.addWidget(self.message_le)
  68. hlay.addWidget(self.send_btn)
  69. lay.addLayout(hlay)
  70. lay.addWidget(self.output_te)
  71. lay.addWidget(self.button)
  72.  
  73. self.serial = QtSerialPort.QSerialPort(
  74. '/dev/tty.usbmodem14201',
  75. baudRate=QtSerialPort.QSerialPort.Baud9600,
  76. readyRead=self.receive
  77. )
  78.  
  79. @QtCore.pyqtSlot()
  80. def receive(self):
  81. while self.serial.canReadLine():
  82. text = self.serial.readLine().data().decode()
  83. text = text.rstrip('rn')
  84. self.output_te.append(text)
  85.  
  86. @QtCore.pyqtSlot()
  87. def send(self):
  88. self.serial.write(self.message_le.text().encode())
  89.  
  90. @QtCore.pyqtSlot(bool)
  91. def on_toggled(self, checked):
  92. self.button.setText("Disconnect" if checked else "Connect")
  93. if checked:
  94. if not self.serial.isOpen():
  95. if not self.serial.open(QtCore.QIODevice.ReadWrite):
  96. self.button.setChecked(False)
  97. else:
  98. self.serial.close()
  99.  
  100. if __name__ == '__main__':
  101. import sys
  102. app = QtWidgets.QApplication(sys.argv)
  103. w = Widget()
  104. w.show()
  105. sys.exit(app.exec_())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement