1-Haciendo incapie en lo mencionado por eternal idol, no te servira de nada lo del timer para agilizarlo como tu quieres.
2- lo de borrar pantalla e ir imprimiendo el resultado también es un gran problema deberias quitar eso.
3- si realmente es imprescindible mirar los resultados mi recomendación es que lo hagas al final de todo y que mientras solo mandes las variables a una pila que tu mismo implementes, y al final imprimir todo en un bucle, pero despues del bucle que llama al PIC.
4- Para agilizar el trabajo en la pila desde luego ya debes tener previamente reservado el espacio que utilizaras previendo el máximo que pueda llegar a tener o algo muy parecido a eso.
5- Declarar las variables por fuera del loop, con eso solo se declaran una vez y se reducira el numero de veces que intercambiaras areas de memoria reservando y liberando.
6- Interrelacionado con lo anterior, no usuaria la función
int ResultadoPIC() y haria la implementación directamente en el código para evitar los excesivos cambios de contexto que pueden llegar a ser desgastantes debido a que los llamados se hacen X veces desde el loop.
<!--xc1--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>
XCODE </td></tr><tr><td id='XCODE'><!--exc1-->
int lectura =
0;
BYTE receive_buf[
2];
DWORD RecvLength =
2;
do{
ReceivePacket(receive_buf, &RecvLength);
lectura=receive_buf[
0]+receive_buf[
1]*
256;
//Lo de la pila seria asi y reemplazaria la linea anterior y la que hacia el printf. //Push(receive_buf[0]+receive_buf[1]*256;);}
while( !_kbhit() ); <!--xc2--></td></tr></table><div class='postcolor'><!--exc2-->
7-Finalmente, dependiendo de como devuelva los datos ReceivePacket, puede que llegues a necesitar usar un ZeroMemory aunque no creo.
xx- para que haces esto?
receive_buf[1]*256
estas seguro que eso es lo que quieres?