Browse Source

rpGUI update

unknown 3 weeks ago
parent
commit
dbdd2b6b2d
3 changed files with 139 additions and 12 deletions
  1. 103 0
      rpGUI/rp_client.py
  2. 36 12
      rpGUI/rpgui.py
  3. BIN
      rpGUI/some.bin

+ 103 - 0
rpGUI/rp_client.py

@@ -0,0 +1,103 @@
+from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QCheckBox, QBoxLayout
+import sys
+import struct
+import socket
+
+def setPinout(pinout):
+    pass
+
+class Window(QWidget):
+    def __init__(self):
+        QWidget.__init__(self)
+        self.setWindowTitle('Magnetometer Control Client')
+
+        layout = QBoxLayout(QBoxLayout.TopToBottom)
+        self.setLayout(layout)
+
+        label_layout = QBoxLayout(QBoxLayout.LeftToRight)
+        self.label = QLabel('Magnetometer Controller')
+        label_layout.addWidget(self.label, 0)
+        layout.addLayout(label_layout)
+
+        button_layout = QBoxLayout(QBoxLayout.LeftToRight)
+        self.check1 = QCheckBox('PIN1')
+        self.check1.setEnabled(False)
+        self.check1.toggled.connect(self.toggleChecks)
+        button_layout.addWidget(self.check1)
+        self.check2 = QCheckBox('PIN2')
+        self.check2.setEnabled(False)
+        self.check2.toggled.connect(self.toggleChecks)
+        button_layout.addWidget(self.check2)
+        self.check3 = QCheckBox('PIN3')
+        self.check3.setEnabled(False)
+        self.check3.toggled.connect(self.toggleChecks)
+        button_layout.addWidget(self.check3)
+        self.check4 = QCheckBox('PIN4')
+        self.check4.setEnabled(False)
+        self.check4.toggled.connect(self.toggleChecks)
+        button_layout.addWidget(self.check4)
+        layout.addLayout(button_layout)
+
+        control_layout = QBoxLayout(QBoxLayout.LeftToRight)
+        self.connected = False
+        self.buttonCon = QPushButton('Connect')
+        self.buttonCon.clicked.connect(self.connectPressed)
+        control_layout.addWidget(self.buttonCon)
+        layout.addLayout(control_layout)
+
+        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+    
+    #@Slot()
+    def toggleChecks(self):
+        pinout = 0b00000000
+
+        if(self.check1.isChecked()):
+            pinout = pinout | 0b00000001
+        else:
+            pinout = pinout & 0b11111110
+
+        if(self.check2.isChecked()):
+            pinout = pinout | 0b00000010
+        else:
+            pinout = pinout & 0b11111101
+
+        if(self.check3.isChecked()):
+            pinout = pinout | 0b00000100
+        else:
+            pinout = pinout & 0b11111011
+        
+        if(self.check4.isChecked()):
+            pinout = pinout | 0b00001000
+        else:
+            pinout = pinout & 0b11110111
+
+        data = struct.pack('<BB', 0x02, pinout)
+        self.sock.sendall(data)
+        data = self.sock.recv(1024)
+
+    #@Slot()
+    def connectPressed(self):
+        if(self.connected):
+            self.check1.setEnabled(False)
+            self.check2.setEnabled(False)
+            self.check3.setEnabled(False)
+            self.check4.setEnabled(False)
+            self.sock.close()
+            self.buttonCon.setText('Connect')
+            self.connected = False
+        else:
+            self.check1.setEnabled(True)
+            self.check2.setEnabled(True)
+            self.check3.setEnabled(True)
+            self.check4.setEnabled(True)
+            self.sock.connect(('rp-f0cf82.local', 5005))
+            self.buttonCon.setText('Disconnect')
+            self.connected = True
+        
+
+
+app = QApplication(sys.argv)
+win = Window()
+win.show()
+
+sys.exit(app.exec())

+ 36 - 12
rpGUI/rpgui.py

@@ -29,6 +29,10 @@ class Window(QTW.QWidget):
         self.delayEdit = QTW.QSpinBox()
         self.delayEdit.setMaximum(1000000)
         self.delayEdit.setValue(500)
+        self.frontsLabel = QTW.QLabel("Fronts (us): ")
+        self.frontsEdit = QTW.QSpinBox()
+        self.frontsEdit.setMaximum(100)
+        self.frontsEdit.setValue(2)
         self.numLabel = QTW.QLabel("Repeats: ")
         self.numEdit = QTW.QSpinBox()
         self.numEdit.setMaximum(1000)
@@ -39,6 +43,8 @@ class Window(QTW.QWidget):
         self.paramLayout.addWidget(self.sigWidthEdit)
         self.paramLayout.addWidget(self.delayLabel)
         self.paramLayout.addWidget(self.delayEdit)
+        self.paramLayout.addWidget(self.frontsLabel)
+        self.paramLayout.addWidget(self.frontsEdit)
         self.paramLayout.addWidget(self.numLabel)
         self.paramLayout.addWidget(self.numEdit)
 
@@ -77,6 +83,7 @@ class Window(QTW.QWidget):
         if filename:
             swidth = self.sigWidthEdit.value()
             delay = self.delayEdit.value()
+            fronts = self.frontsEdit.value()
             num = self.numEdit.value()
             sigtype = self.typeGenCombo.currentText()
 
@@ -86,10 +93,17 @@ class Window(QTW.QWidget):
             if sigtype == "Rect":
                 delaySamples = delay * 125
                 highSamples = swidth * 125
+                frontSamples = fronts * 125
                 for i in range(num):
+                    for j in range(frontSamples):
+                        array = np.append(array, np.int16(32700 * j // frontSamples))
+                        array = np.append(array, np.int16(0))
                     for j in range(highSamples):
                         array = np.append(array, np.int16(32700))
                         array = np.append(array, np.int16(0))
+                    for j in range(frontSamples):
+                        array = np.append(array, np.int16(32700 - 32700 * j // frontSamples))
+                        array = np.append(array, np.int16(0))
                     for j in range(delaySamples):
                         array = np.append(array, np.int16(0))
                         array = np.append(array, np.int16(0))
@@ -125,30 +139,40 @@ class Window(QTW.QWidget):
 
             swidth = self.sigWidthEdit.value()
             delay = self.delayEdit.value()
+            fronts = self.frontsEdit.value()
             freq = self.freqEdit.value()
+            print(len(alts))
+            print(len(phases))
             fbuf = np.array([], dtype=np.float32)
-            tbuf = np.arange(0, (swidth + delay) * 10e-6, 8 * 10e-9)
-            fbuf = (alts / 32767) * np.sin(freq * 10e3 * tbuf + np.pi * phases / (32767 * 2))
+            tbuf = np.arange(0, np.float32((swidth + delay + 2 * fronts) * 10e-6), np.float32(8 * 10e-9))
+            fbuf = np.float32((alts / 32767) * np.float32(np.sin(2 * np.pi * freq * 100 * tbuf + np.pi * phases / (32767 * 2))))
+            print(fbuf[10000:12000])
 
-            self.sock.connect(('rp-f082cf.local', 5005))
-            buffer = struct.pack('<BIII', 0x02, len(fbuf), 0, 1)
+            self.sock.connect(('rp-f0cf82.local', 5005))
+            buffer = struct.pack('<BIII', 0x01, (len(fbuf) // 4096 + 1) * 4096, 1, 1)
             self.sock.sendall(buffer)
-            buffer = self.sock.recv(1024)
+            buffer = self.sock.recv(4096)
             if buffer[0] == 0x11:
-                for i in range(0, len(fbuf), 1019):
-                    datasize = 1019
-                    if len(fbuf) - i < 1019:
+                for i in range(0, len(fbuf), 509):
+                    datasize = 509
+                    if len(fbuf) - i < 509:
                         datasize = len(fbuf) - i
-                    buffer = struct.pack('<BI', 0x31, np.uint32(datasize)) + fbuf[i:(i+datasize)].tobytes()
-                
+                    buffer = struct.pack('<BI', 0x11, np.uint32(datasize)) + fbuf[i:(i+datasize)].tobytes()
+                    print(np.frombuffer(fbuf[i:(i+datasize)].tobytes(), dtype=np.float32, count=1, offset=0))
                     self.sock.sendall(buffer)
-                    buffer = self.sock.recv(1024)
+                    buffer = self.sock.recv(4096)
                     if buffer[0] != 0x11:
+                        self.sock.close()
                         return -1
+            else:
+                self.sock.close()
+                return -1
             buffer = struct.pack('<B', 0x21)
             self.sock.sendall(buffer)
+            buffer = self.sock.recv(1024)
             if buffer[0] == 0x01:
-                 self.loadLabel.setText("Loaded")    
+                 self.loadLabel.setText("Loaded")
+            self.sock.close()    
 
 
             

BIN
rpGUI/some.bin