input_line = 0 def read_callback(*msg): if msg[1] is True and msg[0] == input_line: # if signal is high and address is 0 defective = random.randint(0,4) if defective == 0: print "Part defective" mws.triggerInput(1,3.0)# args: address , time to raise level - default 0.5 else: print "Part OK" mws.triggerInput(0,3.0)# args: address , time to raise level - default 0.5 mws = ModbusWrapperServer(port) mws.startServer() # handler to exit on ctrl+c def signal_handler(signal, frame): print('You pressed Ctrl+C!') mws.stopServer() sys.exit(0) signal.signal(signal.SIGINT, signal_handler) print('Press Ctrl+C') mws.stateChangeListener(input_line) # listens to line 0 of baxter mws.state_changed.connect(read_callback) # links a callback signal.pause()