Ejemplo n.º 1
0
    def captureChannels(self):
        try:
            ret = ljm.eReadAddresses(self.handle, len(self.sensorsAddresses),
                                     self.sensorsAddresses,
                                     self.sensorDataTypes)

            scaled = np.copy(np.asarray(ret))
            scaled = scaled * self.sensorMScaling
            scaled = scaled + self.sensorBScaling

            self.flowRate = scaled[3]
            self.flowRateRingBuffer = np.roll(self.flowRateRingBuffer, -1)
            self.flowRateRingBuffer[-1] = self.flowRate

            self.tankPressure = scaled[1]
            self.tankPressureRingBuffer = np.roll(self.tankPressureRingBuffer,
                                                  -1)
            self.tankPressureRingBuffer[-1] = self.tankPressure

            self.outletPressure = scaled[2]
            self.outletPressureRingBuffer = np.roll(
                self.outletPressureRingBuffer, -1)
            self.outletPressureRingBuffer[-1] = self.outletPressure

            scaled = np.append(
                scaled, np.asarray([self.ventValveState, self.mainValveState]))

            if self.dataLog.shape[0] == 0:
                self.dataLog = np.copy(scaled)
            else:
                self.dataLog = np.vstack((self.dataLog, scaled))
        finally:
            QtCore.QTimer.singleShot(self.dataLogIntervalMs,
                                     self.captureChannels)
Ejemplo n.º 2
0
 def get_data(self):
   """
   Read the signal on all pre-defined input channels.
   """
   try:
     return [time()]+ljm.eReadAddresses(self.handle, len(self.read_addresses),
         self.read_addresses,self.read_types)
   except ljm.LJMError as e:
     print('[Labjack] Error in get_data:', e)
     self.close()
     raise
Ejemplo n.º 3
0
 def get_data(self):
     """
 Read the signal on all pre-defined input channels.
 """
     try:
         return [time()] + ljm.eReadAddresses(
             self.handle, len(
                 self.read_addresses), self.read_addresses, self.read_types)
     except ljm.LJMError as e:
         print('[Labjack] Error in get_data:', e)
         self.close()
         raise
Ejemplo n.º 4
0
    def captureT7Channels(self):
        try:
            ret = ljm.eReadAddresses(self.handle, len(self.sensorsAddresses),
                                     self.sensorsAddresses,
                                     self.sensorDataTypes)

            # scaled = np.copy(np.asarray(ret))
            # scaled = scaled * self.sensorMScaling
            # scaled = scaled + self.sensorBScaling

            self.flowRate = scaled[3]
            self.flowRateRingBuffer = np.roll(self.flowRateRingBuffer, -1)
            self.flowRateRingBuffer[-1] = self.flowRate

            self.tankPressure = scaled[1]
            self.tankPressureRingBuffer = np.roll(self.tankPressureRingBuffer,
                                                  -1)
            self.tankPressureRingBuffer[-1] = self.tankPressure

            self.outletPressure = scaled[2]
            self.outletPressureRingBuffer = np.roll(
                self.outletPressureRingBuffer, -1)
            self.outletPressureRingBuffer[-1] = self.outletPressure

            scaled = np.append(
                scaled,
                np.asarray([ret[3], self.ventValveState, self.mainValveState]))

            if self.dataLog.shape[0] == 0:
                self.dataLog = np.copy(scaled)
            else:
                self.dataLog = np.vstack((self.dataLog, scaled))
            if self.dataLog.shape[
                    0] % 10 == 0:  # Only save/plot once per 100 readings
                self.fig_axes[0].plot()
                if (self.logData):
                    with open(self.csvFileName, mode='a') as data_file:
                        data_writer = csv.writer(data_file,
                                                 delimiter=',',
                                                 quotechar='"',
                                                 quoting=csv.QUOTE_MINIMAL)
                        print self.dataLog.shape
                        data_writer.writerows(self.dataLog)
                self.dataLog = np.empty([0, 4])
        finally:
            QtCore.QTimer.singleShot(self.t7dataLogIntervalMs,
                                     self.captureT7Channels)
Ejemplo n.º 5
0
"""

from labjack import ljm

# Open first found LabJack
handle = ljm.open(ljm.constants.dtANY, ljm.constants.ctANY, "ANY")
#handle = ljm.openS("ANY", "ANY", "ANY")

info = ljm.getHandleInfo(handle)
print("Opened a LabJack with Device type: %i, Connection type: %i,\n" \
    "Serial number: %i, IP address: %s, Port: %i,\nMax bytes per MB: %i" % \
    (info[0], info[1], info[2], ljm.numberToIP(info[3]), info[4], info[5]))

# Setup and call eReadAddresses to read values from the LabJack.
numFrames = 3
aAddresses = [60028, 60000,
              60004]  # [serial number, product ID, firmware version]
aDataTypes = [
    ljm.constants.UINT32, ljm.constants.FLOAT32, ljm.constants.FLOAT32
]
results = ljm.eReadAddresses(handle, numFrames, aAddresses, aDataTypes)

print("\neReadAddresses results: ")
for i in range(numFrames):
    print("    Address - %i, data type - %i, value : %f" % \
        (aAddresses[i], aDataTypes[i], results[i]))

# Close handle
ljm.close(handle)
Ejemplo n.º 6
0
function.

"""

from labjack import ljm


# Open first found LabJack
handle = ljm.open(ljm.constants.dtANY, ljm.constants.ctANY, "ANY")
#handle = ljm.openS("ANY", "ANY", "ANY")

info = ljm.getHandleInfo(handle)
print("Opened a LabJack with Device type: %i, Connection type: %i,\n" \
    "Serial number: %i, IP address: %s, Port: %i,\nMax bytes per MB: %i" % \
    (info[0], info[1], info[2], ljm.numberToIP(info[3]), info[4], info[5]))

# Setup and call eReadAddresses to read values from the LabJack.
numFrames = 3
aAddresses = [60028, 60000, 60004] # [serial number, product ID, firmware version]
aDataTypes = [ljm.constants.UINT32, ljm.constants.FLOAT32,
              ljm.constants.FLOAT32]
results = ljm.eReadAddresses(handle, numFrames, aAddresses, aDataTypes)

print("\neReadAddresses results: ")
for i in range(numFrames):
    print("    Address - %i, data type - %i, value : %f" % \
        (aAddresses[i], aDataTypes[i], results[i]))

# Close handle
ljm.close(handle)
Ejemplo n.º 7
0
            LJ_dict['info_1'][4], LJ_dict['info_1'][5]))
     f.write(
         "# Raw data recorded on %i, with Device type: %i, Connection type: %i, Serial number: %i, IP address: %s, Port: %i, Max bytes per MB: %i\n"
         % (ts[0], LJ_dict['info_2'][0], LJ_dict['info_2'][1],
            LJ_dict['info_2'][2], ljm.numberToIP(LJ_dict['info_2'][3]),
            LJ_dict['info_2'][4], LJ_dict['info_2'][5]))
     f.write("%s" % tstr)
     for strname in sensor['ident']:
         f.write(";%s" % strname)
     f.close()
 # Write to the datafile
 if os.path.exists(filename):
     for name in sensor['names']:
         if name in thermocouple.names():
             results[name] = ljm.eReadAddresses(LJ_dict['handle_1'],
                                                sensor['num%s' % name],
                                                aAddresses[name],
                                                aDataTypes[name])
         if name in frg.names() or name in level.names():
             results[name] = ljm.eReadAddresses(LJ_dict['handle_2'],
                                                sensor['num%s' % name],
                                                aAddresses[name],
                                                aDataTypes[name])
     f = open(filename, 'a+')
     f.write("\n%0.1f" % ts[1])
     colSpace = 1
     for name in sensor['names']:
         for j in range(sensor['num%s' % name]):
             f.write(";%0.5f" % results[name][j])
             colSpace += 1
     f.close()
     rowSpace += 1
Ejemplo n.º 8
0
    def __init__(self, parent=None):
        QtGui.QWidget.__init__(self, parent)
        self.logData = False
        self.ventValveAddress = 2016  #CIO0
        self.mainValveAddress = 2017  #CIO1
        self.flowMeterAddress = 6  # AIN3
        self.tankPressureAddress = 2  # AIN1
        self.outletPressureAddress = 0  # AIN0
        self.clock40MHz = 61520
        self.clock20Hz = 61522
        self.actuatorsAddresses = [
            self.ventValveAddress, self.mainValveAddress
        ]
        self.actuatorsDataTypes = [ljm.constants.UINT16, ljm.constants.UINT16]
        self.sensorsAddresses = [
            self.clock40MHz, self.tankPressureAddress,
            self.outletPressureAddress, self.flowMeterAddress
        ]
        self.sensorDataTypes = [
            ljm.constants.UINT32, ljm.constants.FLOAT32, ljm.constants.FLOAT32,
            ljm.constants.FLOAT32
        ]
        self.sensorMScaling = np.array([1, 125, 75, 0.937191256342697])
        self.sensorBScaling = np.array([0, -62.5, -37.5, -1.02160240296171])
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.openValveIcon = QtGui.QIcon("open.png")
        self.closedValveIcon = QtGui.QIcon("closed.png")
        self.ui.logButton.setIcon(self.closedValveIcon)
        self.ui.eStopButton.clicked.connect(self.eStop)
        self.ui.logButton.clicked.connect(self.log)
        self.dataLog = np.empty([0, 4])
        self.tankPressure = 0
        self.outletPressure = 0
        self.flowRate = 0
        self.dataLogPacketSize = 1000
        self.actuatorsUpdateIntervalMs = 600
        self.lcdUpdateIntervalMs = 700
        self.dataLogIntervalMs = 1
        self.fig, self.fig_axes = plt.subplots(ncols=1, nrows=3)
        self.tankPressureRingBuffer = np.zeros(200)
        self.outletPressureRingBuffer = np.zeros(200)
        self.flowRateRingBuffer = np.zeros(200)
        self.addmpl(self.fig)
        self.csvFile = None
        self.csvFileName = ""
        # self.ui.chartLayout.addWidget(self.toolbar)
        self.handle = ljm.openS(
            "T4", "ANY", "ANY")  # T4 device, Any connection, Any identifier

        info = ljm.getHandleInfo(self.handle)
        print(
            "Opened a LabJack with Device type: %i, Connection type: %i,\n"
            "Serial number: %i, IP address: %s, Port: %i,\nMax bytes per MB: %i"
            % (info[0], info[1], info[2], ljm.numberToIP(
                info[3]), info[4], info[5]))

        ret = ljm.eReadAddresses(self.handle, len(self.actuatorsAddresses),
                                 self.actuatorsAddresses,
                                 self.actuatorsDataTypes)
        self.ventValveState = bool(ret[0])
        self.mainValveState = bool(ret[1])