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 :ccool: 1000 Merci d'avance.
Nicolas
Bon week-end!
lien libmodbus 3.0.3
unit.h
Code:
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:
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);
}
//--------------------------------------------------------------------------- |