Пример #1
0
    def __init__(self):
        self.voltage_publisher = rospy.Publisher(
            'CurrentSensor/battery_voltage_draw', Float64, queue_size=10)
        self._hz = 10
        ch1 = VoltageInput()

        channelInfo = ChannelInfo()
        channelInfo.deviceSerialNumber = 539331
        channelInfo.hubPort = 1
        channelInfo.isHubPortDevice = 0
        channelInfo.channel = 0

        ch1.setDeviceSerialNumber(channelInfo.deviceSerialNumber)
        ch1.setHubPort(channelInfo.hubPort)
        ch1.setIsHubPortDevice(channelInfo.isHubPortDevice)
        ch1.setChannel(channelInfo.channel)

        ch1.setOnAttachHandler(self.onAttachHandler)
        ch1.setOnDetachHandler(self.onDetachHandler)
        ch1.setOnErrorHandler(self.onErrorHandler)
        ch1.setOnVoltageChangeHandler(self.onVoltageChangeHandler)
        ch1.setOnSensorChangeHandler(self.onSensorChangeHandler)

        print("\nOpening and Waiting for Attachment...")

        try:
            ch1.openWaitForAttachment(5000)
        except PhidgetException as e:
            PrintOpenErrorMessage(e, ch1)
            raise EndProgramSignal("Program Terminated: Open Failed")
Пример #2
0
 def __init__(self):
     self.voltage_publisher = rospy.Publisher('CurrentSensor/battery_voltage_draw', Float64, queue_size=10)
 	self._hz = 10
     ch1 = VoltageInput()
        
     channelInfo = ChannelInfo()
     channelInfo.deviceSerialNumber = 539331
     channelInfo.hubPort = 1
     channelInfo.isHubPortDevice = 0
     channelInfo.channel = 0
        
     ch1.setDeviceSerialNumber(channelInfo.deviceSerialNumber)
     ch1.setHubPort(channelInfo.hubPort)
     ch1.setIsHubPortDevice(channelInfo.isHubPortDevice)
     ch1.setChannel(channelInfo.channel)   
         
     ch1.setOnAttachHandler(self.onAttachHandler)
     ch1.setOnDetachHandler(self.onDetachHandler)
     ch1.setOnErrorHandler(self.onErrorHandler)
     ch1.setOnVoltageChangeHandler(self.onVoltageChangeHandler)
     ch1.setOnSensorChangeHandler(self.onSensorChangeHandler)
         
     print("\nOpening and Waiting for Attachment...")
     
     try:
         ch1.openWaitForAttachment(5000)
     except PhidgetException as e:
         PrintOpenErrorMessage(e, ch1)
         raise EndProgramSignal("Program Terminated: Open Failed")
Пример #3
0
class PowerSource():
    def __init__(self, channel):
        self.volts = None
        self.device = VoltageInput()
        self.channel = channel
        this = self

    def start(self):
        """
		* Add event handlers before calling open so that no events are missed.
		"""
        self.device.setOnAttachHandler(onAttachHandler)
        self.device.setOnDetachHandler(onDetachHandler)
        self.device.setOnErrorHandler(onErrorHandler)
        self.device.setOnVoltageChangeHandler(onVoltageChangeHandler)
        self.device.setOnSensorChangeHandler(onSensorChangeHandler)

        try:
            self.device.setDeviceSerialNumber(271638)
            self.device.setChannel(self.channel)
            self.device.openWaitForAttachment(5000)
        except PhidgetException as e:
            print("Program Terminated: Open PowerSource Failed")
            print(e)

    def getVolts(self):
        try:
            self.device.setDeviceSerialNumber(271638)
            self.device.setChannel(self.channel)
            self.device.openWaitForAttachment(5000)
        except PhidgetException as e:
            print("Program Terminated: Open PowerSource Failed")
            print(e)

        time.sleep(2)
        return self.device.getSensorValue()

    def closeDevice(self):
        self.device.close()
Пример #4
0
def main():
        voltageInput0 = VoltageInput()
        voltageInput1 = VoltageInput()
        voltageInput2 = VoltageInput()
        voltageInput3 = VoltageInput()
        voltageInput4 = VoltageInput()
        voltageInput5 = VoltageInput()
        voltageInput6 = VoltageInput()
        voltageInput7 = VoltageInput()

        voltageInput0.setChannel(0)
        voltageInput1.setChannel(1)
        voltageInput2.setChannel(2)
        voltageInput3.setChannel(3)
        voltageInput4.setChannel(4)
        voltageInput5.setChannel(5)
        voltageInput6.setChannel(6)
        voltageInput7.setChannel(7)

        voltageInput0.setOnVoltageChangeHandler(onVoltageChange)
        voltageInput1.setOnVoltageChangeHandler(onVoltageChange)
        voltageInput2.setOnVoltageChangeHandler(onVoltageChange)
Пример #5
0
    def _publish(self):
        """
		* Allocate a new Phidget Channel object
		"""

        try:
            try:
                ch = VoltageInput()
            except PhidgetException as e:
                sys.stderr.write(
                    "Runtime Error -> Creating VoltageInput: \n\t")
                DisplayError(e)
                raise
            except RuntimeError as e:
                sys.stderr.write(
                    "Runtime Error -> Creating VoltageInput: \n\t" + e)
                raise

            def signal_handler(signal, frame):
                print("exiting...")
                raise EndProgramSignal("Program Terminated")

            signal.signal(signal.SIGINT, signal_handler)

            channelInfo = ChannelInfo()
            channelInfo.deviceSerialNumber = 539331
            channelInfo.hubPort = 0
            channelInfo.isHubPortDevice = 1
            channelInfo.channel = 0

            ch.setDeviceSerialNumber(channelInfo.deviceSerialNumber)
            ch.setHubPort(channelInfo.hubPort)
            ch.setIsHubPortDevice(channelInfo.isHubPortDevice)
            ch.setChannel(channelInfo.channel)
            """
			* Add event handlers before calling open so that no events are missed.
			"""
            print(channelInfo.deviceSerialNumber)
            print(channelInfo.hubPort)
            ch.setOnAttachHandler(onAttachHandler)
            ch.setOnDetachHandler(onDetachHandler)
            ch.setOnErrorHandler(onErrorHandler)
            ch.setOnVoltageChangeHandler(onVoltageChangeHandler)
            ch.setOnSensorChangeHandler(onSensorChangeHandler)

            print("\nOpening and Waiting for Attachment...")
            try:
                ch.openWaitForAttachment(5000)
            except PhidgetException as e:
                PrintOpenErrorMessage(e, ch)
                raise EndProgramSign00al("Program Terminated: Open Failed")

            print("running...")
            rate = rospy.Rate(self._hz)
            while True:
                self.current_publisher.publish(str(current[0]))
                if current[0] > 14:
                    playsound('/home/mars/Downloads/torture.wav')
                rate.sleep()

        except PhidgetException as e:
            sys.stderr.write("\nExiting with error(s)...")
            DisplayError(e)
            traceback.print_exc()
            print("Cleaning up...")
            ch.setOnVoltageChangeHandler(None)
            ch.setOnSensorChangeHandler(None)
            ch.close()
            return 1
        except EndProgramSignal as e:
            print(e)
            print("Cleaning up...")
            ch.setOnVoltageChangeHandler(None)
            ch.setOnSensorChangeHandler(None)
            ch.close()
            return 1
        except KeyboardInterrupt:
            ch.setOnVoltageChangeHandler(None)
            ch.setOnSensorChangeHandler(None)
            ch.close()
            return 1
Пример #6
0
    print("Error %i : %s" % (eCode, description))

def VoltageChangeHandler(self, voltage):
    #print("Voltage1: %f" % voltage)
    dist=519/((voltage*50)+(11/4))
    pub.publish(dist)
  

def SensorChangeHandler(self, sensorValue, sensorUnit):
    print("Sensor Value: %f" % sensorValue)

try:
    ch1.setOnAttachHandler(VoltageInputAttached)
    ch1.setOnDetachHandler(VoltageInputDetached)
    ch1.setOnErrorHandler(ErrorEvent)
    ch1.setOnVoltageChangeHandler(VoltageChangeHandler)
    ch1.setOnSensorChangeHandler(SensorChangeHandler)
    
    print("Waiting for the Phidget VoltageInput Object to be attached...")
    ch1.openWaitForAttachment(5000)
    
except PhidgetException as e:
    print("Phidget Exception %i: %s" % (e.code, e.details))
    print("Press Enter to Exit...\n")
    readin = sys.stdin.read(1)
    exit(1)

print("Gathering data for 100 seconds...")

#time.sleep(100)
while True: pass
Пример #7
0
def main():
    global current, voltage, app, serverUpdateThread, hadPhidgetException, sessionFile

    hadPhidgetException = False

    voltage_sensor = None
    current_sensor = None
    serverUpdateThread = StoppableThread()

    sessionNum = 0

    with open("numSessions.txt", "r+") as numSessionsFile:
        sessionNum = int(numSessionsFile.read()) + 1
        print(sessionNum)
        numSessionsFile.seek(0)
        numSessionsFile.write(str(sessionNum))
        numSessionsFile.truncate()
        numSessionsFile.close()

    timestamp = datetime.now()
    sessionFile = open(
        "Sessions/session" + str(sessionNum) + "_" + str(timestamp.month) +
        "-" + str(timestamp.day) + "_" + str(timestamp.hour) + "-" +
        str(timestamp.minute) + "-" + str(timestamp.second) + ".txt", "w+")

    print("Session File created")

    try:
        voltage_sensor = VoltageInput()
        current_sensor = VoltageRatioInput()

        voltage_sensor.setHubPort(0)
        voltage_sensor.setIsHubPortDevice(False)
        voltage_sensor.setOnVoltageChangeHandler(on_new_voltage_reading)

        current_sensor.setHubPort(1)
        current_sensor.setIsHubPortDevice(True)
        current_sensor.setOnVoltageRatioChangeHandler(on_new_current_reading)

        voltage_sensor.openWaitForAttachment(1000)
        current_sensor.openWaitForAttachment(1000)

        serverUpdateThread.start()

        atexit.register(exit_handler)
        app.run(host='0.0.0.0')
        voltage_sensor.close()
        current_sensor.close()

    except PhidgetException as e:
        print(e)
        hadPhidgetException = True
        exit_handler(voltage_sensor, current_sensor)

    except KeyboardInterrupt as key:
        print(key)
        exit_handler(voltage_sensor, current_sensor)

    except IOError as e:
        print(e)
        exit_handler(voltage_sensor, current_sensor)
Пример #8
0
    def __init__(self):
	self.motor_current_publisher = rospy.Publisher('phidgetsensor/motor_current_draw', Float64, queue_size=10)
	self.voltage_publisher = rospy.Publisher('phidgetsensor/battery_voltage' , Float64, queue_size=10)
	self.battery_current_publisher = rospy.Publisher('phidgetsensor/battery_current_draw', Float64, queue_size=10)

	self._hz = 10
	
	#Channel 1 will be the motor_current_draw
	ch1 = CurrentInput()

	channelInfo = ChannelInfo()
	channelInfo.deviceSerialNumber = 539331
	channelInfo.hubPort = 2
	channelInfo.isHubPortDevice = 0
	channelInfo.channel = 0

	ch1.setDeviceSerialNumber(channelInfo.deviceSerialNumber)
        ch1.setHubPort(channelInfo.hubPort)
        ch1.setIsHubPortDevice(channelInfo.isHubPortDevice)
        ch1.setChannel(channelInfo.channel) 

        ch1.setOnAttachHandler(self.onAttachHandler)
        ch1.setOnDetachHandler(self.onDetachHandler)
        ch1.setOnErrorHandler(self.onErrorHandler)
        ch1.setOnCurrentChangeHandler(self.onCurrentChangeHandler_m)
	
	try: 
	    ch1.openWaitForAttachment(5000)
	except PhidgetException as e:
	    PrintOpenErrorMessage(e, ch1)
	    raise EndProgramSignal("Program Terminated: Open ch1 failed")
	#channel 2 will be the battery voltage
	ch2 = VoltageInput()

        channelInfo = ChannelInfo()
        channelInfo.deviceSerialNumber = 539331
        channelInfo.hubPort = 1
        channelInfo.isHubPortDevice = 0
        channelInfo.channel = 0

        ch2.setDeviceSerialNumber(channelInfo.deviceSerialNumber)
        ch2.setHubPort(channelInfo.hubPort)
        ch2.setIsHubPortDevice(channelInfo.isHubPortDevice)
        ch2.setChannel(channelInfo.channel) 

        ch2.setOnAttachHandler(self.onAttachHandler)
        ch2.setOnDetachHandler(self.onDetachHandler)
        ch2.setOnErrorHandler(self.onErrorHandler)
        ch2.setOnVoltageChangeHandler(self.onVoltageChangeHandler)

        try: 
            ch2.openWaitForAttachment(5000)
        except PhidgetException as e:
            PrintOpenErrorMessage(e, ch2)
            raise EndProgramSignal("Program Terminated: Open ch2 failed")

	#channel 3 will be the battery current
	ch3 = CurrentInput()

        channelInfo = ChannelInfo()
        channelInfo.deviceSerialNumber = 539331
        channelInfo.hubPort = 0
        channelInfo.isHubPortDevice = 0
        channelInfo.channel = 0

        ch3.setDeviceSerialNumber(channelInfo.deviceSerialNumber)
        ch3.setHubPort(channelInfo.hubPort)
        ch3.setIsHubPortDevice(channelInfo.isHubPortDevice)
        ch3.setChannel(channelInfo.channel) 

        ch3.setOnAttachHandler(self.onAttachHandler)
        ch3.setOnDetachHandler(self.onDetachHandler)
        ch3.setOnErrorHandler(self.onErrorHandler)
        ch3.setOnCurrentChangeHandler(self.onCurrentChangeHandler_b)
	
        try: 
            ch3.openWaitForAttachment(5000)
        except PhidgetException as e:
            PrintOpenErrorMessage(e, ch3)
            raise EndProgramSignal("Program Terminated: Open ch3 failed")
Пример #9
0
def main():
    try:
        """
        * Allocate a new Phidget Channel object
        """
        try:
            ch = VoltageInput()
        except PhidgetException as e:
            sys.stderr.write("Runtime Error -> Creating VoltageInput: \n\t")
            DisplayError(e)
            raise
        except RuntimeError as e:
            sys.stderr.write("Runtime Error -> Creating VoltageInput: \n\t" + e)
            raise

        """
        * Set matching parameters to specify which channel to open
        """
        
        #You may remove this line and hard-code the addressing parameters to fit your application
        channelInfo = AskForDeviceParameters(ch)
        
        ch.setDeviceSerialNumber(channelInfo.deviceSerialNumber)
        ch.setHubPort(channelInfo.hubPort)
        ch.setIsHubPortDevice(channelInfo.isHubPortDevice)
        ch.setChannel(channelInfo.channel)   
        
        if(channelInfo.netInfo.isRemote):
            ch.setIsRemote(channelInfo.netInfo.isRemote)
            if(channelInfo.netInfo.serverDiscovery):
                try:
                    Net.enableServerDiscovery(PhidgetServerType.PHIDGETSERVER_DEVICEREMOTE)
                except PhidgetException as e:
                    PrintEnableServerDiscoveryErrorMessage(e)
                    raise EndProgramSignal("Program Terminated: EnableServerDiscovery Failed")
            else:
                Net.addServer("Server", channelInfo.netInfo.hostname,
                    channelInfo.netInfo.port, channelInfo.netInfo.password, 0)
        
        """
        * Add event handlers before calling open so that no events are missed.
        """
        print("\n--------------------------------------")
        print("\nSetting OnAttachHandler...")
        ch.setOnAttachHandler(onAttachHandler)
        
        print("Setting OnDetachHandler...")
        ch.setOnDetachHandler(onDetachHandler)
        
        print("Setting OnErrorHandler...")
        ch.setOnErrorHandler(onErrorHandler)
        
        #This call may be harmlessly removed
        PrintEventDescriptions()
        
        print("\nSetting OnVoltageChangeHandler...")
        ch.setOnVoltageChangeHandler(onVoltageChangeHandler)
        
        print("\nSetting OnSensorChangeHandler...")
        ch.setOnSensorChangeHandler(onSensorChangeHandler)
        
        """
        * Open the channel with a timeout
        """
        
        print("\nOpening and Waiting for Attachment...")
        
        try:
            ch.openWaitForAttachment(5000)
        except PhidgetException as e:
            PrintOpenErrorMessage(e, ch)
            raise EndProgramSignal("Program Terminated: Open Failed")
        
        print("Sampling data for 10 seconds...")
        
        print("You can do stuff with your Phidgets here and/or in the event handlers.")
        
        time.sleep(10)
        
        """
        * Perform clean up and exit
        """

        #clear the VoltageChange event handler 
        ch.setOnVoltageChangeHandler(None)  
        #clear the SensorChange event handler
        ch.setOnSensorChangeHandler(None)
        
        print("\nDone Sampling...")

        print("Cleaning up...")
        ch.close()
        print("\nExiting...")
        return 0

    except PhidgetException as e:
        sys.stderr.write("\nExiting with error(s)...")
        DisplayError(e)
        traceback.print_exc()
        print("Cleaning up...")
        ch.setOnVoltageChangeHandler(None)
        ch.setOnSensorChangeHandler(None)
        ch.close()
        return 1
    except EndProgramSignal as e:
        print(e)
        print("Cleaning up...")
        ch.setOnVoltageChangeHandler(None)
        ch.setOnSensorChangeHandler(None)
        ch.close()
        return 1
    finally:
        print("Press ENTER to end program.")
        readin = sys.stdin.readline()
Пример #10
0
	def _publish(self):
		"""
		* Allocate a new Phidget Channel object
		"""

		try:
			try:
				ch = VoltageInput()
			except PhidgetException as e:
				sys.stderr.write("Runtime Error -> Creating VoltageInput: \n\t")
				DisplayError(e)
				raise
			except RuntimeError as e:
				sys.stderr.write("Runtime Error -> Creating VoltageInput: \n\t" + e)
				raise
			
			def signal_handler(signal, frame):
				print("exiting...")
				raise EndProgramSignal("Program Terminated")
			signal.signal(signal.SIGINT, signal_handler)
			
			channelInfo = ChannelInfo()
			channelInfo.deviceSerialNumber = 539331
			channelInfo.hubPort = 0
			channelInfo.isHubPortDevice = 1
			channelInfo.channel = 0
	
			ch.setDeviceSerialNumber(channelInfo.deviceSerialNumber)
			ch.setHubPort(channelInfo.hubPort)
			ch.setIsHubPortDevice(channelInfo.isHubPortDevice)
			ch.setChannel(channelInfo.channel)
				
			"""
			* Add event handlers before calling open so that no events are missed.
			"""	
			print(channelInfo.deviceSerialNumber)
			print(channelInfo.hubPort)
			ch.setOnAttachHandler(onAttachHandler)
			ch.setOnDetachHandler(onDetachHandler)
			ch.setOnErrorHandler(onErrorHandler)
			ch.setOnVoltageChangeHandler(onVoltageChangeHandler)
			ch.setOnSensorChangeHandler(onSensorChangeHandler)
			
			print("\nOpening and Waiting for Attachment...")
			try:
				ch.openWaitForAttachment(5000)
			except PhidgetException as e:
				PrintOpenErrorMessage(e, ch)
				raise EndProgramSign00al("Program Terminated: Open Failed")
			

			print("running...")
			rate = rospy.Rate(self._hz)
			while True:
				self.current_publisher.publish(str(current[0]))
				if current[0] > 14 : playsound('/home/mars/Downloads/torture.wav')
				rate.sleep()

		except PhidgetException as e:
			sys.stderr.write("\nExiting with error(s)...")
			DisplayError(e)
			traceback.print_exc()
			print("Cleaning up...")
			ch.setOnVoltageChangeHandler(None)
			ch.setOnSensorChangeHandler(None)
			ch.close()
			return 1
		except EndProgramSignal as e:
			print(e)
			print("Cleaning up...")
			ch.setOnVoltageChangeHandler(None)
			ch.setOnSensorChangeHandler(None)
			ch.close()
			return 1
		except KeyboardInterrupt:
			ch.setOnVoltageChangeHandler(None)
			ch.setOnSensorChangeHandler(None)
			ch.close()
			return 1
Пример #11
0
    def __init__(self):
        self.motor_current_publisher = rospy.Publisher(
            'phidgetsensor/motor_current_draw', Float64, queue_size=10)
        self.voltage_publisher = rospy.Publisher(
            'phidgetsensor/battery_voltage', Float64, queue_size=10)
        self.battery_current_publisher = rospy.Publisher(
            'phidgetsensor/battery_current_draw', Float64, queue_size=10)

        self._hz = 10

        #Channel 1 will be the motor_current_draw
        ch1 = CurrentInput()

        channelInfo = ChannelInfo()
        channelInfo.deviceSerialNumber = 539331
        channelInfo.hubPort = 2
        channelInfo.isHubPortDevice = 0
        channelInfo.channel = 0

        ch1.setDeviceSerialNumber(channelInfo.deviceSerialNumber)
        ch1.setHubPort(channelInfo.hubPort)
        ch1.setIsHubPortDevice(channelInfo.isHubPortDevice)
        ch1.setChannel(channelInfo.channel)

        ch1.setOnAttachHandler(self.onAttachHandler)
        ch1.setOnDetachHandler(self.onDetachHandler)
        ch1.setOnErrorHandler(self.onErrorHandler)
        ch1.setOnCurrentChangeHandler(self.onCurrentChangeHandler_m)

        try:
            ch1.openWaitForAttachment(5000)
        except PhidgetException as e:
            PrintOpenErrorMessage(e, ch1)
            raise EndProgramSignal("Program Terminated: Open ch1 failed")
        #channel 2 will be the battery voltage
        ch2 = VoltageInput()

        channelInfo = ChannelInfo()
        channelInfo.deviceSerialNumber = 539331
        channelInfo.hubPort = 1
        channelInfo.isHubPortDevice = 0
        channelInfo.channel = 0

        ch2.setDeviceSerialNumber(channelInfo.deviceSerialNumber)
        ch2.setHubPort(channelInfo.hubPort)
        ch2.setIsHubPortDevice(channelInfo.isHubPortDevice)
        ch2.setChannel(channelInfo.channel)

        ch2.setOnAttachHandler(self.onAttachHandler)
        ch2.setOnDetachHandler(self.onDetachHandler)
        ch2.setOnErrorHandler(self.onErrorHandler)
        ch2.setOnVoltageChangeHandler(self.onVoltageChangeHandler)

        try:
            ch2.openWaitForAttachment(5000)
        except PhidgetException as e:
            PrintOpenErrorMessage(e, ch2)
            raise EndProgramSignal("Program Terminated: Open ch2 failed")

        #channel 3 will be the battery current
        ch3 = CurrentInput()

        channelInfo = ChannelInfo()
        channelInfo.deviceSerialNumber = 539331
        channelInfo.hubPort = 0
        channelInfo.isHubPortDevice = 0
        channelInfo.channel = 0

        ch3.setDeviceSerialNumber(channelInfo.deviceSerialNumber)
        ch3.setHubPort(channelInfo.hubPort)
        ch3.setIsHubPortDevice(channelInfo.isHubPortDevice)
        ch3.setChannel(channelInfo.channel)

        ch3.setOnAttachHandler(self.onAttachHandler)
        ch3.setOnDetachHandler(self.onDetachHandler)
        ch3.setOnErrorHandler(self.onErrorHandler)
        ch3.setOnCurrentChangeHandler(self.onCurrentChangeHandler_b)

        try:
            ch3.openWaitForAttachment(5000)
        except PhidgetException as e:
            PrintOpenErrorMessage(e, ch3)
            raise EndProgramSignal("Program Terminated: Open ch3 failed")