def loggingUIMain(argv, stdout, env): global master #check arguments for a help flag optlist, args = getopt.getopt(argv[1:], "h?", ["help"]) if filter(lambda x: x in ["-h", "-?", "--help"], optlist): usage(stdout, argv[0]) return # HACK to get things running serverUri = 'http://localhost:%s/' % rospy.DEFAULT_TEST_PORT print "TEST MODE: Providing ROS parameters manually" print "NOTE: assuming server at %s" % serverUri os.environ[rospy.ROS_PORT] = str(0) #any os.environ[rospy.ROS_MASTER_URI] = serverUri os.environ[rospy.ROS_NODE] = NAME rospy.start() #blocks until connected to master master = rospy.getMaster() print "ready to run" root = Tkinter.Tk() #Tkinter.Button(root,text="Load Graph").pack() #root.update() f = InitialPrompt(root) # root.wait_window(f.top) # print "got my initial prompt" #d = RecordManagement(root) # print "record management has returned" # root.wait_window(d.top) # Tkinter.Button(root, text="test").pack() # root.update() root.mainloop()
def viewGraphMain(argv, stdout, env): # default arguments server = "http://localhost" server_port = rospy.DEFAULT_TEST_PORT #check arguments for a help flag optlist, args = getopt.getopt(argv[1:], "h?p:s:", ["help", "port=", "server=", "test"]) for o, a in optlist: if o in ("-h", "-?", "--help"): usage(stdout, argv[0]) return elif o in ("--test"): server_port = rospy.DEFAULT_TEST_PORT elif o in ("-p", "--port"): server_port = a elif o in ("-s", "--server"): server = a serverUri = '%s:%s/' % (server, server_port) print "Looking for server at %s" % serverUri os.environ[rospy.ROS_MASTER_URI] = serverUri os.environ[rospy.ROS_NODE] = "viewGraph" os.environ[rospy.ROS_PORT] = str(0) # any master = rospy.getMaster() rospy.ready() while 1: status_code, statusMessage, [nodes, flows] = master.getGraph() # print 'nodes' + str(nodes) # print 'flows ' + str(flows) print '--------------------------------------------' print 'This is the graph:' print 'refreshing every 10 seconds' print '--------------------------------------------' for anode in nodes: status_code, statusMessage, [machine, address, port] = master.getNodeAddress(anode) print 'NODE: ' + str(anode) + ' on ' + str(machine) + ' at ' + str( address) + ' on port: ' + str(port) for aflow in flows: aflow_split = str(aflow[1]).split(':') destination = aflow_split[0] aflow_split_source = str(aflow[0]).split(':') source = aflow_split_source[0] if destination == anode: print '\tINFLOW: ' + str(aflow_split[1]) + ' from: ' + str( aflow[0]) if source == anode: print '\tOUTFLOW: ' + str( aflow_split_source[1]) + ' to: ' + str(aflow[1]) print '--------------------------------------------' time.sleep(10.0)
def viewGraphMain(argv, stdout, env): # default arguments server = "http://localhost" server_port = rospy.DEFAULT_TEST_PORT #check arguments for a help flag optlist, args = getopt.getopt(argv[1:], "h?p:s:", ["help","port=","server=","test"]) for o, a in optlist: if o in ("-h","-?","--help"): usage(stdout, argv[0]) return elif o in ("--test"): server_port = rospy.DEFAULT_TEST_PORT elif o in ("-p", "--port"): server_port = a elif o in ("-s", "--server"): server = a serverUri = '%s:%s/'%(server,server_port) print "Looking for server at %s"%serverUri os.environ[rospy.ROS_MASTER_URI] = serverUri os.environ[rospy.ROS_NODE] = "viewGraph" os.environ[rospy.ROS_PORT] = str(0) # any master = rospy.getMaster() rospy.ready() while 1: status_code, statusMessage, [nodes,flows] = master.getGraph() # print 'nodes' + str(nodes) # print 'flows ' + str(flows) print '--------------------------------------------' print 'This is the graph:' print 'refreshing every 10 seconds' print '--------------------------------------------' for anode in nodes: status_code, statusMessage, [machine, address, port] = master.getNodeAddress(anode) print 'NODE: ' + str(anode) + ' on ' + str(machine) + ' at ' + str(address) + ' on port: ' + str(port) for aflow in flows: aflow_split= str(aflow[1]).split(':') destination = aflow_split[0] aflow_split_source = str(aflow[0]).split(':') source = aflow_split_source[0] if destination == anode: print '\tINFLOW: ' + str(aflow_split[1]) + ' from: ' + str(aflow[0]) if source == anode: print '\tOUTFLOW: ' + str(aflow_split_source[1]) + ' to: ' + str(aflow[1]) print '--------------------------------------------' time.sleep(10.0)
def viewGraphMain(argv, stdout, env): # default arguments server = "http://localhost" server_port = rospy.DEFAULT_TEST_PORT #check arguments for a help flag optlist, args = getopt.getopt(argv[1:], "h?p:s:", ["help","port=","server=","test"]) for o, a in optlist: if o in ("-h","-?","--help"): usage(stdout, argv[0]) return elif o in ("--test"): server_port = rospy.DEFAULT_TEST_PORT elif o in ("-p", "--port"): server_port = a elif o in ("-s", "--server"): server = a serverUri = '%s:%s/'%(server,server_port) print "Looking for server at %s"%serverUri os.environ[rospy.ROS_MASTER_URI] = serverUri os.environ[rospy.ROS_NODE] = "watchBatteries" os.environ[rospy.ROS_PORT] = str(0) # any master = rospy.getMaster() rospy.ready() while 1: print "-------------------------------------------------------------------" print "Getting IBPS params from Parameter Server" print "-------------------------------------------------------------------" status_code, statusMessage, current = master.getParam('IBPS.current') print "Current (A into Battery)" print current status_code, statusMessage, voltage = master.getParam('IBPS.voltage') print "Voltage (V)" print voltage status_code, statusMessage, time_remaining = master.getParam('IBPS.time_remaining') print "Time Remaining (minutes)" print time_remaining status_code, statusMessage, average_charge = master.getParam('IBPS.average_charge') print "Average Charge (percentage)" print average_charge time.sleep(1.0)
def logging_nodeMain(argv, stdout, env): #check arguments for a help flag optlist, args = getopt.getopt(argv[1:], "h?", ["help"]) if filter(lambda x: x in ["-h", "-?", "--help"], optlist): usage(stdout, argv[0]) return rospy.start() #blocks until connected to master master = rospy.getMaster() #initialize flows in_string_in = common_flows.FlowString(".input") while 1: #TODO: replace with shutdown check #read/publish flows # - read inflow data #print master.getParam('.name') string_inData = in_string_in.receive() print "logging_node recieved: " + string_inData.data
def logging_nodeMain(argv, stdout, env): #check arguments for a help flag optlist, args = getopt.getopt(argv[1:], "h?", ["help"]) if filter(lambda x: x in ["-h","-?","--help"], optlist): usage(stdout, argv[0]) return rospy.start() #blocks until connected to master master = rospy.getMaster(); #initialize flows in_string_in = common_flows.FlowString(".input") while 1: #TODO: replace with shutdown check #read/publish flows # - read inflow data #print master.getParam('.name') string_inData = in_string_in.receive() print "logging_node recieved: " + string_inData.data
def loggingUIMain(argv, stdout, env): global master #check arguments for a help flag optlist, args = getopt.getopt(argv[1:], "h?", ["help"]) if filter(lambda x: x in ["-h","-?","--help"], optlist): usage(stdout, argv[0]) return # HACK to get things running serverUri = 'http://localhost:%s/'%rospy.DEFAULT_TEST_PORT print "TEST MODE: Providing ROS parameters manually" print "NOTE: assuming server at %s"%serverUri os.environ[rospy.ROS_PORT] = str(0) #any os.environ[rospy.ROS_MASTER_URI] = serverUri os.environ[rospy.ROS_NODE] = NAME rospy.start() #blocks until connected to master master = rospy.getMaster() print "ready to run" root = Tkinter.Tk() #Tkinter.Button(root,text="Load Graph").pack() #root.update() f = InitialPrompt(root) # root.wait_window(f.top) # print "got my initial prompt" #d = RecordManagement(root) # print "record management has returned" # root.wait_window(d.top) # Tkinter.Button(root, text="test").pack() # root.update() root.mainloop()
def monitorBatteriesMain(argv, stdout, env): # default arguments server = "http://localhost" server_port = rospy.DEFAULT_TEST_PORT #check arguments for a help flag optlist, args = getopt.getopt(argv[1:], "h?p:s:", ["help","port=","server=","test"]) for o, a in optlist: if o in ("-h","-?","--help"): usage(stdout, argv[0]) return elif o in ("--test"): server_port = rospy.DEFAULT_TEST_PORT elif o in ("-p", "--port"): server_port = a elif o in ("-s", "--server"): server = a serverUri = '%s:%s/'%(server,server_port) print "Looking for server at %s"%serverUri os.environ[rospy.ROS_MASTER_URI] = serverUri os.environ[rospy.ROS_NODE] = NAME os.environ[rospy.ROS_PORT] = str(0) # any master = rospy.getMaster() rospy.ready() setupPorts() #f= open('testfile.txt','r') f0 = open('/dev/ttyUSB0','r') f1 = open('/dev/ttyUSB1','r') f2 = open('/dev/ttyUSB2','r') f3 = open('/dev/ttyUSB3','r') # split on % to string and checksum # check checksum myPow = robotPower() start_time = time.time() last_time = start_time while True: current, blah, blah2 = select.select([f0,f1,f2,f3],[],[],1) for f in current: if f == f0: port = 0; port_string = 'f0' if f == f1: port = 1; port_string = 'f1' if f == f2: port = 2; port_string = 'f2' if f == f3: port = 3; port_string = 'f3' line = f.readline() halves = line.split('%') if len(halves) != 2: # print 'I did not split on \% correctly' continue halves[1]=halves[1].strip() halves[0]=halves[0].lstrip('$') # print line # print halves # print len(halves) # print checksum256(halves[0]) # print hex2dec(halves[1]) # print hex(255) # read first char and switch message = halves[0] # case C controller # split on commas # first element is controller number # for each pair # read index 01-07 # record value if len(message) < 2: print "error message too short: \"%s\" from \"%s\""%(message, line) print "This often indicates a misconfigured serial port check port:" print f continue if message[0] == 'C': controller_number = int(message[1]) #print 'Controller on port %s says:'%(port_string) splitmessage = message.split(',') #print 'batteries present' #print readmask(splitmessage[2]) mask = readmask(splitmessage[2]) for i in range(0,8): myPow.controllers[port].batteries[i].present = mask[i] #print 'batteries charging' #print readmask(splitmessage[4]) mask = readmask(splitmessage[2]) for i in range(0,8): myPow.controllers[port].batteries[i].charging = mask[i] #print 'batteries supplying power to system' #print readmask(splitmessage[6]) mask = readmask(splitmessage[6]) for i in range(0,8): myPow.controllers[port].batteries[i].supplying_power = mask[i] #print 'batteries which have charge power present' #print readmask(splitmessage[10]) mask = readmask(splitmessage[10]) for i in range(0,8): myPow.controllers[port].batteries[i].w_charge_power = mask[i] #print 'batteries with "Power no good"' #print readmask(splitmessage[12]) mask = readmask(splitmessage[12]) for i in range(0,8): myPow.controllers[port].batteries[i].power_no_good = mask[i] #print 'batteries charge inhibited' #print readmask(splitmessage[14]) mask = readmask(splitmessage[14]) for i in range(0,8): myPow.controllers[port].batteries[i].charge_inhibited = mask[i] else: pass if message[0] == 'B': controller_number = int(message[1]) battery_number = int(message[2]) #print 'Battery %d on Controller %d'%(battery_number, controller_number) splitmessage = message.split(',') for i in range(0,(len(splitmessage)-1)/2): key = splitmessage[i*2+1] value = splitmessage[i*2+2] # print 'key %s , value %s'%(splitmessage[i*2+1],splitmessage[i*2+2]) # print 'key %s , value dec %s'%(splitmessage[i*2+1],hex2dec(splitmessage[i*2+2])) if key == '09': #print 'voltage is %f'%(float(hex2dec(value))/1000.0) myPow.controllers[port].batteries[battery_number].voltage = float(hex2dec(value))/1000.0 if key == '0A': intval = float(hex2dec(value)) if intval < 32767: val = intval else: val = (intval - 65636.0) #print 'current is %f'%(val/1000.0) myPow.controllers[port].batteries[battery_number].current = val/1000.0 # case B battery # split on commas # first number is battery number # foreach pair # lookup index # record value cast properly so pages 13 to 35 #case S system data if message[0] == 'S': splitmessage = message.split(',') #print 'System Message' for i in range(0,(len(splitmessage)-1)/2): key = splitmessage[i*2+1] value = splitmessage[i*2+2] # print 'key %s , value %s'%(key,value) # print 'key %s , value dec %s'%(key,hex2dec(value)) if key == '01': #print 'time until exhaustion = %s minutes'%hex2dec(value) myPow.controllers[port].time_remaining = int(hex2dec(value)) if key == '02': #reserved pass if key == '03': #print 'text message to the system %s'%value myPow.controllers[port].new_system_message(value) if key == '04': #print 'average charge percent %d'% hex2dec(value) myPow.controllers[port].average_charge = int(hex2dec(value)) #print time.time() increment = 1.0 if time.time() - last_time > increment: last_time = last_time + increment print "displaying to screen" myPow.print_remaining() print "updating param server" myPow.updateParamServer(master)
def renderGraphMain(argv, stdout, env): # default arguments server = "http://localhost" server_port = rospy.DEFAULT_TEST_PORT #check arguments for a help flag optlist, args = getopt.getopt(argv[1:], "h?p:s:", ["help", "port=", "server=", "test"]) for o, a in optlist: if o in ("-h", "-?", "--help"): usage(stdout, argv[0]) return elif o in ("--test"): server_port = rospy.DEFAULT_TEST_PORT elif o in ("-p", "--port"): server_port = a elif o in ("-s", "--server"): server = a serverUri = '%s:%s/' % (server, server_port) print "Looking for server at %s" % serverUri os.environ[rospy.ROS_MASTER_URI] = serverUri os.environ[rospy.ROS_NODE] = NAME os.environ[rospy.ROS_PORT] = str(0) # any master = rospy.getMaster() out_FlowImageString = OutflowpyImageString(".imageOut") require( master.addMachine('default', rospy.getRosRoot(), 'localhost', 22, '', '')) require( master.addNode('', 'imageViewer', 'pyImageViewer', 'imageViewer', 'default', 0)) rospy.ready() require( master.connectFlow(out_FlowImageString.locator, "imageViewer:imageIn", 1)) while not rospy.isShutdown(): status_code, statusMessage, [nodes, flows] = master.getGraph() # print 'nodes' + str(nodes) # print 'flows ' + str(flows) print '--------------------------------------------' print 'This is the graph:' print 'refreshing every ' + str(sleep_time) + ' seconds' print '--------------------------------------------' for anode in nodes: status_code, statusMessage, [machine, address, port] = master.getNodeAddress(anode) print 'NODE: ' + str(anode) + ' on ' + str(machine) + ' at ' + str( address) + ' on port: ' + str(port) for aflow in flows: aflow_split = str(aflow[1]).split('.') destination = aflow_split[0] aflow_split_source = str(aflow[0]).split('.') source = aflow_split_source[0] if destination == anode: print '\tINFLOW: ' + str(aflow_split[1]) + ' from: ' + str( aflow[0]) if source == anode: print '\tOUTFLOW: ' + str( aflow_split_source[1]) + ' to: ' + str(aflow[1]) output_file = 'ROSGraph.jpeg' pid = os.fork( ) # This is a hack to get around an underlying memory leak in # the agraph library. if pid == 0: #print "starting yapgvb process" try: print '--------------------------------------------' ygraph = yapgvb.Digraph('ROSGraph') gnodes = {} for anode in nodes: gnodes[anode] = ygraph.add_node(label=anode) #print "added allnodes" #print flows for aflow in flows: aflow_split = str(aflow[1]).split(':') destination = aflow_split[0] aflow_split_source = str(aflow[0]).split(':') source = aflow_split_source[0] gnodes[source] >> gnodes[destination] #print "done setting up graph for rendering" ygraph.layout(yapgvb.engines.dot) ygraph.render(output_file) finally: mpid = os.getpid() os.kill(mpid, 9) else: os.wait() # Wrap up the image and send it out over a flow imToSend = Image.open(output_file) future_packet = pyImageString() future_packet.imageString = imToSend.tostring() future_packet.imageFormat = "RGB" future_packet.width, future_packet.height = imToSend.size out_FlowImageString.publish(future_packet) # don't loop too fast time.sleep(sleep_time)
def renderGraphMain(argv, stdout, env): # default arguments server = "http://localhost" server_port = rospy.DEFAULT_TEST_PORT #check arguments for a help flag optlist, args = getopt.getopt(argv[1:], "h?p:s:", ["help","port=","server=","test"]) for o, a in optlist: if o in ("-h","-?","--help"): usage(stdout, argv[0]) return elif o in ("--test"): server_port = rospy.DEFAULT_TEST_PORT elif o in ("-p", "--port"): server_port = a elif o in ("-s", "--server"): server = a serverUri = '%s:%s/'%(server,server_port) print "Looking for server at %s"%serverUri os.environ[rospy.ROS_MASTER_URI] = serverUri os.environ[rospy.ROS_NODE] = NAME os.environ[rospy.ROS_PORT] = str(0) # any master = rospy.getMaster() out_FlowImageString = OutflowpyImageString(".imageOut") require(master.addMachine('default', rospy.getRosRoot(), 'localhost', 22, '', '')) require(master.addNode('','imageViewer','pyImageViewer','imageViewer','default',0)) rospy.ready() require(master.connectFlow(out_FlowImageString.locator, "imageViewer:imageIn",1)) while not rospy.isShutdown(): status_code, statusMessage, [nodes,flows] = master.getGraph() # print 'nodes' + str(nodes) # print 'flows ' + str(flows) print '--------------------------------------------' print 'This is the graph:' print 'refreshing every '+str(sleep_time)+' seconds' print '--------------------------------------------' for anode in nodes: status_code, statusMessage, [machine, address, port] = master.getNodeAddress(anode) print 'NODE: ' + str(anode) + ' on ' + str(machine) + ' at ' + str(address) + ' on port: ' + str(port) for aflow in flows: aflow_split= str(aflow[1]).split('.') destination = aflow_split[0] aflow_split_source = str(aflow[0]).split('.') source = aflow_split_source[0] if destination == anode: print '\tINFLOW: ' + str(aflow_split[1]) + ' from: ' + str(aflow[0]) if source == anode: print '\tOUTFLOW: ' + str(aflow_split_source[1]) + ' to: ' + str(aflow[1]) output_file = 'ROSGraph.jpeg' pid = os.fork() # This is a hack to get around an underlying memory leak in # the agraph library. if pid == 0: #print "starting yapgvb process" try: print '--------------------------------------------' ygraph = yapgvb.Digraph('ROSGraph'); gnodes = {} for anode in nodes: gnodes[anode] = ygraph.add_node(label = anode) #print "added allnodes" #print flows for aflow in flows: aflow_split= str(aflow[1]).split(':') destination = aflow_split[0] aflow_split_source = str(aflow[0]).split(':') source = aflow_split_source[0] gnodes[source] >> gnodes[destination] #print "done setting up graph for rendering" ygraph.layout(yapgvb.engines.dot) ygraph.render(output_file) finally: mpid = os.getpid() os.kill(mpid,9) else: os.wait() # Wrap up the image and send it out over a flow imToSend = Image.open(output_file) future_packet = pyImageString() future_packet.imageString = imToSend.tostring() future_packet.imageFormat = "RGB" future_packet.width, future_packet.height = imToSend.size out_FlowImageString.publish(future_packet) # don't loop too fast time.sleep(sleep_time)
def monitorBatteriesMain(argv, stdout, env): # default arguments server = "http://localhost" server_port = rospy.DEFAULT_TEST_PORT #check arguments for a help flag optlist, args = getopt.getopt(argv[1:], "h?p:s:", ["help", "port=", "server=", "test"]) for o, a in optlist: if o in ("-h", "-?", "--help"): usage(stdout, argv[0]) return elif o in ("--test"): server_port = rospy.DEFAULT_TEST_PORT elif o in ("-p", "--port"): server_port = a elif o in ("-s", "--server"): server = a serverUri = '%s:%s/' % (server, server_port) print "Looking for server at %s" % serverUri os.environ[rospy.ROS_MASTER_URI] = serverUri os.environ[rospy.ROS_NODE] = NAME os.environ[rospy.ROS_PORT] = str(0) # any master = rospy.getMaster() rospy.ready() setupPorts() #f= open('testfile.txt','r') f0 = open('/dev/ttyUSB0', 'r') f1 = open('/dev/ttyUSB1', 'r') f2 = open('/dev/ttyUSB2', 'r') f3 = open('/dev/ttyUSB3', 'r') # split on % to string and checksum # check checksum myPow = robotPower() start_time = time.time() last_time = start_time while True: current, blah, blah2 = select.select([f0, f1, f2, f3], [], [], 1) for f in current: if f == f0: port = 0 port_string = 'f0' if f == f1: port = 1 port_string = 'f1' if f == f2: port = 2 port_string = 'f2' if f == f3: port = 3 port_string = 'f3' line = f.readline() halves = line.split('%') if len(halves) != 2: # print 'I did not split on \% correctly' continue halves[1] = halves[1].strip() halves[0] = halves[0].lstrip('$') # print line # print halves # print len(halves) # print checksum256(halves[0]) # print hex2dec(halves[1]) # print hex(255) # read first char and switch message = halves[0] # case C controller # split on commas # first element is controller number # for each pair # read index 01-07 # record value if len(message) < 2: print "error message too short: \"%s\" from \"%s\"" % (message, line) print "This often indicates a misconfigured serial port check port:" print f continue if message[0] == 'C': controller_number = int(message[1]) #print 'Controller on port %s says:'%(port_string) splitmessage = message.split(',') #print 'batteries present' #print readmask(splitmessage[2]) mask = readmask(splitmessage[2]) for i in range(0, 8): myPow.controllers[port].batteries[i].present = mask[i] #print 'batteries charging' #print readmask(splitmessage[4]) mask = readmask(splitmessage[2]) for i in range(0, 8): myPow.controllers[port].batteries[i].charging = mask[i] #print 'batteries supplying power to system' #print readmask(splitmessage[6]) mask = readmask(splitmessage[6]) for i in range(0, 8): myPow.controllers[port].batteries[ i].supplying_power = mask[i] #print 'batteries which have charge power present' #print readmask(splitmessage[10]) mask = readmask(splitmessage[10]) for i in range(0, 8): myPow.controllers[port].batteries[i].w_charge_power = mask[ i] #print 'batteries with "Power no good"' #print readmask(splitmessage[12]) mask = readmask(splitmessage[12]) for i in range(0, 8): myPow.controllers[port].batteries[i].power_no_good = mask[ i] #print 'batteries charge inhibited' #print readmask(splitmessage[14]) mask = readmask(splitmessage[14]) for i in range(0, 8): myPow.controllers[port].batteries[ i].charge_inhibited = mask[i] else: pass if message[0] == 'B': controller_number = int(message[1]) battery_number = int(message[2]) #print 'Battery %d on Controller %d'%(battery_number, controller_number) splitmessage = message.split(',') for i in range(0, (len(splitmessage) - 1) / 2): key = splitmessage[i * 2 + 1] value = splitmessage[i * 2 + 2] # print 'key %s , value %s'%(splitmessage[i*2+1],splitmessage[i*2+2]) # print 'key %s , value dec %s'%(splitmessage[i*2+1],hex2dec(splitmessage[i*2+2])) if key == '09': #print 'voltage is %f'%(float(hex2dec(value))/1000.0) myPow.controllers[ port].batteries[battery_number].voltage = float( hex2dec(value)) / 1000.0 if key == '0A': intval = float(hex2dec(value)) if intval < 32767: val = intval else: val = (intval - 65636.0) #print 'current is %f'%(val/1000.0) myPow.controllers[port].batteries[ battery_number].current = val / 1000.0 # case B battery # split on commas # first number is battery number # foreach pair # lookup index # record value cast properly so pages 13 to 35 #case S system data if message[0] == 'S': splitmessage = message.split(',') #print 'System Message' for i in range(0, (len(splitmessage) - 1) / 2): key = splitmessage[i * 2 + 1] value = splitmessage[i * 2 + 2] # print 'key %s , value %s'%(key,value) # print 'key %s , value dec %s'%(key,hex2dec(value)) if key == '01': #print 'time until exhaustion = %s minutes'%hex2dec(value) myPow.controllers[port].time_remaining = int( hex2dec(value)) if key == '02': #reserved pass if key == '03': #print 'text message to the system %s'%value myPow.controllers[port].new_system_message(value) if key == '04': #print 'average charge percent %d'% hex2dec(value) myPow.controllers[port].average_charge = int( hex2dec(value)) #print time.time() increment = 1.0 if time.time() - last_time > increment: last_time = last_time + increment print "displaying to screen" myPow.print_remaining() print "updating param server" myPow.updateParamServer(master)