Hola Norte, es correcto lo que decis, del lado PC y haciendolo en el entorno que mas te guste tenes la posibilidad de seleccionar el protocolo que quieras de estos:
- Sin protocolo, a veces llamado NULL modem
- Protocolo por soft o XON-XOFF
- Protocolo por hard usando RTS/CTS
- Protocolo por hard usando DTR/DSR
El protocolo por soft no utliliza ninguna linea de mas, solmante TX/RX/SG y el envio de información es detenido/liberado por estos dos caracters ( XON y XOFF ) desde el punto de vista de hard es el mas facil, solo que tenes tener cuidado que esos mismos caracteres no sean parte de tus datos.
Los protocolos DTR/DSR y RTS/CTS se establecen por este doble par de lineas, un par es entrada ( CTS/DSR ) y el otro salida ( DTR/RTS ) y del lado PC funcionan asi:[Explico para DTR/DSR, lo mismo se aplica para el otro]
Una vez que el puerto esta seteado la PC coloca la linea DTR en nivel activo ( nivel 0 ), desde el lado del micro vos lees esto y determinas que el PC esta listo para recibir datos, si la linea DTR pasa a inactivo ( nivel 1 ) consideras que la PC no puede recibir mas datos. De tu lado es exactamente los mismo pero intercambiando las lineas. Como en la PC tenes siempre muchisimos mas recursos que en un micro conviene setear los buffers lo mas grande posible de esta manera garantizas que la aplicación PC nunca coloque la linea DTR en inactiva.
De lado del micro no solo basta con leer/escribir por INTs, para una buena perfomance es necesario trabajar con colas circulares tambien llamados ring buffers ( detalles de implementacion hay cientos en la WEB ) la idea es asi, vos tenes un buffer en el micro de un determinado tamaño, cuando se produce la interrupcion de RX, colocas el dato recibido en ese buffer y actualizas indices, si el verificas que ese buffer esta digamos a un 80% de su tamaño final entoces bajas la linea DTR del micro, de esta manera le avisas a la PC que no envie mas datos. Ahora desde tu aplicación en algun momento lees estos datos del buffer, ahi se libera el buffer de recepcion, digamos que cuando el buffer ahora llege a un 30% de su valor volves a activar la linea DTR.
Las ventajas de este metodo es que por mas que la PC sea varias ordenes de magnitud mas rapido que el micro las cosas estan sincronizadas, la desventaja es que consumis mas RAM ( la de los buffers )
Espero haber sido claro. Saludos !