import serial
#=======opening ports============#
ser = False
while(not ser):
    ser = input("please enter port number:\t")
    ser=8
    
    try:
        ser = serial.Serial(int(ser)-1)
        
    except:
        ser = False
        print("you entered invalid port number\nplease enter corract port number(usually 8)")
    
print("working on serial port \"" + ser.name + "\"")

#=======preparing data============#
flags=[]
data=[]
with open("data.csv","r") as f:
    flags = f.readline().split(";")
    flags[-1] = flags[-1][0:-1]   #to remove end of line character
    for i in range(1,len(flags)):
        flags[i]="["+flags[i]+"]"

    tmp=f.readline().strip()
    while(tmp):
        data.append(tmp.split(";"))
        data[-1][-1]=data[-1][-1][0:-2]
        tmp=f.readline().strip()

m = open("message.txt","r")
message = m.read()
m.close()

message=message.strip()     #to remove all whitespace before and after content

#=============send data===========#
def postData(num,msg):
    while ser.inWaiting():
        ser.read()
    print("===========")
    ser.write(num.encode())
    ser.write('\r'.encode())
    ser.write(msg.encode())
    ser.write('\r'.encode())
    a=None

    """
    for k in range(3):
        while True:
            if ser.inWaiting():
                a = ser.readline().decode().strip()
                print(a)
                break
    """
    while not ((a == "0") or (a == "1")):
        if ser.inWaiting():
            a = ser.readline().decode().strip()
            print(a)

    if (a == "0"):
        print("Something went wrong with number {0}".format(num))
        #return(True)
        return(False)
    else:
        print("message sent")
    return(False)

#==========function=================
if __name__ == '__main__':
    for i in range(len(data)):
        msg = message
        for j in range(1, len(flags)):
            msg = msg.replace(flags[j],data[i][j],5)
        while postData(data[i][0],msg):
            input("enter")





