# Imports import serial, time, glib, os from pyudev import Context, Monitor from pyudev.glib import MonitorObserver # Variables dialect = 115200 timeout = 5 # Functions def send_bit(bit): # Send bit to ardunio arduino = serial.Serial('/dev/ttyACM0', dialect) time.sleep(2) arduino.write(bit) def mount(dev_id): os.system("bash mount.sh -d %s" % dev_id) return True def unmount(dev_id): os.system("bash unmount.sh -d %s" % dev_id) return True # Userinput do = raw_input("Do you want to:\n\n(1) Power up the device\n(2) Power down the device\n\n>>> ") if do == '1': send_bit('1') action = 'starting' elif do == '2': send_bit('0') action = 'stopping' print "\nCommand sent" print "Waiting for response" time.sleep(timeout) def device_event(observer, device): if device.action == 'add' and action == 'starting': print "Device started successfully." print "Mounting device..." mount(device.get('DEVNAME')) exit() if device.action == 'remove' and action == 'stopping': unmount(device.get('DEVNAME')) print "Device shut down successfully." exit() context = Context() monitor = Monitor.from_netlink(context) monitor.filter_by(subsystem='usb') observer = MonitorObserver(monitor) observer.connect('device-event', device_event) monitor.start() glib.MainLoop().run()