Ejemplo n.º 1
0
def main():
    snd1 = SoundSensor()
    snd2 = SoundSensor()
    temp = VoltageRatioInput()
    hum = VoltageRatioInput()
    light = VoltageInput()

    openChannels(snd1, snd2, temp, hum, light)

    for i in range(10):
        print(getJSONSensorValues(snd1, snd2, temp, hum, light))
        print('')
        time.sleep(1)

    snd1.close()
    snd2.close()
    temp.close()
    hum.close()
    light.close()
Ejemplo n.º 2
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()
Ejemplo n.º 3
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
Ejemplo n.º 4
0
    
    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



try:
    ch1.close()
    
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("Closed VoltageInput device")
exit(0)



Ejemplo n.º 5
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)
Ejemplo n.º 6
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()
Ejemplo n.º 7
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