Muy buenas, te explico, el problema está en que si no recuerdo mal el te20 ahunque este conectado al puerto serie no trabaja con el protocolo RS232, sino que con las señales de comando del puerto serie (DTR, RTS, CTS y TDX) se emula el protocolo ICSP, por lo que la libreria IO.Ports no te servida para este fin.
Por otro lado aunque en este caso no tenga nada que ver ya que por la razon anterior ya no pude funcionar es que estas enviando el archivo .hex a pelo caracter por caracter "ASCII" y el formato de un archivo .hex esta formado por:
:xxxxxx (direccion de memoria de los datos) xxxxxxxxxxxxxxxxxxxxxxxxxx(datos) xx(checksum) (el numero de xx no coincide, lo puse a boleo)
y donde esta el detalle es que cada pareja de xx es un número en exadecimal, por lo tanto si tuvieras FF tu deberias mandar un solo byte (255)o(11111111) o (0xFF) pero del modo en que tu lo estas haciendo en realidad estas mando dos bytes corespondientes a la F, en este caso (70)(1000110)(0x46)
Un saludo