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 :

écrire et récupération de données d'un capteur.


Sujet :

C++

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut écrire et récupération de données d'un capteur.
    Bonjour,

    je me suis retourné vers vous parce que je suis vraiment coincé.

    Je veux récupérer les données d'un capteur (les données sont un string) et en même temps données un temps d'intégration pour le capteur.
    Là, je doit faire appel a une dll (le code pour charger la dll marche bien), il me reste comment faire pour récupérer ces données en utilisant cette DLL.

    S'il y a quelqu'un qui a une idée ou qui pourra me débloquer, je le remercié a l'avance.

    Merci.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    J'ai rien compris.
    Au pif, lire la documentation qui va avec la dll.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Merci pour votre réponse,

    en faite, j'ai une DLL (j'en ai que le .dll pas de .lib et pas de .h)
    j'ai réussi a charger la DLL avec le code suivant:

    // Retrieve DLL handle.
    HINSTANCE hDLL = LoadLibrary("axSpectro.dll");

    et je veux l'utiliser pour récupérer les donnés d'un capteur, sachant que les données a récupérer sont un string.
    est ce que vous pouvez m'aidés a le faire.

    merci.

  4. #4
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Alors il faut deviner le nom de la fonction que tu veux charger dans cette dll.
    Tu es sur de ne pas avoir un en-tête?

    Dans tous les cas, la divination n'étant pas une bonne idée, réfère toi à la documentation.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    J'ai ça comme données:

    Command : dataline(average,count) Function : mesured data from sensor Access: read

    # Count as integer: 1 to 10000. Number of data packs needed. For example, if count = 5, the electronic
    board returns 5 consecutive measurements

    # Average as integer: 1 to 10000. Number of samples used for the average calculation

    et j'ai un code écris en vb.net

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    "axSpectro.dll"

    AX pour ActiveX ?
    Si c'est le cas, ce n'est pas une Dll conventionnelle et il faudra passer par des outils spécifiques pour générer les fichiers .tli (#import https://msdn.microsoft.com/en-us/library/8etzzkb6.aspx), et vous pourrez oublier votre "LoadLibrary".

    Si c'est du code VB.NET direct, c'est que c'est un assembly .NET, pas une Dll.
    Cet assembly est peut-être compatible COM/ActiveX, alors référez-vous aux outils ci-avant.
    Sinon, vous devez utiliser un langage .NET, comme VB.NET, C# ou du C++/CLI.
    Si vous optez pour du C++/CLI vous pouvez toujours oublier votre "LoadLibrary".

    Si c'est vraiment une Dll avec une API C (une API C++ lisible avec VB.NET, c'est de la science-fiction), il y aura tout plein de <DllImport ...> dans tout les quoi.

    En résumé, la documentation, c'est pas fait pour les chiens, et c'est pas une liste de mots pour la décoration.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Bonjour,

    Merci pour votre réponse.
    Je m'explique un peu plus.
    Bon, j'ai une dll qui s'appelle axSpectro.dll, elle été fournie sans le .lib et sans le .h. le travail c'est qu'il faut que je ferrai un programme en C++ qui me récupère les données d'un capteur en utilisant cette dll.
    ce que je doit faire c'est de lire les données avec une commande dataline( une fonction qui est définie pour la mesure des données du capteur)
    j'espère que je suis clair pour l'explication.

    merci pour une autre fois.

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Ça on a compris, vous avez été déjà assez clair sur ce sujet.

    Mais vous ne répondez pas à nos questions.
    Et vous ne pouvez pas y répondre sans lire, et comprendre sa documentation.

    Il savoir au minimum s'il s'agit d'une bibliothèque à chargement dynamique (Dll avec une API C), un composant COM/OLE/ActiveX (Dll avec une API COM), un assembly .NET (Dll avec une API .NET), un assembly .NET compatible COM/OLE (Dll avec une double API).

    Si vous êtes dans le brouillard, postez-nous l'exemple en VB.NET.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Oui c'est mieux que je vous poste le programme que j'ai en VB.net.
    Le programme est le suivant:


    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim spectro As New axSpectro.Spectro
    Public Sub eBoardMeasure()
      Dim Data As String
      Dim iT As Integer = 100
      spectro.integrationTime = iT
      Data = spectro.dataline(average:=1, count:=1)
    End Sub
    Merci une autre fois.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    pour average et count j'ai donné leurs définition dans les premiers messages.

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Il ne s'agit donc clairement pas d'une bibliothèque à chargement dynamique mais d'un assembly .NET.
    Vous pouvez donc oublier votre "LoadLibrary", ça sert à rien.

    Si, dans la documentation, il n'est pas fait mention d'une compatibilité COM/OLE/ActiveX, il s'agit d'un pure assembly .NET.
    Dans ce cas, vous êtes obligé de passer par un langage .NET pour pouvoir vous en servir, comme le C++/CLI ou VB.NET ou encore C#.

    Pourquoi le C++ ?

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Bon, pour le C++ c'est l'entreprise qui veut ça.
    Mais si vous pourrai me dire comment je le ferrai en vb ça sera une autre idée pour moi, comme ça je pourrai au moins savoir ce qui me rend le capteur.
    J'ai essayé le code que j'ai publié avant mais il me faut que charge la axSpectro.dll que j'ai.
    Merci.

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    Bon, pour le C++ c'est l'entreprise qui veut ça.
    Encore un truc à la "charrue avant les bœufs".

    J'ai essayé le code que j'ai publié avant mais il me faut que charge la axSpectro.dll que j'ai.
    Non, vous avez des reflexes de C++ natif, faut penser .NET.

    On ne charge pas les assemblies, on n'est pas obligé pour être exacte.
    En fait, pour le cout, les dll et les assemblies fonctionnent de la même manière.

    Soit il y a un lien "statique" entre l'exécutable et la Dll Native ou l'assembly, et c'est le loader de l'OS qui s'occupera automatiquement du chargement de la Dll native ou de l'assembly dans l'exécutable.
    Dans ce type de cas, l'utilisation d'une dll Native est exactement le même qu'une librairie statique. Mais il faut disposer d'un fichier .lib et d'un fichier .h, en plus du fichier .dll.

    Soit le lien est dynamique, via "LoadLibrary" pour une Dll Native, soit via Assembly.Load (https://msdn.microsoft.com/fr-fr/lib...v=vs.110).aspx).
    Mais là, c'est vraiment ce prendre la tête pour rien. Vous êtes dans un scénario d'utilisation qui n'a pas besoin de ce type de grosse Bertha.

    Vous n'avez donc pas à charger l'assembly dans votre exécutable, vous n'avez qu'à l'ajouter à la liste des références dans un projet .NET (quelque soit le type de langage .NET, VB.NET, C# ou encore C++/CLI)


    Le code que vous nous donnez doit donc fonctionner si vous avez bien ajouté en référence l'assembly. C'est l'un des avantages des assemblies sur les Dll Native, car vous n'avez besoin que du fichier .dll contenant l'assembly (plus de .lib, de .h, de .tlb etc...).

    Si vous devez utiliser le C++, rien est perdu. Le C++/CLI est une extension du C++ pour pouvoir utiliser .NET. Comme avec le VB.NET, il suffira d'ajouter l'assembly à la liste des références pour pouvoir vous en servir. Mais attention, il faudra appeler ces "axSpectro.Spectro" depuis du code dit managé.

    Votre expérience en C++ semble assez faible, je pense qu'il vous faudra au moins quelques heures de tutorat par une personne expérimentée en C++/CLI pour passer le cap.

  14. #14
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Oui vous avez raison, je suis faible en c++, je suis nouveau dans la programmation.
    Vous avez pas un tuto qui m'explique comment j'ajoute l'assembly dans le c++/CLI
    Merci.

  15. #15
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    >comment j'ajoute l'assembly dans le c++/CLI
    Juste, "Add Reference" dans le menu contextuel d'un projet C++/CLI de Visual Studio.

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    oui j'ai trouvé comment ajouter une référence.
    Vu le programme que j'ai publié avant en VB, pourrez vous m'aider a refaire le programme en C++.
    Merci pour votre réponse a l'avance.

  17. #17
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 069
    Points : 12 113
    Points
    12 113
    Par défaut
    En gros, ça ressemblerait plus ou moins à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    axSpectro.Spectro^ spectro = gcnew axSpectro.Spectro;
    ...
    void eBoardMeasure()
    {
      spectro->integrationTime = 100;
      String^ data = spectro->dataline(...,1,...,1,....);
    }
    Il n'y a pas de placement des paramètres via leur nom en C++/CLI, il faut respecter l'ordre de déclaration des paramètres dans la signature de la méthode.

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2015
    Messages : 46
    Points : 0
    Points
    0
    Par défaut
    Merci beaucoup pour votre réponse.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/02/2004, 08h47
  2. [ DB2] => [ORACLE] Récupération de données
    Par LeDid dans le forum DB2
    Réponses: 3
    Dernier message: 25/06/2003, 17h10
  3. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  4. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 15h36

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