rp_client.py 3.2 KB

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