Kit de développement Client Comm/IP: questions/réponses

Kit de développement Client Comm/IP: questions/réponses

Messagepar jpp38 » 17 Juin 2014, 20:38

J'ai mis sur le site, en section "téléchargement", un zip du kit de développement, qui fournit:
- la description du protocole de base
- la description de l'interface de programmation, qui permet de na pas avoir à descendre dans le détail du protocole (assez compliqué à gérer).
- Un exemple en C de client simple.

C'est évidemment un premier jet. On adaptera au fur et à mesure, en fonction de l'intérêt, s'il y en a un, et des besoins particuliers.

En attendant, n'hésitez pas à poser vos questions.

Xavier, tu m'avais parlé de l'adaptation au basic: on peut en discuter.

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Kit de développement Client Comm/IP

Messagepar Xavier » 19 Juin 2014, 19:33

Bonsoir JP,

Effectivement, j'avais abordé le sujet lors de l'exposition de Noyarey.
Je viens donc d'installer la version 5.02 ainsi que le Kit de développement Client Comm/IP. J'ai ensuite lancé Visual Basic Express 2010, crée un nouveau projet, IPC_Test, puis j'ai voulu ajouter une référence.
J'ai placé CDM_IPC.dll dans le répertoire des sources, à coté des autres .vb et .resx, puis, après avoir indiqué CDM_IPC.dll j'ai essayé de valider... :(
Ce qui me donne le message suivant:

"Une référence à
'C\Users\...\IPS_Test\IPC_Test\CDM_IPC.dll' n'a pas pu être ajoutée. Vérifiez que ce fichier est accessible et qu'il s'agit d'un assembly ou d'un composant COM valide"

Je suis donc en rade!

Amicalement,

Xavier
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Re: Kit de développement Client Comm/IP

Messagepar jpp38 » 19 Juin 2014, 21:11

Bonjour Xavier,

Ca m'aurait étonné que ça se puisse se faire aussi simplement que ça.
Je pense qu'il va falloir essayer déjà de comprendre comment VB gère les DLL.

A mon avis la façon la plus sûre d'y arriver serait de travailler plus au niveau des fichiers objet, donc au niveau du linker.

Malheureusement, je n'ai pas le temps de m'en occuper pour le moment. On verra plus tard.

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Kit de développement Client Comm/IP

Messagepar gily » 02 Août 2014, 10:00

Bonjour

Il faut mettre la dll dans windows/system32 (je suis en Windows XP). Quant à moi, la dll est bien trouvée, le programme se compile bien, mais à l'exécution il me sort se message:

"le point d'entrée de la procédure IPC_StartClient est introuvable dans la bibliothèque de liaisons dynamiques CDM_IPC.dll"
mais aussi de toutes les autres fonctions.....

Ha oui j'oubliais de dire que je travaille en Delphi 7 :roll:

Après avoir "décompilé" la dll (désolé jpp :lol: ) je m'aperçois que les noms de fonctions ne sont pas les mêmes que dans la doc!
exemple dans la doc : IPC_StartClient() mais dans le fichier DLL c'est IPCL_startClient qui est référencé.

voici un bout du code:
function IPCL_StartClient(hwnd:tform;nClientType:integer) : boolean ; external 'CDM_IPC.dll'
function IPCL_StopClient(hwnd : Tform) : boolean ; external 'CDM_IPC.dll' ;
function IPCL_Version(version : string) : string; external 'CDM_IPC.dll' ;
(..)
result:=IPCL_StartClient(form1,0) ;
if result then memo1.Lines.Add('fonction ipcstartclient ok');
version:=IPCL_version(version);


hélas, le result est toujours faux...

Bon je cherche :respect1:
gily
 
Messages: 1130
Inscrit le: 25 Juillet 2014, 14:32
Localisation: nord

Re: Kit de développement Client Comm/IP

Messagepar jpp38 » 03 Août 2014, 14:35

Bonjour,

Il y a deux façons d'aborder l'intégration:

- soit on utilise directement les points d'entrée de la DLL, et alors les noms sont bien ce que tu dis, à savoir IPCL_StartClient(), ....
- soit on utilise un wrapper d'appel pour simplifier tout le Saint-Frusquin lié à l'importation des DLL: ce sont les fonctions IPC_StartClient().
C'est cette surcouche qui fait l'objet de la documentation.

J'ai personnellement pris l'option de proposer le wrapper, plutôt que la DLL: moins "technique" à utiliser. Et c'est à ce wrapper que la doc. se réfère.
La meilleur façon de voir comment est utilisée la DLL est de lire le code des modules cl_ipc.c dont c'est exactement la fonction, ainsi que le module cl_ipc_dll.h.

Le kit est fait pour une utilisation simple dans le cas du langage C, et (à vérifier) C++. Dans le cas d'autres langages, mon idée était plutôt d'essayer de réutiliser le code objet de cl_ipc.c (cl_ipc.o), au niveau du linker, le problème étant évidemment d'adapter la mécanique de passage des arguments de fonctions, pour retomber sur le conventions du C.


Cela dit, si tu tiens vraiment à descendre au niveau de la DLL, je peux te donner le source, ça ne me gêne absolument pas. Par contre, il n'y a pas de doc. à ce niveau (mais c'est évidemment assez proche).


JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Kit de développement Client Comm/IP

Messagepar gily » 04 Août 2014, 10:45

bonjour

je pense m'en sortir avec toutes tes docs et d'autres aussi. Mais c'est vrai que maintenant en intégration informatique, on est de plus en plus
"multicouché'"... :mrgreen: Avec toutes les documentations, il faut faire le lien entre la doc et la couche que l'on souhaite traiter le projet, et aussi
à quel niveau on veut travailler (bas niveau ou en utilisant des outils tous faits"...

Je te confirme que ta dll fonctionne pour le delphi7 après avoir adapté l'appel des fonctions. Je n'ai pas encore reçu mon interface
lenz ethernet usb pour faire mes essais mais j'ai hâte.!!!

Bonne journée :)
gily
 
Messages: 1130
Inscrit le: 25 Juillet 2014, 14:32
Localisation: nord

Re: Kit de développement Client Comm/IP

Messagepar jpp38 » 04 Août 2014, 14:42

Bonjour,

En fait, le GROS problème de passer au niveau de la DLL, c'est la gestion des CALLBACKs. Il y a une fonction unique qui est le pivot de tous ces callbacks: c'est IPCL_GetMessages. Mais lorsqu'un message est rapatrié par cette fonction, il faut le décortiquer en fonction des différents champs du protocole Comm/IP.
C'est ça qui est très lourd.
La surcouche permet de s'affranchir de cette récupération de paramètres.

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Kit de développement Client Comm/IP, en C

Messagepar EMA883 » 08 Août 2014, 23:23

Bonsoir,
j'ai échangé avec Xavier sur le générateur de sons et j'aimerai l'aider sur cette initiative,
la com entre CDM et le Générateur n'est pas encore opérationnelle, je vais donc suivre ce sujet avec intérêt.

Merci pour tout le travail accompli :thanku:
Bonne continuation!
Eric
Echelle HO
PC sous W10 avec carte interface RS 232
Centrale Intellibox 650
Retosignalisation S-88 / Arduino
Moteurs d'aiguilles servo / Arduino
EMA883
 
Messages: 171
Inscrit le: 23 Juin 2012, 15:52
Localisation: La Seyne sur mer (sur la ligne Marseille - Vintimille)

Re: Kit de développement Client Comm/IP, en C

Messagepar gily » 15 Août 2014, 14:15

Bonjour

Je suis en train de vouloir exploiter l'interface comIP en delphi, j'ai dû recréer le wrapper en delphi. Les adaptations ne sont pas toujours aisées mais j'ai carrément traduit le code ainsi que les variables et les types, çà m'a pris 3 jours :geek: !!

Maintenant j'en suis au point d'ouvrir le client et bien sur j'ai le message impossible de démarrer le client IPC, alors que côté CDM rail le serveur commIP est démarré avec les paramètres suivants (192.168.1.20/port 9999). C'est l'@ip de mon PC.

(Avec le logiciel test IPC_Client1.Exe çà fonctionne évidemment avec les mêmes paramètres.)

J'ai un doute sur un point:
j'ouvre la fonction IPCL_Startclient en remplissant la structure à renseigner: (c'est un extrait de la fonction IPC_StartClient)

function IPC_StartClient(hMainWnd:hwnd;nClientType:integer ) : boolean;
(....)
xIPCDllDesc.hMainWindow := hMainWnd ;
xIPCDllDesc.bClientStarted := FALSE;
xIPCDllDesc.bServerStarted := FALSE;
xIPCDllDesc.nNbErrors := 0;
xIPCDllDesc.sHostName:= StrToC('192.168.1.20') ; (strtoC convertit une chaine delphi en normalisation C)
xIPCDllDesc.nPortNum :=9999;
if IPC_LoadLibrary <-ici c'est ok
then
begin
xIPCDllDesc.bClientStarted :=IPCL_StartClient(Form1.Handle,xIPCDllDesc);

(...)

j'ai remplacé directement sHostname en mettant directement l@IP, j'ai essayé aussi avec le hosname de mon PC mais la fonction IPCL_StartClient me renvoie toujours 0 au lieu de 1. Donc je me demande si c'est comme çà qu'on renseigne l'adresse ou se trouve le serveur.....???
Info: c'est la DLL elle même qui me renvoie une boite de dialogue écrite en anglais "unable to connect to server"

Ensuite il y a une autre possibilité, la DLL "CDM_IPC.dll" utilise t-elle la pile pour passer les paramètres des fonctions ou les registres (j'ai que la méthode du passage par la pile qui ne plante pas mon soft donc je pense que c'est exact)

Autre chose , j'ai juste essayé la fonction ICPL_Version ,et elle me renvoie bien la version dans une chaîne, donc l'interfacage avec la dll est correcte.

VOilà, en attendant je continue mes recherches ;)
Dernière édition par gily le 15 Août 2014, 22:44, édité 1 fois au total.
gily
 
Messages: 1130
Inscrit le: 25 Juillet 2014, 14:32
Localisation: nord

Re: Kit de développement Client Comm/IP, en C

Messagepar gily » 15 Août 2014, 22:41

Bonjour!!

Bon j'ai vraiment tout essayé pour démarrer le client avec mon prog en delphi mais impossible. j'ai même commencer à tracer la DLL à la fonction ICPL_StartClient mais il n'y a pas les symboles intégrées pour le débuggage et c'est donc plutôt difficile. J'ai quand même vu mes paramètres de fonction dans la pile, donc de ce côté c'est correct. Maintenant est ce que ces paramètres sont dans le bon ordre, dans le bon format... :roll:

Je pense que les transtypages entre Delphi et C ne sont pas toujours compatibles à 100%, notamment en ce qui concerne les structures.

JPP je voudrais donc te demander s'il est possible d'avoir le source de la dll et/ou d'avoir une version de la dll avec symboles pour le débuggage intégré...
Celà me permettrait d'avancer.


Merci beaucoup :D
gily
 
Messages: 1130
Inscrit le: 25 Juillet 2014, 14:32
Localisation: nord

Suivant

Retourner vers Fonctionnement en réseau: Comm/IP

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron