174 lines
4.6 KiB
Python
174 lines
4.6 KiB
Python
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
|