import serial                               # pip3 install pyserial
import keyboard                             # pip3 install keyboarde
"""
    Pairs of COM:
    COM6 (SDR Console) <=> COM8 (Monitor)
    COM11 (Monitor)    <=> COM10 (HRD)
"""
portSDR ='COM8'                                # COM-Port (in Linux eg. /dev/tty0)
portHRD = 'COM11'
baud = 57000                                # BAUD-Rate
lineSDR=""
serSDR = serial.Serial(portSDR, baud, timeout=0)  # open port
serHRD = serial.Serial(portHRD, baud, timeout=0)  # open port
print ("press 'e' to exit the scanning of ports",portHRD,portSDR,"with",baud,"BAUD")
while not keyboard.is_pressed('e'):
    
    # move input HRD to SDR
    lineHRD=serHRD.read(size=64).decode("utf-8")
    if lineHRD != "": 
        serSDR.write(lineHRD.encode())
        lineHRD=""
    
    # collect bytes to line from SDR
    s = serSDR.read().decode("utf-8")
    if len(s)==0: 
        continue
    
    if s ==';':                         # read the port
        if lineSDR[0:2]=='FA' and len(lineHRD)>3:
            rx_freq=(float(lineHRD[3:])+8589934592.0)/1000.
            print(rx_freq)
            serHRD.write(("FA"+str(rx_freq)+";").encode())
        else:
            serHRD.write((lineSDR+";").encode())
            print(lineSDR)
        lineSDR=""
    else:
        lineSDR+=s
serHRD.close()
serSDR.close()