import serial import time class SerialMPCduino(object): __volume = None __progress = None __title = None __artist = None __album = None __playing = None __repeat = None __shuffle = None __random = None __single = None __consume = None def __init__(self, tty, baud): self.tty = tty self.baud = baud self.serial = serial.Serial(tty, baud) def setup(self): print("Setup") print(self.serial) print("------") def check_serial(self): while not self.serial.inWaiting(): pass if ( self.serial.inWaiting() > 0 ): #if incoming bytes are waiting to be read from the serial input buffer #read the bytes and convert from binary array to ASCII string = self.serial.readline().decode('ascii') print(string) return string def write_serial(self, string): print("S"+string) wait_time = 0.3 + 10 * len(string) / float(self.baud) self.serial.write("S"+string+"\n") time.sleep(wait_time) string = self.serial.readline().decode('ascii') time.sleep(0.2) print(string) print("Ready") def read_serial(self, string): self.serial.write("E"+string+"\n") return self.serial.readline() def Checker(self, varfrom, varto, string): if varfrom == varto: return 0 self.write_serial(string) return 1 # Percentages @property def progress(self): return self.read_serial("p") @progress.setter def progress(self, new): if self.Checker(self.__progress, new, "p"+str(new)): print("Progress: {}".format(new)) self.__progress = new @property def volume(self): return self.read_serial("V") @volume.setter def volume(self, new): if self.Checker(self.__volume, new, "V"+str(new)): print("Volume: {}".format(new)) self.__volume = new # Strings @property def title(self): return self.write_serial("T") @title.setter def title(self, new): if self.Checker(self.__title, new, "T"+str(new)): print("Title: {}".format(new)) self.__title = new @property def artist(self): return self.write_serial("A") @artist.setter def artist(self, new): if self.Checker(self.__artist, new, "A"+str(new)): print("Artist: {}".format(new)) self.__artist = new @property def album(self): return self.write_serial("a") @album.setter def album(self, new): if self.Checker(self.__album, new, "a"+str(new)): print("Album: {}".format(new)) self.__album = new # Booleans @property def repeat(self): return self.write_serial("r") @repeat.setter def repeat(self, new): if self.Checker(self.__repeat, new, "r"+str(new)): print("Repeat: {}".format(new)) self.__repeat = new @property def shuffle(self): return self.write_serial("z") @shuffle.setter def shuffle(self, new): if self.Checker(self.__shuffle, new, "z"+str(new)): print("Shuffle: {}".format(new)) self.__shuffle = new @property def single(self): return self.read_serial("s") @single.setter def single(self, single): if self.Checker(self.__single, new, "s"+str(new)): print("Single: {}".format(new)) self.__single = new @property def random(self): return self.read_serial("x") @random.setter def random(self, new): if self.Checker(self.__random, new, "x"+str(new)): print("Random: {}".format(new)) self.__random = new @property def consume(self): return self.read_serial("x") @consume.setter def consume(self, new): if self.Checker(self.__consume, new, "c"+str(new)): print("Consume: {}".format(new)) self.__consume = new @property def update(self): return self.read_serial("u") @update.setter def update(self, new): if self.Checker(self.__update, new, "u"+str(new)): print("Update: {}".format(new)) self.__update = new @property def playing(self): return self.read_serial("P") @playing.setter def playing(self, new): if self.Checker(self.__playing, new, "P"+str(new)): print("Playing: {}".format(new)) self.__playing = new