import sys
import time
import serial     
ser = serial.Serial(
    port='/dev/XPort',
    baudrate = 9600,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=1
)

def getrs232line(a):
    ser.flushInput()
    myrs = ser.readline()
    lx = [x.strip() for x in myrs.split(',')]
    if lx[0] == '':
        myrs = ser.readline()
        lx = [x.strip() for x in myrs.split(',')]      
    while len(lx) != 10:
        myrs = ser.readline()
        lx = [x.strip() for x in myrs.split(',')]
    return lx[a]

def getrs232info():
    ser.flushInput()
    myrs = ser.readline()
    lx = [x.strip() for x in myrs.split(',')]
    if lx[0] == '':
        myrs = ser.readline()
        lx = [x.strip() for x in myrs.split(',')]   
    while len(lx) != 10:
        myrs = ser.readline()
        lx = [x.strip() for x in myrs.split(',')]
    return lx    

#for eacharg in sys.argv:
#    sys.stderr.write(sys.argv[1])
# Gibt Rs232 String aus
if sys.argv[1] == "info":
    print(getrs232info())
#setzt Uhrzeit aus der CControl    
elif sys.argv[1] == "setuhr":
    ser.write(time.strftime("u%H%M"))
#Ausgabe der aktuellen Laufzeit        
elif sys.argv[1] == "time":
    s = getrs232line(9)[:-1]
    print(s)
#Ausgabe der aktiven Kanals oder null    
elif sys.argv[1] == "kanal":
    s = getrs232line(0)
    print(s) 
#Ausgabe Uhrzeit (rudimntaer)    
elif sys.argv[1] == "uhr":
    s = getrs232line(8)
    print(s)
#Ausgabe Drucksensor (funktion?)    
elif sys.argv[1] == "druck":
    s = getrs232line(7)
    print(s) 
#Ausgabe Temperatur am sensor    
elif sys.argv[1] == "temp":
    s = getrs232line(6)
    t = (float(s)-50)/2
    print(t) 
#Ausgabe Motor und Ventile    
elif sys.argv[1] == "motor":
    s = getrs232line(1)
    print(s) 
elif sys.argv[1] == "ventil1":
    s = getrs232line(2)
    print(s)  
elif sys.argv[1] == "ventil2":
    s = getrs232line(3)
    print(s)  
elif sys.argv[1] == "ventil3":
    s = getrs232line(4)
    print(s)  
elif sys.argv[1] == "ventil4":
    s = getrs232line(5)
    print(s)   
#Kanal aus oder an                                   
elif sys.argv[1] == "aus":
    b = getrs232line(0)
    if b != "0":
        ser.write(b)
        print("0")
elif sys.argv[1] == "on1":
    b = getrs232line(0)
    if b != "1":
        ser.write("1")
        print("1")
elif sys.argv[1] == "on2":
    b = getrs232line(0)
    if b != "2":
        ser.write("2")
        print("2")            
elif sys.argv[1] == "on3":
    b = getrs232line(0)
    if b != "3":
        ser.write("3")
        print("3")
elif sys.argv[1] == "on4":
    b = getrs232line(0)
    if b != "4":
        ser.write("4")
        print("4")