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++Builder Discussion :

Intégration de la Libmodbus (XE3)


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2013
    Messages : 20
    Points : 16
    Points
    16
    Par défaut Intégration de la Libmodbus (XE3)
    Salut à tous

    Apres quelques heures pour trouver comment integrer la libmodbus je commence à me rendre compte de mon faible niveau pour integrer des libs à XE3(j'en ai dejà galerer pour d'autre dont Tcomport et modbustcp)
    vous me direz que j'ai déjà modbus , or il est TCP et j'ai besoin du RTU pour mon projet, au départ je voulais forcer avec comport les trames mais c'est pas si simple et ça fais un peu bricolage

    tentative dans l'ordre et constat:

    1. j'ai mis tous les fichier(libmodbus-3.0.3\src .c et .h) dans le repertoire (de de mon application fiche VCL C++ builder)
    2. par sureté j'ai validé le chemin d'inclusion dans option du projet
    3.première compilation Erreur au niveau "#include <sys/time.h>" je l'ai remplacé par <time.h> ok
    4.j'ai du mettre #include <unistd.h> en commentaire dans unit.h, j'ai beau chercher sur le net mais pas grand chose pour le remplacer
    5.à ce niveau quand je rentre une fonction à la première parenthèse le compliateur propose bien le type de paramètre à rentrer j'en deduis que le modbus.h est reconnus
    6.à ce stade ça compile
    7. dès que j'essaye avec avec une fonction (voir unit.ccp) j'ai l'erreur
    -[ilink32 Erreur] Error: '_modbus_write_registers' externe non résolu, référencé depuis G:\C & C++ (EMBARCADERO)\RAD STUDIO\PROJETS\RAD_TP_EMBARCADERO\TEST_LIB_MODBUS\WIN32\DEBUG\UNIT1.OBJ

    Il me semble avoir déjà eu ce probleme sur d'autre lib qui etait causé par l'oublie de la dll dans le repertoire ...\Win32\Debug.
    je suis étonné de ne pas avoir trouvé de .lib et de .dll à ajouter au projet
    Si quelqu'un pourrait me confirmé si la demarche est bonne ou si c'est possible sur XE3 , ou encore mieux tester ça serait sympa 1000 Merci d'avance.
    Nicolas
    Bon week-end!

    lien libmodbus 3.0.3

    unit.h
    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
     
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <System.Classes.hpp>
    #include <Vcl.Controls.hpp>
    #include <Vcl.StdCtrls.hpp>
    #include <Vcl.Forms.hpp>
     #include <stdio.h>
    //#include <unistd.h>
    #include <string.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <modbus.h>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
    	TButton *Button1;
    	void __fastcall Button1Click(TObject *Sender);
    private:	// Déclarations utilisateur
    public:		// Déclarations utilisateur
    	__fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif

    unit.ccp
    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
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    	: TForm(Owner)
    {
     
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    unsigned int short *tab_rp_registers;
    modbus_t *ctx;
    int adr=0x6B,nbr= 2;
     
    //modbus_connect(ctx);
    //modbus_write_registers(ctx,adr,nbr,tab_rp_registers);
    }
    //---------------------------------------------------------------------------

  2. #2
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    un bug dans le linker Tlink qui n'accepte pas le signe '-' dans un nom de fichier --> résultat tous les fichiers comportant un '-' ne sont pas additionnés à la lib

    concrètement il suffit de renommer les fichiers

    modbus-data --> modbus_data
    modbus-rtu --> modbus_rtu
    modbus-tcp --> modbus_tcp

    la directive suivante de compilation doit être ajoutée: _WIN32

    ta librairie devrait avoir comme taille la somme de tous les fichiers qui la compose

    les références à #include <unistd.h> doivent être mise en commentaire, car non utilisée par Borland /Embarcadero

    si joint les fichies lib générée en mode Debug et Release

    ne pas oublier la librarie ws2_32.lib dans ton projet

    cdlt
    Fichiers attachés Fichiers attachés
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2013
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Salut,

    Merci et encore merci

    ca marche parfaitement avec la lib que tu as compilé!

    Seul soucis , j'ai essayé de créer la libmodbus.lib mais pas moyen.


    1. Donc toujours dans le meme projet j'ai donc modifié tous les "-" par des "_" partout (y compris evidemment dans les .c et à l'interieur des .h)

    2. integration de #if defined(_WIN32)
    #include <windows.h>
    #endif
    Dans le modbus.h

    3. tous les #include <unistd.h> sont en commentaire

    4. le "ws2_32.lib"(13ko) a été ajouté au projet (j'ai essayé aussi avec l'autre qui est dans le repertoire ...\psdk\ws2_32.lib (6.06ko))



    Y'a t-il une manip particulière pour générer ce .lib ?
    desolé de mon ignorance
    J'ai toujours eu des .lib et .dll à intégrer au projet (toutes finies), ça m'interresserait vraiment de savoir, si tu pourrais me detailler un peu comment tu as generé ce .lib

    j'ai vu sur ce lien qu'il faut déjà voir que l'option du lieur soit active , mais j'ai rien trouvé dans projet\option\lieur c++ pour Generate .LIB File
    j'ai bien mis un répertoire "option\C++ (option partagées)\sortie Bpi/lib mais rien qui arrive dedans et tant que j'inclus pas la lib que tu as creer toujours la même erreur


    Merci d'avance bon dimanche

  4. #4
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Salut
    non rien de special
    il faut toutefois ajouter le fichier config.h qui est une copie de config.h.in
    ci-joint mon makefile du projet , les sources modifiées, ainsi que 2 applications de test

    Le fichiers .cprojet et .cbproj.local ont été réalisés sous RadStudio 2010
    cdlt
    Fichiers attachés Fichiers attachés
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2013
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Le Problème peut être résolu grace à ton aide et ta patience
    Vraiment MERCI pour tout
    Franchement sans ton aide je n'aurais jamais pus faire ça!!
    Je te souhaite bonne continuation!

    bonne soirée
    Cdlt
    Nicolas

  6. #6
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2013
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Modbus sous Windows
    Bonjour,
    Dans le cadre d'un projet, je suis entrain d'implémenter le protocole modbus Tcp client/serveur
    Mon serveur est sure le raspbian de la carte raspberry Pi et mon client est une interface homme machine développé sous Qt sous Windows.
    J'ai réussi à installer libmodbus sous Raspbian mais pas sous windows
    Y a -t- il quelqu'un qui peut m'aider?
    Je vous remercie d'avance

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique (Débutant)
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique (Débutant)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    Citation Envoyé par ihsen-b Voir le message
    J'ai réussi à installer libmodbus sous Raspbian mais pas sous windows
    Y a -t- il quelqu'un qui peut m'aider?
    As tu réussi finalement à installer libmodbus ? Je n'y arrive pas non plus..

    Cordialement,

    NazOok.

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

Discussions similaires

  1. Intégration de code c++
    Par Raoul le perdu dans le forum MFC
    Réponses: 2
    Dernier message: 24/02/2004, 08h54
  2. intégration de sons
    Par pal200 dans le forum OpenGL
    Réponses: 2
    Dernier message: 09/02/2004, 11h17
  3. [MFC][Excel] Intégration excel et MFC!
    Par fadoua dans le forum MFC
    Réponses: 2
    Dernier message: 22/12/2003, 10h51
  4. [NETBEANS] Intégration de Jboss dans NetBeans
    Par Kleb dans le forum NetBeans
    Réponses: 1
    Dernier message: 09/06/2003, 18h45

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