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 sympa1000 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); } //---------------------------------------------------------------------------
Partager