CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Aide compréhension Programme

Nwar75
Nwar75
Niveau 1
30 mai 2017 à 08:50:54

Bonjour tout le monde,

Je suis débutant en programmation et on m'a filé un programme en C que je n'arrive pas très bien à comprendre certaines lignes de mon programme y'a t'il une âme charitable qui pourrais m'aider.

Merci d'avance à ceux qui le feront :)

https://pastebin.com/zGFRPKXd

  1. 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; //

  1. 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
}

Gaetano-GX
Gaetano-GX
Niveau 30
30 mai 2017 à 09:49:55

Salut,
C'est limite codé à la pisse ton programme...variables globales à proscrire et ce "while(1)", beurk...
De plus, ta fonction Spint_compt() à la fin est presque inutile si tu n'effectue qu'une seule instruction à l'intérieur...(autant remplacer son appel par "comptage++").

Nwar75
Nwar75
Niveau 1
30 mai 2017 à 10:38:14

Salut, Viens le dire à mon prof mdr

MrAnge
MrAnge
Niveau 10
31 mai 2017 à 12:37:46

je vois mal comment on pourrais t'aider avec si peu d'information, je vois qu'il y'a une liaison uart donc tu communique avec quelque chose, LABVIEW seulement ou autre chose ? je vois aussi que tu tape sur des registre d'adresse pour récupérer des informations tu dois donc avoir un capteur derrière ?

complète ces infos et on pourra peut etre t'aider :hap:

edit: Serial uart(p9, p10,10000); // Créez un port série, connecté aux broches d'émission et de réception 9 et 10 à 9600 10000 bauds

Message édité le 31 mai 2017 à 12:38:57 par MrAnge
Nwar75
Nwar75
Niveau 1
01 juin 2017 à 02:11:13

Bonsoir,
J'utilise un programme labview qui communique avec un module ZIGBEE intégré à un module de Sparkfun,
Ce programme est compiler sur une carte MBED je doit expliquer lignes par lignes à quoi cela correspond mais je ne comprends pas certaines lignes.

merci

Pseudo supprimé
Pseudo supprimé 04 juin 2017 à 01:51:53

les histoires de variables globales c'est parce-que c'est de la programmation sur micro-controleur (je me trompe ?).
Du coup vu que les RAM sur micro-contrôleur sont très limités on a habituellement les variables déclarés en globales pour palier à ce problème.

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment