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)
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
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
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)
""" 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)
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)
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
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])