1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| void __fastcall TMonThread::Execute()
{
/* Ouvrir le Port USB */
/* ------------------------------------------------------------------ */
while(i != 1)
{
i = OpenPort();
}
/* MAJ des données suivantes */
/* ------------------------------------------------------------------ */
i=0;
flux_control = XON; /* Force le XON au départ */
/* Ouvrir le fichier sélectionné et tester son existance */
/* ------------------------------------------------------------------ */
f = fopen(nom,"rb");
if (f == NULL) /* Si nul retourné faux donc */
ErrorForm->Display(); /* Afficher erreur */
else /* Sinon */
{
Synchronize(AffMessage);
/* Envoie de la commande Start */
/* --------------------------------------------------------------- */
if (enregistrer == 0) /* Si pas enregistrer ds dataflash */
envoyer(start, 4, bytesWritten);
else /* Sinon envoyer com enregistrer */
{
envoyer(record, 1, bytesWritten);
}
/* Envoie du fichier */
/* --------------------------------------------------------------- */
while(1) /* Tant que fichier pas fini */
{
char Buf[800]={0}; /* Initialisation du buffer */
if (flux_control == XON) /* Si transmission permise */
{
bytesRead = fread(Buf,1,14,f);/* Récupère 14 car. */
if ((bytesRead == 0 )|| (Terminated == true)) /* Si plus de car. ds fichier */
{
fclose(f); /* Fermer le fichier ouvert */
break; /* Fin du Thread */
}
else /* Sinon */
{
s = Buf; /* Mettre les valeurs du buf ds s */
bytesWritten = 0; /* Initialisation de BytesWritten */
/* Envoyer les caractères */
/* ------------------------------------------------------ */
envoyer(s, bytesRead, bytesWritten);
s += bytesWritten; /* Incrémenter s du Nbre de car */
bytesRead -= bytesWritten; /* Décrémenter bytes lus */
/* Redonne la main au graphique */
/* ------------------------------------------------------ */
Sleep(10); /* Mettre en veille 10 ms */
}
}
Sleep(50); /* Tempo de 50 ms */
/* Gestion du contrôle du flux */
/* ------------------------------------------------------------ */
car = recevoir(); /* Récupèrer car. reçu */
if (car == 19) /* Si car = XOFF */
{
i=2; /* Pour selectionné le message */
Synchronize(AffMessage); /* Afficher le message */
flux_control = XOFF; /* Signale transmision pas permis */
}
else if (car == 17) /* Si car = XOFF */
{
i = 3; /* Pour selectionné le message */
Synchronize(AffMessage); /* Afficher le message */
flux_control = XON; /* Signale transmision permise */
}
}
//if (bytesRead == 0 )
{
envoyer(fin, 1, 0); /* Envoie car. de fin de fichier */
i=4; /* Pour selectionné le message */
Synchronize(AffMessage); /* Afficher le message */
}
}
ClosePort(); /* Fermer le Port USB */
/* Autoriser l'acces aux boutons suivants */
/*------------------------------------------------------------------- */
EnableWindow(MainForm -> Btn_Commencer -> Handle, TRUE);
EnableWindow(MainForm -> Btn_Enregistrer -> Handle, TRUE);
EnableWindow(MainForm -> Btn_Valider_ -> Handle, TRUE);
EnableWindow(MainForm -> Btn_Ouvrir -> Handle, TRUE);
EnableWindow(MainForm -> Box_Read_Data_flash -> Handle, TRUE);
EnableWindow(MainForm -> Box_Save_Data_flash -> Handle, TRUE);
EnableWindow(MainForm -> Edt_Classe_veh_ -> Handle, TRUE);
EnableWindow(MainForm -> Edt_Duree_Test_ -> Handle, TRUE);
EnableWindow(MainForm -> Edt_Vitesse_ -> Handle, TRUE);
EnableWindow(MainForm -> Edt_InterDistance_ -> Handle, TRUE);
EnableWindow(MainForm -> Edt_Nbre_vehicules_ -> Handle, TRUE);
EnableWindow(MainForm -> Edt_Amplitude_ -> Handle, TRUE);
EnableWindow(MainForm -> Edt_Duree_ -> Handle, TRUE);
} |
Partager