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 :

besoin d'aide pour la structure DCB & COMSTAT


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2010
    Messages : 87
    Points : 62
    Points
    62
    Par défaut besoin d'aide pour la structure DCB & COMSTAT
    bonjour

    j'ai besoin de l'aide pour initialiser les champs de la structure DCB pour programmer le micro MC68HC11E9 en mode BootLoader et pour puisse programmer hc11e9 il me faut envoyer le signal reset et puis lire sur le port le message "break" qui est renvoyé par le hc11e9 pour m'indiquer qu'il est pret pour recevoir le fichier bootloader, j'ai un problème pour l'envoi le signal reset et de comment vérifier le message break renvoyé par hc11e9 , et est ce qu'en utilise la variable COMSTAT comme un registre d'état ?


    mercis d'avance pour votre aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    #include <stdio.h>
    #include <windows.h>
    #include "portcom.h"
     
    #define true (1)
    #define false (0)
     
    #define EEPROM_ADRS 0XB600
    #define ROM_ADRS 0XD000
    #define EEPROM_SIZE 512
    #define ROM_SISE 12288
    #define Write_EEPROM 0X57
    #define Read_EEPROM 0X52
     
    DCB dcb;
    HANDLE hCom;
    //DWORD voir;
    //FILE *file;
    COMSTAT Rstatus;
    COMMTIMEOUTS CT;
    unsigned char Buffer[1000] = {0};
    unsigned char BootLoader[] = { /* chargeur pour micro motorola MC68HC11E9 */
    0xCE,0x10,0x00,0x6F,0x2C,0x86,0x30,0xA7,0x2B,0x86,0x0C,0xA7,0x2D,0x6F,0x35,0x86,
    0x10,0x8D,0x41,0x4A,0x26,0xFB,0x86,0xA5,0xA7,0x2F,0x1F,0x2E,0x20,0xFC,0xA6,0x2F,
    0x81,0x52,0x27,0x4C,0x81,0x57,0x27,0x02,0x20,0xF0,0x8D,0x4A,0x1F,0x2E,0x20,0xFC,
    0xA6,0x2F,0xC6,0x16,0xE7,0x3B,0x18,0xE7,0x00,0xC6,0x17,0xE7,0x3B,0x8D,0x15,0x6F,
    0x3B,0xC6,0x02,0xE7,0x3B,0x18,0xA7,0x00,0xC6,0x03,0xE7,0x3B,0x8D,0x06,0x6F,0x3B,
    0x8D,0x14,0x20,0xC6,0x36,0xEC,0x0E,0xC3,0x9C,0x40,0xED,0x1C,0x86,0x10,0xA7,0x23,
    0x1F,0x23,0x10,0xFC,0x32,0x39,0x1F,0x2E,0x80,0xFC,0x18,0xA6,0x00,0xA7,0x2F,0x39,
    0x8D,0x04,0x8D,0xF2,0x20,0xA4,0x1F,0x2E,0x20,0xFC,0xA6,0x2F,0x1F,0x2E,0x20,0xFC,
    0xE6,0x2F,0x18,0x8F,0x39,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
    0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
     
    int main(void)
    {
        /*
        file = fopen("c:\BootLoader.bin","rb");
        if(file != NULL){
        fgets(Buffer,256,file);
        }*/
     
        hCom = CreateFile("COM1",GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0, NULL);
     
        if (hCom == 0 )
        {
            printf ("Error CreatFile Fonction !\n");
        }
        /*la re mis a zero de structures */
        ZeroMemory(&Rstatus, sizeof(COMSTAT));
        ZeroMemory(&CT, sizeof(COMMTIMEOUTS));
        ZeroMemory(&dcb, sizeof(DCB));
        dcb.DCBlength = sizeof(DCB);
        /*----------------------------------------*/
        /* initial structure COMMTIMEOUTS */
        CT.ReadTotalTimeoutMultiplier = 4;
        CT.ReadTotalTimeoutConstant = 200;
        CT.WriteTotalTimeoutMultiplier = 20;
        CT.WriteTotalTimeoutConstant = 200;
        if(! SetCommTimeouts(hCom,&CT))
        {
            printf("Erreur init COMMTIMEOUTS Structure !\n");
            return false;
        }
        /*-------------------------------------------------------------*/
        if(!SetupComm(hCom,1000,1000))
        {
            printf("Erreur number de buffers d'Entrée et Sortie !\n");
        }
        /*-------------------------------------------------------*/
        //  Initialize the DCB structure.
        if(!GetCommState(hCom, &dcb))
        {
            printf("Erreur GetCommState Fonction !\n");
        }
        /* initial Structure DCB */
        dcb.BaudRate = CBR_600;
        dcb.ByteSize = 8;
        dcb.fBinary  = 1;
        dcb.Parity   = NOPARITY;
        dcb.StopBits = ONESTOPBIT;
        dcb.fRtsControl = RTS_CONTROL_TOGGLE;
        if(!SetCommState(hCom, &dcb))
        {
            printf("Erreur SetCommState Fonction !\n");
        }
        /*----------------------------------------------------------------*/
       /* if(!SetRTS(1))
            {
                printf("Erreur de remis a zero de la Pin RTS !\n");
            }
            printf("RTS = 0 !\n");
        if(!SetRTS(0))
            {
                printf("Erreur de Positionnement de la Pin RTS !\n");
            }
            printf("RTS = 1 !\n"); */
     
        /*-----*/
        //ClearCommError(hCom, &voir, &Rstatus);
     
        /*--------------------------------------------------------------------*/
        printf("start l'envoi\n");
        printf("le numbre d'octet envoyer est %d !\n",SendData(256, BootLoader));
        //printf("start reception \n");
        //printf("le numbre d'octet a lire est  %d !\n",ReceiveData(256, Buffer));
     
       while(1){}
     
       return false;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /*--------------------------------------------------------------*/
    /* fonction SendData */
    int SendData(DWORD Cunt, LPBYTE Data)
    {
        DWORD Noctet = 0;
        if(!WriteFile(hCom, Data, Cunt, &Noctet, 0))return false;
        else return Noctet;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    /*---------------------------------------------------------*/
    /* fonction RceeiveDAta */
    int ReceiveData(DWORD Cunt, LPBYTE Data)
    {
        DWORD Noctet = 0;
        if(!ReadFile(hCom, Data, Cunt, &Noctet, 0))return false;
        else return Noctet;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    /*------------------------------------------------------*/
    /* Fonction de Positionnement Pin RTS */
    BOOL SetRTS(int RTS)
    {
        if(RTS == true)
        {
            if(EscapeCommFunction(hCom,SETRTS)==true)
            return true;
        }
        if(RTS == false)
        {
            if(EscapeCommFunction(hCom,CLRRTS)==true)
            return true;
        }
        return false;
    }

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Points : 130
    Points
    130
    Par défaut parity
    Bonjour,
    je ne comprends pas pourquoi il n'y a pas de parité dans votre structure DCB.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        dcb.Parity   = NOPARITY;
    ReceiveData et SendData sont les seules informations transmises par la RS232.
    Je ne sais pas pour COMSTAT.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2010
    Messages : 87
    Points : 62
    Points
    62
    Par défaut
    merci pour ta réponse

    je n'utilise pas l'option de "parity" car le périphérique "MC68HC11E9" ne l'ai traite pas et meme au fichier "bootloader" que je veux lui envoyer contient le "BaudRate9600 / ByteSize 8/ StopBits 0 " comme paramètre sans utilise l'option de "parity" et si l'envoi de ce fichier "loader" réussit de s'installé a la RAM de "MC68HC11E9" le "MC68HC11E9" communique a base de ce fichier "loader" il l'utilise comme DCB structure exactement comme le cas au coté PC, pour le signal reset j'ai dicédé de mettre un bouton poussoir mais j'ai toujour besoin de savoir comment détecter le message "break" qui'est renvoyé par le "MC68HC11E9" aprés l'opération de reset avant d'appeler la fonction"SendData()" , j'ai pensé pour "COMSTAT" structure mais j'ai un problème de sense avec le mot (if) par exemple "If this member is TRUE" ici est ce qu'il parle a moi qu'il faut mettre ce champ a "true ou false" ou parlent de CONTROL que celui qui initialise ces champs en cas d'erreurs ou pour nous indiquer qu'il a reçu par exemple le message "break" ?

    voici tous les lien que j'ai pour ce qui veut m'aider et merci d'avance
    http://msdn.microsoft.com/en-us/libr...00(VS.85).aspx
    http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx
    http://www.abcelectronique.com/acquier/sysp11.html

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Points : 130
    Points
    130
    Par défaut COMSTAT
    Bonsoir,
    j'ai regardé votre problème de lecture COMSTAT sur msdn.
    Effectivement, ils disent que c'est une valeur d'état.
    Vous n'avez pas besoin de setter les données COMSTAT.
    C'est COMSTAT qui le dit.
    Par exemple, fCtsHold est un booléen.
    S'il est vrai alors transmission en attente
    s'il est faux alors pas de transmission en attente <=> ne pas faire un Read, rien à lire.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations forums :
    Inscription : Février 2010
    Messages : 87
    Points : 62
    Points
    62
    Par défaut
    bonjour mon frère

    il me faut appeler la fonction "ReadFile" après le signal reset juste pour lire un mot de 8bis pour le savoir qui c'est ce message "break" et comme j'ai pas un micro "MC68HC11E9" a tester pour le moment j'ai démonté mon démodulateur et j'ai branché la pin "RXT" avec "TXT" de la façade de mon démo et l'opiration ça marche bien et j'ai récupéré tous les trames et j'ai maintenant besoin de ton aide si tu peux? pour sauvegarder le tableau "unsigned char Buffer[1000]" dans un fichier.hex pour séparé les trames "opcode/adresses/données avec un éditeur hexadécimal

    merci d'avance pour votre aide

Discussions similaires

  1. Besoin d'aide pour structuration particulière
    Par ThierryForum dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/06/2013, 17h20
  2. Besoin d'aide pour structure de tables avec Mysql
    Par alsab dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/12/2010, 17h54
  3. Besoin d'aide pour les structures de données dynamiques
    Par aurelie689 dans le forum Pascal
    Réponses: 3
    Dernier message: 26/12/2007, 22h29
  4. [TP]besoin d'aide pour commandes inconnues
    Par Upal dans le forum Turbo Pascal
    Réponses: 15
    Dernier message: 03/10/2002, 11h48
  5. Besoin d'aide pour l'I.A. d'un puissance 4
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 18h05

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