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
| include "mbed.h"
//--------- Tx Rx
Serial uart(p9, p10,10000); // Créez un port série, connecté aux broches d'émission et de réception 9 et 10 à 9600bauds
InterruptIn event(p8); // InterruptIn : Interruption (broche PinName) : Créez un interrupteur connecté à la broche 8 c'est-à-dire la broche 8.
void Spint_compt(); //
unsigned int comptage,i,val,imod,duree=1,temps; //
unsigned int n=0,nlu=0,nd; //
define max 15000 //
unsigned short Tab[15000]; //
int main() //Programme Principal
{
event.rise(&Spint_compt); // Permet de joindre une fonction membre pour appeler lorsqu'un front montant survient sur l'entrée.
while(1) // Boucle Tant que (toujours faire)
{
comptage=0; //
wait(duree); // 1s
//----------STOCKAGE
if(comptage!=0 && Tab[n]==0) //
{
Tab[n]=comptage; //
n= (n+1)%max; //
}
//*******************************
//---DEMANDE LABVIEW
//--Réception Durée et nbre de mesures
if(uart.readable()) //permet d'exécuter une série d'instructions et déterminez s'il existe un caractére disponible à lire.
{
//----Attendre de tout recevoir
wait(0.04); // Tempo de 0.04s
//convertir DUREE
temps=duree;
duree=uart.getc()&0x0F; //
val=uart.getc(); //
while(val!=0x0A) //
{
duree=duree*10+ (val&0x0F); //
val=uart.getc(); //
}
//-- Init à 0 RAM
if (duree!=temps) //
{
for(i=0;i<max;i++) Tab[i]=0; //
n=0;nlu=0; //
}
//convertir Nbre mesure
val=(uart.getc())&0x0F; //
while(uart.readable()) //
{
val=val*10; //
val=val+ ((uart.getc())&0x0F); //
}
//Envoyer les mesures
nd=nlu; // la valeur du pointeur nd prend la valeur du pointeur nlu
for(i=nd;i<(nd+val);i++) //
{
imod= i%15000; // lorsque imod vient à 15000 cela repasse à 0
uart.printf("%d\n",Tab[imod]); //
if(Tab[imod]!=0) //
nlu=(nlu+1)%15000; // pointeur de lecture nlu incrémenter à n+1 modulo 15000
Tab[imod]=0; // Remplace la valeur lue par 0
wait(0.001); //Tempo de 0.001s
}
}
}
}
void Spint_compt() // Permet de définir le format de transmission utilisé par le port série.
{
comptage++; //Incrémenter
} |
Partager