Пример #1
0
 def send_pulse(self, inp_file):
     ''' Sends the pulse sequence to the server '''
     # write a 3 to signal that the button has been pushed
     gsocket.write(struct.pack('<I', 3 << 28))
     ass = Assembler()
     btye_array = ass.assemble(inp_file)
     print("Byte array = {}".format(btye_array))
     print("Length of byte array = {}".format(len(btye_array)))
     gsocket.write(btye_array)
     print("Sent byte array")
Пример #2
0
 def start(self):
     gsocket.write(struct.pack('<I', 3))
     self.load_shim()
     self.startButton.setEnabled(False)
     self.stopButton.setEnabled(True)
     self.seqType.setEnabled(True)
     self.uploadSeqButton.setEnabled(True)
     self.seqButton.setEnabled(True)
     gsocket.readyRead.connect(self.read_data)
     self.idle = False
Пример #3
0
 def stop(self):
     self.idle = True
     gsocket.write(struct.pack('<I', 0))
     self.startButton.setEnabled(True)
     self.stopButton.setEnabled(False)
     self.acquireButton.setEnabled(False)
     self.loadShimButton.setEnabled(False)
     self.zeroShimButton.setEnabled(False)
     # Disconnect global socket
     # if (gsocket.readyRead.isSignalConnected()):
     gsocket.readyRead.disconnect()
Пример #4
0
    def set_seq(self):
        if not self.seq_set:
            self.seqType_idx = self.seqType.currentIndex()
            if self.seqType_idx == 3 and self.uploadSeq.text() == 'none':
                QMessageBox.warning(self, 'Warning',
                                    'No sequence has been uploaded!',
                                    QMessageBox.Cancel)
                return

            self.seq_set = 1
            self.seqButton.setText('change sequence')
            self.seqType.setEnabled(False)
            self.uploadSeqButton.setEnabled(False)
            self.horizontalSlider_x.setEnabled(True)
            self.horizontalSlider_y.setEnabled(True)
            self.horizontalSlider_z.setEnabled(True)
            self.gradOffset_x.setEnabled(True)
            self.gradOffset_y.setEnabled(True)
            self.gradOffset_z.setEnabled(True)
            self.acquireButton.setEnabled(True)
            self.saveShimButton.setEnabled(True)
            self.loadShimButton.setEnabled(True)
            self.zeroShimButton.setEnabled(True)

            # write a 3 to signal
            gsocket.write(struct.pack('<I', 3 << 28 | self.seqType_idx))
            if self.seqType_idx == 0:
                self.set_pulse('sequence/sig/fid_sig.txt')
            elif self.seqType_idx == 1:
                if self.para_TE.value() == 10:
                    self.set_pulse('sequence/sig/se_sig.txt')
                else:
                    self.generate_se_seq()
                    self.set_pulse('sequence/sig/se_sig_te.txt')
            elif self.seqType_idx == 2:
                self.set_pulse('sequence/sig/gre_sig.txt')
            elif self.seqType_idx == 3:
                self.send_pulse()

        else:
            self.seq_set = 0
            self.seqButton.setText('confirm sequence')
            self.seqType.setEnabled(True)
            self.uploadSeqButton.setEnabled(True)
            self.horizontalSlider_x.setEnabled(False)
            self.horizontalSlider_y.setEnabled(False)
            self.horizontalSlider_z.setEnabled(False)
            self.gradOffset_x.setEnabled(False)
            self.gradOffset_y.setEnabled(False)
            self.gradOffset_z.setEnabled(False)
            self.acquireButton.setEnabled(False)
            self.saveShimButton.setEnabled(False)
            self.loadShimButton.setEnabled(False)
            self.zeroShimButton.setEnabled(False)
Пример #5
0
 def stop(self):
     self.idle = True
     gsocket.write(struct.pack('<I', 0))
     self.startButton.setEnabled(True)
     self.stopButton.setEnabled(False)
     self.projAxisValue.setEnabled(False)
     self.acquireButton.setEnabled(False)
     self.acquireAllButton.setEnabled(False)
     self.loadShimButton.setEnabled(False)
     self.zeroShimButton.setEnabled(False)
     # Disconnect global socket
     gsocket.readyRead.disconnect()
Пример #6
0
 def start(self):
     self.buffers_received = 0
     gsocket.write(struct.pack('<I', 6))
     self.load_shim()
     self.startButton.setEnabled(False)
     self.stopButton.setEnabled(True)
     self.acquireButton.setEnabled(True)
     self.loadShimButton.setEnabled(True)
     self.zeroShimButton.setEnabled(True)
     # Setup global socket for receive data
     gsocket.readyRead.connect(self.read_data)
     self.idle = False
Пример #7
0
 def acquire_all(self):
     self.if_all_projections = 1
     gsocket.write(struct.pack('<I', 3 << 28))
     print("Acquiring all projections")
     self.plot_x.clear()
     self.plot_y.clear()
     self.plot_z.clear()
     self.stopButton.setEnabled(False)
     self.projAxisValue.setEnabled(False)
     self.acquireButton.setEnabled(False)
     self.acquireAllButton.setEnabled(False)
     self.loadShimButton.setEnabled(False)
     self.zeroShimButton.setEnabled(False)
Пример #8
0
 def start(self):
     gsocket.write(struct.pack('<I', 4))
     self.load_shim()
     self.startButton.setEnabled(False)
     self.stopButton.setEnabled(True)
     self.projAxisValue.setEnabled(True)
     self.acquireButton.setEnabled(True)
     self.acquireAllButton.setEnabled(True)
     self.loadShimButton.setEnabled(True)
     self.zeroShimButton.setEnabled(True)
     # Setup global socket for receive data
     gsocket.readyRead.connect(self.read_data)
     self.idle = False
Пример #9
0
    def set_angle_spin(self, value):
        if self.idle: return
        if value < 0:
            self.angle = 360 + value  # Need positive angle to pack
        else:
            self.angle = value

        # print("Value = {}".format(value))
        self.dial.setValue(value +
                           90)  # dial is offset 90 degrees from spin box
        # self.dial.setValue(value - 90)
        # print("Current angle = {}".format(self.angle))
        # represent this with at least 12 bits, so that we can cover 0 to 360
        gsocket.write(struct.pack('<I', 3 << 28 | self.angle))
Пример #10
0
    def stop(self):
        print("Stopping MRI_Rt_Widget")
        self.idle = True
        gsocket.write(struct.pack('<I', 0))

        self.startButton.setEnabled(True)
        self.stopButton.setEnabled(False)
        self.horizontalSlider_x.setEnabled(False)
        self.horizontalSlider_y.setEnabled(False)
        self.horizontalSlider_z.setEnabled(False)
        self.gradOffset_x.setEnabled(False)
        self.gradOffset_y.setEnabled(False)
        self.gradOffset_z.setEnabled(False)
        self.saveShimButton.setEnabled(False)
        self.acquireButton.setEnabled(False)
        self.loadShimButton.setEnabled(False)
        self.zeroShimButton.setEnabled(False)
        gsocket.readyRead.disconnect()
Пример #11
0
    def start(self):
        print("Starting MRI_2DImag_Widget")

        # send 5 as signal to start MRI_2DImag_Widget
        gsocket.write(struct.pack('<I', 5))

        # enable/disable GUI elements
        self.startButton.setEnabled(False)
        self.stopButton.setEnabled(True)
        self.uploadSeqButton.setEnabled(True)
        self.acquireButton.setEnabled(True)
        self.loadShimButton.setEnabled(True)
        self.zeroShimButton.setEnabled(True)

        # setup global socket for receive data
        gsocket.readyRead.connect(self.read_data)

        self.load_shim()
        self.idle = False
Пример #12
0
    def start(self):
        self.idle = False
        gsocket.write(struct.pack('<I', 7))
        self.startButton.setEnabled(False)
        self.stopButton.setEnabled(True)
        self.acquireButton.setEnabled(True)
        self.loadShimButton.setEnabled(True)
        self.zeroShimButton.setEnabled(True)
        self.horizontalSlider_x.setEnabled(True)
        self.horizontalSlider_y.setEnabled(True)
        self.horizontalSlider_z.setEnabled(True)
        self.gradOffset_x.setEnabled(True)
        self.gradOffset_y.setEnabled(True)
        self.gradOffset_z.setEnabled(True)
        # Setup global socket for receive data
        gsocket.readyRead.connect(self.read_data)

        # Send the number of averages
        self.set_num_avg(self.num_avgs)
Пример #13
0
 def zero_shim(self):
     print("\tZero grad offsets")
     self.gradOffset_x.valueChanged.disconnect()
     self.gradOffset_y.valueChanged.disconnect()
     self.gradOffset_z.valueChanged.disconnect()
     self.gradOffset_x.setValue(0)
     self.gradOffset_y.setValue(0)
     self.gradOffset_z.setValue(0)
     self.horizontalSlider_x.setValue(0)
     self.horizontalSlider_y.setValue(0)
     self.horizontalSlider_z.setValue(0)
     self.gradOffset_x.valueChanged.connect(
         lambda: self.set_grad_offset(self.gradOffset_x))
     self.gradOffset_y.valueChanged.connect(
         lambda: self.set_grad_offset(self.gradOffset_y))
     self.gradOffset_z.valueChanged.connect(
         lambda: self.set_grad_offset(self.gradOffset_z))
     gsocket.write(struct.pack('<I', 2 << 28 | 5 << 24))
     print("Acquiring data")
Пример #14
0
 def zero_shim(self):
     print("\tZero grad offsets.")
     self.gradOffset_x.valueChanged.disconnect()
     self.gradOffset_y.valueChanged.disconnect()
     self.gradOffset_z.valueChanged.disconnect()
     self.gradOffset_z2.valueChanged.disconnect()
     self.gradOffset_x.setValue(0)
     self.gradOffset_y.setValue(0)
     self.gradOffset_z.setValue(0)
     self.gradOffset_z2.setValue(0)
     self.gradOffset_x.valueChanged.connect(
         lambda: self.set_grad_offset(self.gradOffset_x))
     self.gradOffset_y.valueChanged.connect(
         lambda: self.set_grad_offset(self.gradOffset_y))
     self.gradOffset_z.valueChanged.connect(
         lambda: self.set_grad_offset(self.gradOffset_z))
     self.gradOffset_z2.valueChanged.connect(
         lambda: self.set_grad_offset(self.gradOffset_z2))
     gsocket.write(struct.pack('<I', 2 << 28 | 6 << 24))
     print("\tAcquiring data.")
Пример #15
0
 def stop(self):
     self.idle = True
     gsocket.write(struct.pack('<I', 0))
     self.startButton.setEnabled(True)
     self.stopButton.setEnabled(False)
     self.gradOffset_x.setEnabled(False)
     self.gradOffset_y.setEnabled(False)
     self.gradOffset_z.setEnabled(False)
     self.gradOffset_z2.setEnabled(False)
     self.acquireButton.setEnabled(False)
     self.saveShimButton.setEnabled(False)
     self.loadShimButton.setEnabled(False)
     self.zeroShimButton.setEnabled(False)
     self.zoomCheckBox.setEnabled(False)
     self.peakWindowCheckBox.setEnabled(False)
     self.cycAcqBtn.setEnabled(False)
     self.cyclesValue.setEnabled(False)
     # Disconnect global socket
     # if (gsocket.readyRead.isSignalConnected()):
     gsocket.readyRead.disconnect()
Пример #16
0
    def stop(self):
        print("Stopping MRI_2DImag_Widget")

        self.uploadSeq.setText('none')

        # send 0 as signal to stop MRI_2DImag_Widget
        gsocket.write(struct.pack('<I', 0))

        # enable/disable GUI elements
        self.startButton.setEnabled(True)
        self.stopButton.setEnabled(False)
        self.uploadSeqButton.setEnabled(False)
        self.acquireButton.setEnabled(False)
        self.loadShimButton.setEnabled(False)
        self.zeroShimButton.setEnabled(False)

        # Disconnect global socket
        gsocket.readyRead.disconnect()

        self.idle = True
Пример #17
0
 def acquire(self):
     self.num_pe = int(self.npe.currentText())
     self.num_pe2 = int(self.npe2.currentText())
     self.npe_idx = self.npe.currentIndex()
     self.npe2_idx = self.npe2.currentIndex()
     self.seqType_idx = self.seqType.currentIndex()
     print(self.npe_idx)
     print(self.num_pe)
     print(self.npe2_idx)
     print(self.num_pe2)
     gsocket.write(struct.pack('<I', 2 << 28 | 0 << 24 | self.npe2_idx<<8 | self.npe_idx<<4 |
                               self.seqType_idx ))
     print("Acquiring data = {} x {} x {}".format(self.num_pe, self.num_pe, self.num_pe2))
     self.freqValue.setEnabled(False)
     self.seqType.setEnabled(False)
     self.npe.setEnabled(False)
     self.startButton.setEnabled(False)
     self.stopButton.setEnabled(False)
     self.acquireButton.setEnabled(False)
     self.loadShimButton.setEnabled(False)
     self.zeroShimButton.setEnabled(False)
Пример #18
0
    def start(self):
        print("Starting MRI_SE_Widget")

        # send 2 as signal to start MRI_SE_Widget
        gsocket.write(struct.pack('<I', 2))

        # enable/disable GUI elements
        self.startButton.setEnabled(False)
        self.stopButton.setEnabled(True)
        self.gradOffset_x.setEnabled(True)
        self.gradOffset_y.setEnabled(True)
        self.gradOffset_z.setEnabled(True)
        self.gradOffset_z2.setEnabled(True)
        self.acquireButton.setEnabled(True)
        self.saveShimButton.setEnabled(True)
        self.loadShimButton.setEnabled(True)
        self.zeroShimButton.setEnabled(True)
        self.zoomCheckBox.setEnabled(True)
        self.peakWindowCheckBox.setEnabled(True)

        self.cycAcqBtn.setEnabled(False)
        self.cyclesValue.setEnabled(False)

        # setup global socket for receive data
        gsocket.readyRead.connect(self.read_data)

        # send the sequence to the backend
        ass = Assembler()
        seq_byte_array = ass.assemble(self.seq_filename)
        print(len(seq_byte_array))
        gsocket.write(struct.pack('<I', len(seq_byte_array)))
        gsocket.write(seq_byte_array)

        self.load_shim()
        self.idle = False
Пример #19
0
    def acquire(self):
        # clear the plots, need to call draw() to update
        self.axes_bottom.clear()
        self.axes_top.clear()
        self.canvas.draw()
        self.axes_k_amp.clear()
        self.axes_k_pha.clear()
        self.axes_image.clear()
        self.canvas2.draw()

        self.progressBar.setValue(0)

        self.kspace_full = np.matrix(
            np.zeros((self.num_TR, 50000), dtype=np.complex64))

        crop_size = int(self.num_pe / 64 * self.crop_factor)
        self.kspace = np.matrix(
            np.zeros((self.num_pe, crop_size), dtype=np.complex64))
        self.k_amp = np.matrix(np.zeros((self.num_pe, self.num_pe * 2)))
        self.k_pha = np.matrix(np.zeros((self.num_pe, self.num_pe * 2)))
        self.img = np.matrix(np.zeros((self.num_pe, self.num_pe)))

        self.acqType_idx = self.acqType.currentIndex()
        if self.acqType_idx == 0:  # Projections
            gsocket.write(struct.pack('<I', 3 << 28 | self.angle))
            print("CMD: Acquiring projection")
        elif self.acqType_idx == 1:  # Image
            gsocket.write(struct.pack('<I', 5 << 28 | self.angle))
            print("CMD: Acquiring 2D image")

        # # enable/disable GUI elements
        self.freqValue.setEnabled(False)
        self.acqType.setEnabled(False)
        self.startButton.setEnabled(False)
        self.stopButton.setEnabled(False)
        self.searchButton.setEnabled(False)
        self.acquireButton.setEnabled(False)
        self.loadShimButton.setEnabled(False)
        self.zeroShimButton.setEnabled(False)
        self.saveShimButton.setEnabled(False)
Пример #20
0
    def start(self):
        print("Starting MRI_FID_Widget")

        # send 1 as signal to start MRI_FID_Widget
        gsocket.write(struct.pack('<I', 1))

        # enable/disable GUI elements
        self.startButton.setEnabled(False)
        self.stopButton.setEnabled(True)
        self.applyFreqButton.setEnabled(True)
        self.gradOffset_x.setEnabled(True)
        self.gradOffset_y.setEnabled(True)
        self.gradOffset_z.setEnabled(True)
        self.gradOffset_z2.setEnabled(True)
        self.acquireButton.setEnabled(True)
        self.saveShimButton.setEnabled(True)
        self.loadShimButton.setEnabled(True)
        self.zeroShimButton.setEnabled(True)
        self.openFlipangletoolBtn.setEnabled(True)

        # setup global socket for receive data
        gsocket.setReadBufferSize(8 * self.size)
        gsocket.readyRead.connect(self.read_data)

        # send the sequence to the backend
        ass = Assembler()
        seq_byte_array = ass.assemble(self.seq_filename)
        print(len(seq_byte_array))
        gsocket.write(struct.pack('<I', len(seq_byte_array)))
        gsocket.write(seq_byte_array)

        self.load_shim()
        self.idle = False
Пример #21
0
 def stop(self):
     self.idle = True
     self.uploadSeq.setText('none')
     gsocket.write(struct.pack('<I', 0))
     self.startButton.setEnabled(True)
     self.stopButton.setEnabled(False)
     self.seqType.setEnabled(False)
     self.uploadSeqButton.setEnabled(False)
     self.seqButton.setEnabled(False)
     self.seq_set = 0
     self.seqButton.setText('confirm sequence')
     self.horizontalSlider_x.setEnabled(False)
     self.horizontalSlider_y.setEnabled(False)
     self.horizontalSlider_z.setEnabled(False)
     self.gradOffset_x.setEnabled(False)
     self.gradOffset_y.setEnabled(False)
     self.gradOffset_z.setEnabled(False)
     self.acquireButton.setEnabled(False)
     self.saveShimButton.setEnabled(False)
     self.loadShimButton.setEnabled(False)
     self.zeroShimButton.setEnabled(False)
     # Disconnect global socket
     gsocket.readyRead.disconnect()
Пример #22
0
    def stop(self):
        print("Stopping MRI_FID_Widget")

        # send 0 as signal to stop MRI_FID_Widget
        gsocket.write(struct.pack('<I', 0))

        # enable/disable GUI elements
        self.startButton.setEnabled(True)
        self.stopButton.setEnabled(False)
        self.applyFreqButton.setEnabled(False)
        self.gradOffset_x.setEnabled(False)
        self.gradOffset_y.setEnabled(False)
        self.gradOffset_z.setEnabled(False)
        self.gradOffset_z2.setEnabled(False)
        self.acquireButton.setEnabled(False)
        self.saveShimButton.setEnabled(False)
        self.loadShimButton.setEnabled(False)
        self.zeroShimButton.setEnabled(False)
        self.openFlipangletoolBtn.setEnabled(False)

        # Disconnect global socket
        gsocket.readyRead.disconnect()

        self.idle = True
Пример #23
0
 def set_proj_axis(self, currentIndex):
     ''' Sets the projection axis (x, y, z) '''
     if currentIndex == 0:
         print("\tChanging projection axis to X")
         gsocket.write(struct.pack('<I', 2 << 28 | 1 << 24))
     elif currentIndex == 1:
         print("\tChanging projection axis to Y")
         gsocket.write(struct.pack('<I', 2 << 28 | 2 << 24))
     elif currentIndex == 2:
         print("\tChanging projection axis to Z")
         gsocket.write(struct.pack('<I', 2 << 28 | 3 << 24))
     else:
         print("AXIS ERROR")
Пример #24
0
 def load_shim(self):
     print("\tLoad grad offsets")
     self.gradOffset_x.valueChanged.disconnect()
     self.gradOffset_y.valueChanged.disconnect()
     self.gradOffset_z.valueChanged.disconnect()
     self.gradOffset_x.setValue(parameters.get_grad_offset_x())
     self.gradOffset_y.setValue(parameters.get_grad_offset_y())
     self.gradOffset_z.setValue(parameters.get_grad_offset_z())
     self.horizontalSlider_x.setValue(parameters.get_grad_offset_x())
     self.horizontalSlider_y.setValue(parameters.get_grad_offset_y())
     self.horizontalSlider_z.setValue(parameters.get_grad_offset_z())
     self.gradOffset_x.valueChanged.connect(
         lambda: self.set_grad_offset(self.gradOffset_x))
     self.gradOffset_y.valueChanged.connect(
         lambda: self.set_grad_offset(self.gradOffset_y))
     self.gradOffset_z.valueChanged.connect(
         lambda: self.set_grad_offset(self.gradOffset_z))
     offsetX = self.gradOffset_x.value()
     self.horizontalSlider_x.setValue(offsetX)
     if offsetX > 0:
         gsocket.write(struct.pack('<I', 2 << 28 | 4 << 24 | offsetX))
     else:
         gsocket.write(
             struct.pack('<I', 2 << 28 | 4 << 24 | 1 << 20 | -offsetX))
     offsetY = self.gradOffset_y.value()
     self.horizontalSlider_y.setValue(offsetY)
     if offsetY > 0:
         gsocket.write(struct.pack('<I', 2 << 28 | 4 << 24 | offsetY))
     else:
         gsocket.write(
             struct.pack('<I', 2 << 28 | 4 << 24 | 1 << 20 | -offsetY))
     offsetZ = self.gradOffset_z.value()
     self.horizontalSlider_z.setValue(offsetZ)
     if offsetZ > 0:
         gsocket.write(struct.pack('<I', 2 << 28 | 4 << 24 | offsetZ))
     else:
         gsocket.write(
             struct.pack('<I', 2 << 28 | 4 << 24 | 1 << 20 | -offsetZ))
     if self.idle:
         gsocket.write(struct.pack('<I', 2 << 28 | 4 << 24 | 0 << 20))
     else:
         gsocket.write(struct.pack('<I', 2 << 28 | 4 << 24 | 1 << 20))
         print("Acquiring data")
Пример #25
0
 def set_grad_offset(self, spinBox):
     if spinBox.objectName() == 'gradOffset_x':
         print("\tSetting grad offset x")
         offsetX = self.gradOffset_x.value()
         self.horizontalSlider_x.setValue(offsetX)
         if offsetX > 0:
             gsocket.write(struct.pack('<I', 2 << 28 | 1 << 24 | offsetX))
         else:
             gsocket.write(
                 struct.pack('<I', 2 << 28 | 1 << 24 | 1 << 20 | -offsetX))
         print("Acquiring data")
     elif spinBox.objectName() == 'gradOffset_y':
         print("\tSetting grad offset y")
         offsetY = self.gradOffset_y.value()
         self.horizontalSlider_y.setValue(offsetY)
         if offsetY > 0:
             gsocket.write(struct.pack('<I', 2 << 28 | 2 << 24 | offsetY))
         else:
             gsocket.write(
                 struct.pack('<I', 2 << 28 | 2 << 24 | 1 << 20 | -offsetY))
         print("Acquiring data")
     elif spinBox.objectName() == 'gradOffset_z':
         print("\tSetting grad offset z")
         offsetZ = self.gradOffset_z.value()
         self.horizontalSlider_z.setValue(offsetZ)
         if offsetZ > 0:
             gsocket.write(struct.pack('<I', 2 << 28 | 3 << 24 | offsetZ))
         else:
             gsocket.write(
                 struct.pack('<I', 2 << 28 | 3 << 24 | 1 << 20 | -offsetZ))
         print("Acquiring data")
     else:
         print('Error: set_grad_offset')
         return
Пример #26
0
 def acquire(self):
     gsocket.write(struct.pack('<I', 2 << 28 | 0 << 24))
     print("Acquiring data")
Пример #27
0
 def set_pulse(self, inp_file):
     ''' Sends the default pulse sequence to the server '''
     ass = Assembler()
     self.default_seq_byte_array = ass.assemble(inp_file)
     gsocket.write(self.default_seq_byte_array)
     return
Пример #28
0
 def send_pulse(self):
     ''' Sends the uploaded pulse sequence to the server '''
     gsocket.write(self.upload_seq_byte_array)
     return
Пример #29
0
 def load_shim(self):
     print("\tLoad grad offsets")
     self.shim_x.setText(str(parameters.get_grad_offset_x()))
     self.shim_y.setText(str(parameters.get_grad_offset_y()))
     self.shim_z.setText(str(parameters.get_grad_offset_z()))
     offsetX = int(self.shim_x.text())
     if offsetX > 0:
         gsocket.write(struct.pack('<I', 2 << 28 | 4 << 24 | offsetX))
     else:
         gsocket.write(
             struct.pack('<I', 2 << 28 | 4 << 24 | 1 << 20 | -offsetX))
     offsetY = int(self.shim_y.text())
     if offsetY > 0:
         gsocket.write(struct.pack('<I', 2 << 28 | 4 << 24 | offsetY))
     else:
         gsocket.write(
             struct.pack('<I', 2 << 28 | 4 << 24 | 1 << 20 | -offsetY))
     offsetZ = int(self.shim_z.text())
     if offsetZ > 0:
         gsocket.write(struct.pack('<I', 2 << 28 | 4 << 24 | offsetZ))
     else:
         gsocket.write(
             struct.pack('<I', 2 << 28 | 4 << 24 | 1 << 20 | -offsetZ))
     if self.idle:
         gsocket.write(struct.pack('<I', 2 << 28 | 4 << 24 | 0 << 20))
     else:
         gsocket.write(struct.pack('<I', 2 << 28 | 4 << 24 | 1 << 20))
         print("Acquiring data")
Пример #30
0
    def load_shim(self):
        print("Loading shim.")
        self.gradOffset_x.valueChanged.disconnect()
        self.gradOffset_y.valueChanged.disconnect()
        self.gradOffset_z.valueChanged.disconnect()
        self.gradOffset_z2.valueChanged.disconnect()
        self.gradOffset_x.setValue(parameters.get_grad_offset_x())
        self.gradOffset_y.setValue(parameters.get_grad_offset_y())
        self.gradOffset_z.setValue(parameters.get_grad_offset_z())
        self.gradOffset_z2.setValue(parameters.get_grad_offset_z2())
        self.gradOffset_x.valueChanged.connect(
            lambda: self.set_grad_offset(self.gradOffset_x))
        self.gradOffset_y.valueChanged.connect(
            lambda: self.set_grad_offset(self.gradOffset_y))
        self.gradOffset_z.valueChanged.connect(
            lambda: self.set_grad_offset(self.gradOffset_z))
        self.gradOffset_z2.valueChanged.connect(
            lambda: self.set_grad_offset(self.gradOffset_z2))

        offsetX = self.gradOffset_x.value()

        if offsetX > 0:
            gsocket.write(struct.pack('<I', 2 << 28 | 5 << 24 | offsetX))
        else:
            gsocket.write(
                struct.pack('<I', 2 << 28 | 5 << 24 | 1 << 20 | -offsetX))
        offsetY = self.gradOffset_y.value()

        if offsetY > 0:
            gsocket.write(struct.pack('<I', 2 << 28 | 5 << 24 | offsetY))
        else:
            gsocket.write(
                struct.pack('<I', 2 << 28 | 5 << 24 | 1 << 20 | -offsetY))

        offsetZ = self.gradOffset_z.value()

        if offsetZ > 0:
            gsocket.write(struct.pack('<I', 2 << 28 | 5 << 24 | offsetZ))
        else:
            gsocket.write(
                struct.pack('<I', 2 << 28 | 5 << 24 | 1 << 20 | -offsetZ))

        offsetZ2 = self.gradOffset_z2.value()

        if offsetZ2 > 0:
            gsocket.write(struct.pack('<I', 2 << 28 | 5 << 24 | offsetZ2))
        else:
            gsocket.write(
                struct.pack('<I', 2 << 28 | 5 << 24 | 1 << 20 | -offsetZ2))

        if self.idle:
            gsocket.write(struct.pack('<I', 2 << 28 | 5 << 24 | 0 << 20))
        else:
            gsocket.write(struct.pack('<I', 2 << 28 | 5 << 24 | 1 << 20))
            print("\tAcquiring data.")