encode('utf-16')
записывает шестнадцатеричное значение в последовательный порт, но отправляет только 5 битов на последовательный порт.
port = 'COM4'
baud = 9600
ser = serial.Serial(port, baud, timeout=1)
ser.reset_input_buffer()
ser.isOpen()
command = '4c 31 32 33'
ser.write(bytearray(str(command), 'utf-16'))
ser.close()
-----------------------------------------
a = ser.readline().decode('utf-16')
s = ''.join([chr(int(x, 16)) for x in a.split()])
Выход: L
Ожидаемый результат: L123