|
@@ -29,6 +29,10 @@ class Window(QTW.QWidget):
|
|
|
self.delayEdit = QTW.QSpinBox()
|
|
self.delayEdit = QTW.QSpinBox()
|
|
|
self.delayEdit.setMaximum(1000000)
|
|
self.delayEdit.setMaximum(1000000)
|
|
|
self.delayEdit.setValue(500)
|
|
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.numLabel = QTW.QLabel("Repeats: ")
|
|
|
self.numEdit = QTW.QSpinBox()
|
|
self.numEdit = QTW.QSpinBox()
|
|
|
self.numEdit.setMaximum(1000)
|
|
self.numEdit.setMaximum(1000)
|
|
@@ -39,6 +43,8 @@ class Window(QTW.QWidget):
|
|
|
self.paramLayout.addWidget(self.sigWidthEdit)
|
|
self.paramLayout.addWidget(self.sigWidthEdit)
|
|
|
self.paramLayout.addWidget(self.delayLabel)
|
|
self.paramLayout.addWidget(self.delayLabel)
|
|
|
self.paramLayout.addWidget(self.delayEdit)
|
|
self.paramLayout.addWidget(self.delayEdit)
|
|
|
|
|
+ self.paramLayout.addWidget(self.frontsLabel)
|
|
|
|
|
+ self.paramLayout.addWidget(self.frontsEdit)
|
|
|
self.paramLayout.addWidget(self.numLabel)
|
|
self.paramLayout.addWidget(self.numLabel)
|
|
|
self.paramLayout.addWidget(self.numEdit)
|
|
self.paramLayout.addWidget(self.numEdit)
|
|
|
|
|
|
|
@@ -50,22 +56,34 @@ class Window(QTW.QWidget):
|
|
|
self.freqEdit.setMaximum(50000)
|
|
self.freqEdit.setMaximum(50000)
|
|
|
self.freqEdit.setValue(2950)
|
|
self.freqEdit.setValue(2950)
|
|
|
self.loadButton = QTW.QPushButton("Load")
|
|
self.loadButton = QTW.QPushButton("Load")
|
|
|
-
|
|
|
|
|
self.loadLabel = QTW.QLabel("Not loaded")
|
|
self.loadLabel = QTW.QLabel("Not loaded")
|
|
|
|
|
+
|
|
|
|
|
+ self.syncLayout = QTW.QHBoxLayout()
|
|
|
|
|
+ self.syncButton = QTW.QPushButton("Sync Alone Test")
|
|
|
|
|
+ self.syncButton.pressed.connect(self.syncAlone)
|
|
|
|
|
+
|
|
|
self.loadLayout.addWidget(self.freqLabel)
|
|
self.loadLayout.addWidget(self.freqLabel)
|
|
|
self.loadLayout.addWidget(self.freqEdit)
|
|
self.loadLayout.addWidget(self.freqEdit)
|
|
|
self.loadLayout.addWidget(self.loadButton)
|
|
self.loadLayout.addWidget(self.loadButton)
|
|
|
self.loadLayout.addWidget(self.loadLabel)
|
|
self.loadLayout.addWidget(self.loadLabel)
|
|
|
|
|
+ self.syncLayout.addWidget(self.syncButton)
|
|
|
self.loadButton.pressed.connect(self.loadFileDialog)
|
|
self.loadButton.pressed.connect(self.loadFileDialog)
|
|
|
self.mainlayout = QTW.QVBoxLayout()
|
|
self.mainlayout = QTW.QVBoxLayout()
|
|
|
self.mainlayout.addLayout(self.genLayout)
|
|
self.mainlayout.addLayout(self.genLayout)
|
|
|
self.mainlayout.addLayout(self.paramLayout)
|
|
self.mainlayout.addLayout(self.paramLayout)
|
|
|
self.mainlayout.addLayout(self.loadLayout)
|
|
self.mainlayout.addLayout(self.loadLayout)
|
|
|
|
|
+ self.mainlayout.addLayout(self.syncLayout)
|
|
|
|
|
|
|
|
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
|
|
|
|
|
|
self.setLayout(self.mainlayout)
|
|
self.setLayout(self.mainlayout)
|
|
|
|
|
|
|
|
|
|
+ def syncAlone(self):
|
|
|
|
|
+ self.sock.connect(('rp-f0cf82.local', 5005))
|
|
|
|
|
+ buffer = struct.pack('<B', 0x05)
|
|
|
|
|
+ self.sock.sendall(buffer)
|
|
|
|
|
+ buffer = self.sock.recv(4096)
|
|
|
|
|
+
|
|
|
def genFileDialog(self):
|
|
def genFileDialog(self):
|
|
|
filename, ok = QTW.QFileDialog.getSaveFileName(
|
|
filename, ok = QTW.QFileDialog.getSaveFileName(
|
|
|
self,
|
|
self,
|
|
@@ -77,6 +95,7 @@ class Window(QTW.QWidget):
|
|
|
if filename:
|
|
if filename:
|
|
|
swidth = self.sigWidthEdit.value()
|
|
swidth = self.sigWidthEdit.value()
|
|
|
delay = self.delayEdit.value()
|
|
delay = self.delayEdit.value()
|
|
|
|
|
+ fronts = self.frontsEdit.value()
|
|
|
num = self.numEdit.value()
|
|
num = self.numEdit.value()
|
|
|
sigtype = self.typeGenCombo.currentText()
|
|
sigtype = self.typeGenCombo.currentText()
|
|
|
|
|
|
|
@@ -86,10 +105,17 @@ class Window(QTW.QWidget):
|
|
|
if sigtype == "Rect":
|
|
if sigtype == "Rect":
|
|
|
delaySamples = delay * 125
|
|
delaySamples = delay * 125
|
|
|
highSamples = swidth * 125
|
|
highSamples = swidth * 125
|
|
|
|
|
+ frontSamples = fronts * 125
|
|
|
for i in range(num):
|
|
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):
|
|
for j in range(highSamples):
|
|
|
array = np.append(array, np.int16(32700))
|
|
array = np.append(array, np.int16(32700))
|
|
|
array = np.append(array, np.int16(0))
|
|
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):
|
|
for j in range(delaySamples):
|
|
|
array = np.append(array, np.int16(0))
|
|
array = np.append(array, np.int16(0))
|
|
|
array = np.append(array, np.int16(0))
|
|
array = np.append(array, np.int16(0))
|
|
@@ -125,30 +151,40 @@ class Window(QTW.QWidget):
|
|
|
|
|
|
|
|
swidth = self.sigWidthEdit.value()
|
|
swidth = self.sigWidthEdit.value()
|
|
|
delay = self.delayEdit.value()
|
|
delay = self.delayEdit.value()
|
|
|
|
|
+ fronts = self.frontsEdit.value()
|
|
|
freq = self.freqEdit.value()
|
|
freq = self.freqEdit.value()
|
|
|
|
|
+ print(len(alts))
|
|
|
|
|
+ print(len(phases))
|
|
|
fbuf = np.array([], dtype=np.float32)
|
|
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)
|
|
self.sock.sendall(buffer)
|
|
|
- buffer = self.sock.recv(1024)
|
|
|
|
|
|
|
+ buffer = self.sock.recv(4096)
|
|
|
if buffer[0] == 0x11:
|
|
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
|
|
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)
|
|
self.sock.sendall(buffer)
|
|
|
- buffer = self.sock.recv(1024)
|
|
|
|
|
|
|
+ buffer = self.sock.recv(4096)
|
|
|
if buffer[0] != 0x11:
|
|
if buffer[0] != 0x11:
|
|
|
|
|
+ self.sock.close()
|
|
|
return -1
|
|
return -1
|
|
|
|
|
+ else:
|
|
|
|
|
+ self.sock.close()
|
|
|
|
|
+ return -1
|
|
|
buffer = struct.pack('<B', 0x21)
|
|
buffer = struct.pack('<B', 0x21)
|
|
|
self.sock.sendall(buffer)
|
|
self.sock.sendall(buffer)
|
|
|
|
|
+ buffer = self.sock.recv(1024)
|
|
|
if buffer[0] == 0x01:
|
|
if buffer[0] == 0x01:
|
|
|
- self.loadLabel.setText("Loaded")
|
|
|
|
|
|
|
+ self.loadLabel.setText("Loaded")
|
|
|
|
|
+ self.sock.close()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|