arduino-mpduino/serialmpcduino.py

176 lines
4.7 KiB
Python
Raw Normal View History

2017-02-04 23:35:03 +01:00
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, verbose):
2017-02-04 23:35:03 +01:00
self.tty = tty
self.baud = baud
self.verbose = verbose
2017-02-04 23:35:03 +01:00
self.serial = serial.Serial(tty, baud)
def setup(self):
print("Setup")
print(self.serial)
print("------")
def vprint(self, string):
if self.verbose > 1:
print(string)
2017-02-04 23:35:03 +01:00
def check_serial(self):
2017-02-04 23:35:03 +01:00
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')
return string
def write_serial(self, string):
self.vprint("S"+string)
2017-02-04 23:35:03 +01:00
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)
self.vprint(string)
self.vprint(self.check_serial())
self.vprint("Ready")
2017-02-04 23:35:03 +01:00
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
2017-02-04 23:35:03 +01:00
@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*1)):
2017-02-04 23:35:03 +01:00
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*1)):
2017-02-04 23:35:03 +01:00
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*1)):
2017-02-04 23:35:03 +01:00
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*1)):
2017-02-04 23:35:03 +01:00
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*1)):
2017-02-04 23:35:03 +01:00
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*1)):
# print("Update: {}".format(new))
# self.__update = new
2017-02-04 23:35:03 +01:00
@property
def playing(self):
return self.read_serial("P")
@playing.setter
def playing(self, new):
if self.Checker(self.__playing, new, "P"+str(new*1)):
2017-02-04 23:35:03 +01:00
print("Playing: {}".format(new))
self.__playing = new