Continuación del código:
// Aquí el programa pirncipal.
void main()
{
//@ Mi arduino lo detecta en el puerto 28. Así que abrimos el
// puerto serie.
DWORD dwErr = Serial.begin(28,9600,SERIAL_8N2);
if ( dwErr!=NO_ERROR ) {
printf("No se puede abrir el puerto!");
return ;
}
//@ Otro de mis intentos de reducir errores.
Serial.timeouts();
bool exit=false;
bool automatic=false;
int result;
velocidad = 0;
DWORD timer;
long errorcount=0;
// bucle infinito.
// Si hay una tecla ejecuta la correspondiente acción asociada a ella.
while ( !exit )
{
clrscr();
gotoxy(1,1);
printf("[ESC] Salir [Up] Subir [Dn] Bajar [Rt][Lt] Direccion [Space-Leer] [Enter] Poner\n");
printf("[p] Auto [s] Parar [1..8] Cambiar vias\n");
printf("Velocidad: %d Velocidad deseada: %d\n", velocidad, velocidad_deseada);
printf("Direccion: %d \n", direccion);
printf("Vias: %d\n", vias);
printf("Contador de errores: %d\n", errorcount);
printf("Error: %s\n", errorString[error]);
printf("%s\n", automatic?"SI":"NO");
if ( kbhit() )
{
char ch = getch();
switch ( ch ) {
case 72: if ( velocidad_deseada < 255 ) velocidad_deseada++; break;
case 80: if ( velocidad_deseada > 0 ) velocidad_deseada--; break;
case 75: pondireccion(2); break;
case 77: pondireccion(1); break;
case 32: leerVelocidad(); break;
case 13: ponerVelocidad(velocidad_deseada); break;
case 27: exit=true;
case 83: parar(); break;
case 115: parar(); break;
case 90: leerVias(); break;
case 122: leerVias(); break;
case 49: cambiarVia(1); break;
case 50: cambiarVia(2); break;
case 51: cambiarVia(3); break;
case 52: cambiarVia(4); break;
case 53: cambiarVia(5); break;
case 54: cambiarVia(6); break;
case 55: cambiarVia(7); break;
case 56: cambiarVia(8); break;
case 112: automatic=!automatic; timer=millis(); break;
default: break;
}
if ( error!=0 ) errorcount++;
}
else
{
// Para que no de pantallazos.
delay(100);
}
if ( automatic )
{
// En modo automatico lee la locomotora cada 5s aunque no se haya pulsado
// una tecla.
if ( millis() > timer + 5000 ) {
leerVelocidad();
timer = millis();
}
}
}
//@ Al salir del programa cerramos el puerto de comunicaciones.
Serial.close();
}
También lo añado como attachment para aquel que quiera descargarlo.
main.cpp (6.86 KB)