IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

piloter le port serie avec avec Code::Blocks


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 52
    Par défaut piloter le port serie avec avec Code::Blocks
    salut

    je voudrais une aide pour activé le port série avec une interface fais avec la bibliothèque SDL sur windows XP pour envoyer un octet qui correspond a une lettre avec une vitesse 9600/s 8bits 1Bit-stop pas de parité
    pourriez-vous me donner les fonctions et me les expliquer ou un tuto,un lien,un exemple ?

  2. #2
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    En cherchant sur , on trouve ça.

    T'as plus qu'à étudier le code ci-dessus (la MSDN est ton amie), et à faire ton interface avec la SDL

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 52
    Par défaut
    oui je suis déjà tombé sur ce lien quand je fais des recherches
    mais y a du niveaux
    dans le fichier .h
    pour la structure SerialParam la j'ai compris

    mais la fonction enSerialError OpenSerialPort(SerialParam *pSerialConfig);
    pas compris
    on déclare une fonction de type enSerialError dont on lui envoie en entré la variable pSerialConfig de type SerialParam qui est une structure
    qu'elle sont les liens entre la structure et le enum



    pour moi enum c'est la ou on m'est des mots en majuscule qui représente une valeur ex enum{mur,rocher} mur=0,rocher=1


    la variable hPort n'est déclarer nul par elle récupère qu'elle type ?

  4. #4
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    Déjà, hPort est du type HANDLE (un type "made in windows" :p) qui retourne un descripteur de fichier (qui représentera ici ton port série), et celui qui a conçu le code a oublié de le déclarer comme tel.

    Ensuite, les enum sont bien ce que tu dis, sauf que le programmeur n'a pas mis les noms en majuscules. En fait enSerialError contient différents codes d'erreur.

    En fait, la fonction OpenSerialPort va lire/modifier la structure passée en paramètre (grâce aux pointeurs), et retourner un code qui dit si l'opération s'est bien passée ou non (et ce qu'il s'est passé le cas échéant).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 52
    Par défaut
    salut

    Dans la fonction enSerialError OpenSerialPort(SerialParam *pSerialConfig);
    il faut que je déclare une variable globale de type HANDLE a l'extérieure de la main HANDLE hPort;
    après a l'intérieure de la main il faut que j'écris la variable pSerialConfig de type SerialParam puis j'ajoute des valeurs a la structure SerialParam
    comme cela
    pSerialConfig.ComPort[5]='PORT1';
    pSerialConfig.BaudRate=9600;
    pSerialConfig.DataBitsNumber=8;

    après il y ce type DCB dcbPort c'est quoi comme type de variable ?
    COMMTIMEOUTS ComTimeouts; est une structure qu'il faut que je déclare a l'extérieur de la main et que j'ajoute des valeurs a l'intérieur de la main ?
    puis il faut que je la rajoute a la fonction nSerialError OpenSerialPort(SerialParam *pSerialConfig,COMMTIMEOUTS *ComTimeouts);?
    enSerialError ComError=_ErrorNone; la variable vaux 0 donc pas d'erreur si tout ce passe bien dans la fonction renvoie une valeur 0?

  6. #6
    Membre Expert
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Par défaut
    Bonjour,

    Déjà (désolé de le dire), ton message ressemble à une bouillie informe. Je pense qu'un peu de ponctuation et d'ordre dans tes questions serait pas mal (et les balises [code] ou [codeinline] ne sont pas facultatives).

    Bref:

    Après il y ce type DCB dcbPort c'est quoi comme type de variable ?

    La réponse se trouve dans la MSDN, suffit d'aller regarder dedans.

    COMMTIMEOUTS ComTimeouts; est une structure qu'il faut que je déclare a l'extérieur de la main et que j'ajoute des valeurs a l'intérieur de la main ?

    Non, cette structure est définie (et non déclarée) dans windows.h qu'il faut inclure dès que tu utilises les APIs windows (si ce n'est pas le cas, la MSDN te dira quels fichiers inclure). Concernant les valeurs, ta fonction OpenSerialPort déclare une structure COMMTIMEOUTS, donc pas besoin de la redéclarer. Et donc pas besoin de toucher au prototype de ta fonction

    enSerialError ComError=_ErrorNone; la variable vaux 0 donc pas d'erreur si tout ce passe bien dans la fonction renvoie une valeur 0?

    Oui, ta fonction renvoie 0 si aucun problème n'a lieu (ou tu peux utiliser _ErrorNone pour plus de lisibilité dans ton code).

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    pSerialConfig.ComPort[5]='PORT1';

    Le compilateur est censé te crier dessus sur cette ligne.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 52
    Par défaut
    salut

    pSerialConfig.ComPort[5]="PORT1";

    j'ai refais le code avec un autre code exemple.
    alors au début ca fonctionne,je compile ,j'appuie sur shift et 1 la diode s'allume sur ma platine et a l'écran l'image de la diode éclairé apparais
    shift et 0 la diode s'éteint et a l'écran l'image de la diode éteint apparais .
    mais plus tard quand je relance le code la diode s'allume mais impossible de l'éteindre meme en ferment le code et avec l'hyperterminal !
    j'ai l'impression que le code asm du pic a été modifier ?

    désoler pour la ponctuation,l'orthographe

Discussions similaires

  1. Problème execution avec IDE codes::blocks
    Par tom31 dans le forum Code::Blocks
    Réponses: 2
    Dernier message: 28/10/2008, 21h54
  2. comment travailer avec le code blocks
    Par samoucha10 dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 11/12/2007, 16h10
  3. Probleme avec compilateur Code::Blocks
    Par ..::snake::.. dans le forum Code::Blocks
    Réponses: 3
    Dernier message: 13/06/2007, 20h01
  4. piloter le port serie
    Par laala hamid dans le forum Delphi
    Réponses: 4
    Dernier message: 19/03/2007, 18h45
  5. quel est le Meilleur language pour piloter le port serie ?
    Par flyfab dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 21/07/2003, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo