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