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 :

Tablette graphique et RS 232


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Par défaut Tablette graphique et RS 232
    Tout d'abord, bonjour tout le monde.

    Ensuite, je tiens à préciser que je suis loin d'être un génie en programmation, même loin de là...

    Alors mon problème est le suivant :

    Je dois récuppérer, par le biais de la liaison série, les coordonnées du curseur qui pointe sur la tablette.

    Pour cela, je dois récuperrer 5 octets contenant diverses données, comme les boutons, et les COORDONNEES !!!

    J'ai donc utiliser une strusture à recrouvrement afin de me "simplifier" la vie, mais voilà, cela ne marche pas.

    Structure :

    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
     
    #pragma pack(1)
     
    typedef struct st_tab
    {
        // Octet n°1
        unsigned char  Prox        : 1;
        unsigned char  Inutile1    : 1;
        unsigned char  TB1        : 1;
        unsigned char  TB2        : 1;
        unsigned char  TB3        : 1;
        unsigned char  TB4        : 1;
        unsigned char  Inutile2    : 1;
        unsigned char  Parity1  : 1;
     
        // Octet n°2
        unsigned char CordX1    : 6;
        unsigned char Inutile3    : 1;
        unsigned char Parity2    : 1;
     
        // Octet n°3
        unsigned char CordX2    : 6;
        unsigned char Inutile4    : 1;
        unsigned char Parity3    : 1;
     
        // Octet n°4
        unsigned char CordY1    : 6;
        unsigned char Inutile5    : 1;
        unsigned char Parity4    : 1;
     
        // Octet n°5
        unsigned char CordY2    : 6;
        unsigned char Inutile6    : 1;
        unsigned char Parity5    : 1;
     
    }t_tablet;
     
    //Définition d'une structure de recouvrement
    typedef union st_Recouvrement
    {
     
        t_tablet        t_tab;            //Affectation des éléments reçus à cette structure
        unsigned char    Serie[5];        //buffer recevant les 5 octets envoyés par la tablette
    }t_recouvrement;
    Fonction tablette et réception
    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
     
    int tablette()
    {
        int i;
        t_recouvrement    t_serie;
        unsigned short    Xpos,Ypos;
        for(i=0;i<5;i++)
        {
            t_serie.Serie[i]='\0';
        }
     
            for(i=0;i<5;i++)
            {
                t_serie.Serie[i] = reception();
     
                sprintf(Err,"%d",t_serie.Serie[i]);
                FctSetEdit(Err);
            }
            MsgBox("");
     
            t_serie.t_tab.TB1 = 3;
            sprintf(Err,"%d",t_serie.t_tab.TB1);
            MsgBox(Err);
     
            if(t_serie.t_tab.TB1 == 1)
            {
                InvalidateRect(hWndMain,NULL,TRUE);
                Xpos = t_serie.t_tab.CordX1 | (t_serie.t_tab.CordX2 << 6);
                Ypos = t_serie.t_tab.CordY1 | (t_serie.t_tab.CordY2 << 6);
     
                sprintf(xPos,"%d",Xpos);
                sprintf(yPos,"%d",Ypos);
                //MsgBox(xPos);
     
                InvalidateRect(hWndMain,NULL,TRUE);
     
                SetWindowText(hWndPosX,xPos);
                SetWindowText(hWndPosY,yPos);
     
                //SendMessage(hWndMain,WM_PAINT,0,0);
                InvalidateRect(hWndMain,NULL,TRUE);    // Permet de rafraichir la fenêtre pour les problèmes d'affichage
     
                // Sauvegarde des coordonnées dans le buffer de données
                sprintf(Err,"X=%s Y=%s ",xPos,yPos);
     
                strcat(Err,"\r\n");
                strcat(pt_exch.Data,Err);
                SetWindowText(hWndTabXY,pt_exch.Data);
     
                EnableWindow(hWndSend,TRUE);
            }
            else MsgBox("PAS BON");
            /*if(t_serie.t_tab.TB4 == 1)
            {
                MsgBox("Casse les BIP !!");
            }*/
        return 0;
    }
     
    unsigned char reception()
    {
        unsigned char    recep;
        DWORD    lpdWord;
     
        //lpdWord = 1;
     
    //    MsgBox("Ici Recep");
     
        if(ReadFile(hfile,&recep,1,&lpdWord,NULL) == 0)
        {
            sprintf(Err,"ReadFile a échoué avec l'erreur : %d",WSAGetLastError());
            MsgBox(Err);
            CloseHandle(hfile);
            exit(0);
        }
     
        Sleep(10);
    //    MsgBox("Lecture Recep");
     
        return recep;
    }
    Le fonctionnement est aléatoire, un coup je récuppère bien 5 octets, un coup c'est 3, ensuite je n'arrive pas à faire tourner le programme "en boucle", c'est à dire pouvoir recevoir des coordonnées à chaque clique sur le curseur ..

    Je sais que cela n'est pas des plus claires, donc si vous avez du mal a comprendre, n'hésitez pas.

    Une dernière précision, je suis en API Windows et la tablette est une HIPAD plus

    Merci d'avance !!

  2. #2
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    Une dernière précision, je suis en API Windows
    ah oui, ça on as vut
    le bon forum est donc Dev Windows

    sur la conception de la chose ... je ferait differement.
    apparement tu dois recuperer TOUJOURS 5octects ...
    j'utiliserais une fonction pour qui aurait ce prototype: int read_on_usb(char *t_tab,int tablen);
    ta fonction retournerais le "status":
    0 : lecture avec succés
    -1 : echec complet, rien n'est lut
    valeur positive et inferieur a tablen : nombre d'octects lu avec succés

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Par défaut
    Très bien, meci je vais voir pour cette fonction et je vais reposter en Dev Windows

Discussions similaires

  1. Besoin de conseil pour tablette graphique
    Par Mathieu.J dans le forum Périphériques
    Réponses: 7
    Dernier message: 10/07/2019, 12h45
  2. Réponses: 1
    Dernier message: 06/01/2008, 23h27
  3. Question sur tablette graphique A3
    Par Sensnine dans le forum Périphériques
    Réponses: 2
    Dernier message: 19/08/2007, 17h47
  4. [FLASH 8] Tablette graphique
    Par bibile dans le forum Flash
    Réponses: 28
    Dernier message: 05/09/2006, 10h22
  5. Interface pour Tablette Graphique
    Par marzizou dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/06/2004, 11h44

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