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

Access Discussion :

Comment utiliser les méthodes et évennements d'un fichier OCX ? [AC-2010]


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut Comment utiliser les méthodes et évennements d'un fichier OCX ?
    Bonjour à tous,

    Je fais parti d'un club de voitures de courses miniatures. Nous avons un portique accompagné d'un programme permettant de chronométrer les voitures équipées d'une puce.
    Mais le programme que nous avons ne fait pas certaines fonctions qui nous manquent.
    Je me suis alors dis qu'access serai parfait pour ça et j'ai commencé à fouiller pour trouver une solution. J'ai alors trouvé un fichier appelé "LapZocx.ocx" fourni par le fabricant du matériel, à destination des personnes souhaitant développer un programme. Je me suis alors dit "bingo ! c'est prévu, ça va être cool !". Sauf que ...
    Impossible d'utiliser ces Function et Events ... Je ne sais pas comment faire le lien avec Access.

    J'ai référencé "LapZOCXComponent" et j'ai essayé de l'utiliser comme un DLL. Mais en cours d'exécution j'ai un message d'erreur car le programme ne trouve pas le point d'entrée ... Ce n'est pas la bonne méthode.

    Quelqu'un peut-il m'aider ?
    Merci par avance.

    Le fichier LapZocx.ocx est accompagné d'un fichier texte dont voici le contenu :

    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
    Event UpdateRaceClock(lMilliseconds As Long)
    ' Sends a message to the main program to update the race clock. This is done once in a while
    ' to make sure that the race clock displayed on the screen is fairly similar to the one
    ' used to do the actual timing by the system.
    '
    ' Parameters:
    '   lMilliseconds   - current race time, milliseconds
    '
     
    Event RegisterCar(iCarID As Integer, lMilliseconds As Long)
    ' Sends a message to the main program to inform it that a car has passed.
    '
    ' Parameters:
    '   iCarID          - ID of the car that just passed
    '   lMilliseconds   - race time when the car passed, milliseconds
    '
     
    Public Function OpenConnection(iComPort As Integer) As Boolean
    ' Opens the connection to the LapZ controller via serial port.
    '
    ' Parameters:
    '   iComPort    - Which comport to use. 1 = COM1
    '
    ' Returns a boolean, true if successful.
    '
     
    Public Function CloseConnection() As Boolean
    ' Closes the connection to the LapZ controller via serial port.
    '
    ' Parameters:
    '
    ' Returns a boolean, true if successful.
    '
     
    Public Function StartRace() As Boolean
    ' Starts a race. This will start the counter on the LapZ controller.
    '
    ' Parameters:
    '
    ' Returns a boolean, true if successful.
    '
     
    Public Function StopRace() As Boolean
    ' Stop the race. This will tell the LapZ controller to stop the race clock.
    '
    ' Parameters:
    '
    ' Returns a boolean, true if successful.
    '
     
    Public Function GetSingleID() As Integer
    ' Asks the LapZ controller for the ID of the car currently within reach of the bridge.
    ' If no such contact has been reached within 500ms, this call will timeout.
    ' This means that the car/beeper must be present under the bridge befor this call is made.
    '
    ' Parameters:
    '
    ' Returns an integer, containing the car ID. If no contact is reached,
    ' it will return:
    '   -1 = no car under bridge
    '   -2 = comport is closed
    '   -3 = no contact with LapZ
    '
     
    Public Function SetSingleID(iNewID As Integer) As Boolean
    ' Programs a new ID into the car currently in contact with the bridge.
    ' The car/beeper must be present before this call is made.
    '
    ' Parameters:
    '   iNewID    - The new ID
    '
    ' Returns a boolean, true if successful.
    '

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Mon sujet ne semble pas inspirer grand monde ... Et je reste avec mon problème.

    Peut-être que je n'ai pas été assez clair.
    Alors je recommence en plus détaillé.

    Dans le club de voiture miniature dont je fais parti, nous avons un équipement permettant de chronométrer les temps au tour des petits bolides.
    Un portique placé sur la ligne de départ au dessus de la piste est relié à l'ordinateur par une liaison série. Le portique communique avec une "puce" installée dans chaque voiture. La communication est bidirectionnelle, il est ainsi possible d'assigner à chaque voiture un numéro et de détecter son passage sous le portique au 1000e de seconde prés, ceci en temps réel.

    Le fabricant du matériel (portique et puces) fourni, a l'attention des développeurs informatique, une interface pour communiquer avec le portique. Il s'agit d'un fichier appelé Lapzocx.ocx.
    celui-ci fourni également un fichier txt contenant, afin de pouvoir utiliser le fichier ocx, le texte suivant :

    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
    Event UpdateRaceClock(lMilliseconds As Long)
    ' Sends a message to the main program to update the race clock. This is done once in a while
    ' to make sure that the race clock displayed on the screen is fairly similar to the one
    ' used to do the actual timing by the system.
    '
    ' Parameters:
    '   lMilliseconds   - current race time, milliseconds
    '
     
    Event RegisterCar(iCarID As Integer, lMilliseconds As Long)
    ' Sends a message to the main program to inform it that a car has passed.
    '
    ' Parameters:
    '   iCarID          - ID of the car that just passed
    '   lMilliseconds   - race time when the car passed, milliseconds
    '
     
    Public Function OpenConnection(iComPort As Integer) As Boolean
    ' Opens the connection to the LapZ controller via serial port.
    '
    ' Parameters:
    '   iComPort    - Which comport to use. 1 = COM1
    '
    ' Returns a boolean, true if successful.
    '
     
    Public Function CloseConnection() As Boolean
    ' Closes the connection to the LapZ controller via serial port.
    '
    ' Parameters:
    '
    ' Returns a boolean, true if successful.
    '
     
    Public Function StartRace() As Boolean
    ' Starts a race. This will start the counter on the LapZ controller.
    '
    ' Parameters:
    '
    ' Returns a boolean, true if successful.
    '
     
    Public Function StopRace() As Boolean
    ' Stop the race. This will tell the LapZ controller to stop the race clock.
    '
    ' Parameters:
    '
    ' Returns a boolean, true if successful.
    '
     
    Public Function GetSingleID() As Integer
    ' Asks the LapZ controller for the ID of the car currently within reach of the bridge.
    ' If no such contact has been reached within 500ms, this call will timeout.
    ' This means that the car/beeper must be present under the bridge befor this call is made.
    '
    ' Parameters:
    '
    ' Returns an integer, containing the car ID. If no contact is reached,
    ' it will return:
    '   -1 = no car under bridge
    '   -2 = comport is closed
    '   -3 = no contact with LapZ
    '
     
    Public Function SetSingleID(iNewID As Integer) As Boolean
    ' Programs a new ID into the car currently in contact with the bridge.
    ' The car/beeper must be present before this call is made.
    '
    ' Parameters:
    '   iNewID    - The new ID
    '
    ' Returns a boolean, true if successful.

    Je souhaite développer sous Access un programme permettant l'affichage des données (dernier temps au tours, meilleurs temps, nb de tours, position dans la course ou aux essais, par pilote et par equipe, etc ...). Cette partie ne me pose aucun problème.
    Mais j'ai besoin d'établir la communication avec le portique pour récupérer les données. Car évidemment, sans donnée, rien à afficher ...

    Voilà ce que j'ai fait :



    Je crée une nouvelle base de donnée "Database3" et j'y référence le fichier Lapzocx.ocx :



    J'ai créé un nouveau formulaire "Formulaire1" et j'y intègre un controle AxtiveX "Lapzocx":





    Je peux voir l'objet inséré dan mon formulaire :



    Malheureusement les évènements "UpDateRaceClock" et "RegisterCar" n'apparaissent pas dans la liste des évènements disponibles :




    Les différentes fonctions indiquées par le fournisseur de l'interface ne sont pas disponibles non plus en visual basic ...

    Peut-être y a-t-il quelque chose que je n'ai pas compris ?
    J'utilise mal le fichier mis à disposition ?
    Problème de compatibilité du fichier ocx avec Access ?

    Si quelqu'un a une petite idée, ça me rendrai bien service !

    Merci d'avance

  3. #3
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Les événements doivent être disponibles directement dans VBA, dans les zones de listes au dessus de l'éditeur. Là, où vous trouvez normalement : le nom des contrôles dans la liste de gauche, la liste des événements dans celle de droite.

    Regardez aussi avec un clic droit sur votre contrôle activex si vous n'avez pas de propriétés supplémentaires, permettant notamment de définir le n° de port.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 41
    Points : 22
    Points
    22
    Par défaut
    Yep ! Ca marche !



    Quand aux fonctions, elles sont disponibles en tapant leur nom derrière le contrôle tout simplement. Bien qu'elles n'apparaissent pas dans la liste des fonctions "déroulante" quand on tape (ce qui m'avait induit en erreur jusque là).

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim PortCom As Integer
        Dim B As Boolean
     
        PortCom = 1
     
        B = LapZOCX7.OpenConnection(PortCom)
        MsgBox (B)
    affiche un message indiquant si oui ou non la liaison série COM1 est ouverte correctement ou pas. (avec 1 c'est vrai, avec 12 c'est faux : tout est ok !)


    Merci bien !!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/12/2004, 20h37
  2. Utiliser les méthodes des boutons crées en rafale.
    Par kabouns dans le forum Composants
    Réponses: 8
    Dernier message: 03/12/2004, 10h48
  3. [COM] Comment utiliser les événements Word ?
    Par Laurent Dardenne dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 30/05/2004, 12h38
  4. Réponses: 11
    Dernier message: 22/12/2003, 21h06
  5. Comment utiliser les styles XP avec Dev-C++?
    Par abraxas dans le forum Dev-C++
    Réponses: 3
    Dernier message: 05/10/2003, 19h47

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