rp_client.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QCheckBox, QBoxLayout
  2. import sys
  3. import struct
  4. import socket
  5. from QtPyNetwork.client import TCPClient
  6. def setPinout(pinout):
  7. pass
  8. class Window(QWidget):
  9. def __init__(self):
  10. QWidget.__init__(self)
  11. self.setWindowTitle('Magnetometer Control Client')
  12. layout = QBoxLayout(QBoxLayout.TopToBottom)
  13. self.setLayout(layout)
  14. label_layout = QBoxLayout(QBoxLayout.LeftToRight)
  15. self.label = QLabel('Magnetometer Controller')
  16. label_layout.addWidget(self.label, 0)
  17. layout.addLayout(label_layout)
  18. button_layout = QBoxLayout(QBoxLayout.LeftToRight)
  19. self.check1 = QCheckBox('PIN1')
  20. self.check1.setEnabled(False)
  21. self.check1.toggled.connect(self.toggleChecks)
  22. button_layout.addWidget(self.check1)
  23. self.check2 = QCheckBox('PIN2')
  24. self.check2.setEnabled(False)
  25. self.check2.toggled.connect(self.toggleChecks)
  26. button_layout.addWidget(self.check2)
  27. self.check3 = QCheckBox('PIN3')
  28. self.check3.setEnabled(False)
  29. self.check3.toggled.connect(self.toggleChecks)
  30. button_layout.addWidget(self.check3)
  31. self.check4 = QCheckBox('PIN4')
  32. self.check4.setEnabled(False)
  33. self.check4.toggled.connect(self.toggleChecks)
  34. button_layout.addWidget(self.check4)
  35. layout.addLayout(button_layout)
  36. control_layout = QBoxLayout(QBoxLayout.LeftToRight)
  37. self.connected = False
  38. self.buttonCon = QPushButton('Connect')
  39. self.buttonCon.clicked.connect(self.connectPressed)
  40. control_layout.addWidget(self.buttonCon)
  41. layout.addLayout(control_layout)
  42. self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  43. @Slot()
  44. def toggleChecks(self):
  45. pinout = 0b00000000
  46. if(self.check1.isChecked()):
  47. pinout = pinout | 0b00000001
  48. if(self.check2.isChecked()):
  49. pinout = pinout | 0b00000010
  50. if(self.check3.isChecked()):
  51. pinout = pinout | 0b00000100
  52. if(self.check4.isChecked()):
  53. pinout = pinout | 0b00001000
  54. data = struct.pack('<BB', 0x02, pinout)
  55. self.socket.sendall(data)
  56. data = self.sock.recv(1024)
  57. @Slot()
  58. def connectPressed(self):
  59. if(self.connected):
  60. self.check1.setEnabled(False)
  61. self.check2.setEnabled(False)
  62. self.check3.setEnabled(False)
  63. self.check4.setEnabled(False)
  64. self.sock.close()
  65. self.buttonCon.setText('Connect')
  66. else:
  67. self.check1.setEnabled(True)
  68. self.check2.setEnabled(True)
  69. self.check3.setEnabled(True)
  70. self.check4.setEnabled(True)
  71. self.sock.connect(('rp-f082cf.local', 5005))
  72. self.buttonCon.setText('Disconnect')
  73. app = QApplication(sys.argv)
  74. win = Window()
  75. win.show()
  76. sys.exit(app.exec())