Si comprendo lo que quieres decir, el problema es que tu procedimiento es manual. Yo necesito enviar los n bytes inmediatamente. Es decir que una vez que el primer byte ha salido del puerto serial, el segundo byte es emitido, y así sucesivamente. Esto con la transmisión.
¿Y la recepción?
En la transmision lo vas a lograr en una PC, la velocidad que tenes en el procesador y mas cuando seguro tenes bits de paridad dentro de los registro de estado va a ser mucho mayor que la de la transmision serial. Incluso si tenes que hacer XOR y desplazamientos va a ser mucho mas rapido.
No es de interés como se comporta el 'otro hardware',
Por supuesto que es de interes ( me referi a hardware como todo el conjunto del otro lado, tal ves fue un error mio ). No hay comunicacion sin transmision Y recepcion. Por eso decia que con un PIC todo genial por que vos sos el encargado de manejar que ocurre con ese 9no bit. En una PC lo va a controlar el OS. Y ahi es donde encontre esto en el foro de Microsoft a uno que hizo una pregunta parecida a la tuya ( queriendo usar el 9no bit para indicar dato/comando):
Unfortunately, Microsoft is so "clever" as to take 11 bit from the UART, use the 3 status bits - parity, framing error and break - to fire events and then throws these 3 bits away before the result is stored in a 16-bit stream, which could easily have contained all 11 bits. The result is that the vital synchronization between status bits and data is lost and cannot be regained. This makes it impossible to use 9th bit communication as you do and to separate telegrams by means of Break as it is done in for example DMX512, LIN and Max-i. I have discussed this several times with Microsoft over several years, but they don't care about the serial port and have no intention to do anything about it.
Ademas es muy importante lo que vas a tener del lado de la recepcion, no podes pensar que es lo mismo un PIC16, un PIC32, un Intel i5, En el que la sobrecarga de informacion pueda afectar o no.
Si es una PC el destinatario ¿por que no enviar bytes de mas? como para indicar el inicio de trama, por que no usar las señales de control de flujo asi saber cuando es que comienza realmente la trama?, ahora un microcontrolador tener que lidiar con mas datos/entradas es distinto, en la PC no tendrias ningun problema.
Pero si queres hacerlo de esa forma, con el 9no bit vas a tener hacerlo de forma "manual" como vos decis.
La otra forma es usar 8 bits + 1 paridad, en el cual la paridad impar indica inicio de trama y paridad par todos los demas datos. Y esto implicaria mucho menos sobrecarga sobre tu transmisor.
Y tu problema pasaria a ser:
- Es posible cambiar la paridad on-the-fly? O debo cerrar y abrir el puerto?
- En un microcontrolador como receptor implicaria calcular la paridad de todos los datos recibidos.