PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV Mobile 2024 → [WM12] Utilisation d'assembly .Net
[WM12] Utilisation d'assembly .Net
Iniciado por Gautier Cuquemelle, 24,feb. 2009 11:47 - 7 respuestas
Publicado el 24,febrero 2009 - 11:47
Bonjour,

Je recherche à utiliser un objet d'un assembly .Net (écrit en C#): j'ai rajouté l'assembly dans mon projet Windev "Atelier -> .Net -> Utiliser un assemblage .Net".

Je peux créer un objet et l'instancier:

gpclScanCtrl est un objet ScannerControl dynamique
gpclScanCtrl=allouer un ScannerControl()


Mais je n'arrive pas à récupérer les évènements venant de cet objet... Windev a ajouté une méthode "add_ScannerDataEvent" à mon objet mais je n'arrive pas à trouver l'équivalent d'un "Delegate" sous Windev à lui passer en paramètre, et je n'arrive pas non plus à utiliser un objet "Delegete" venant de l'assembly : je ne passe pas les bons paramètres...

J'ai essayé:
gpclScannerData est un objet ScannerDataDelegate dynamique
gpclScannerData=allouer un ScannerDataDelegate(&OnScan)

(OnScan est une procédure locale, j'ai essayé avec une procédure globale et une méthode d'une classe définie dans Windev, sans succès).

Est-ce que quelqu'un a déjà été confronté à ce genre de problème, ou a déjà récupéré un évènement venant d'un assembly .Net ?

Merci d'avance !
Gautier
Publicado el 24,febrero 2009 - 15:07
Bonjour Gautier,

J'intègre régulièrement des assemblages.net dans mes projets WD.
J'ai été confronté à ce genre de problème.
Je reconnais que ce n'est pas facile. J'ai exploré différentes pistes avant d'y arriver.

Je peux vous faire un exemple avec ZEDGRAPH.DLL.
Ce serait mieux si vous m'indiquiez l'assemblage que vous voulez utiliser.

Cordialement
JJ. CONFAIS
Publicado el 24,febrero 2009 - 15:57
Bonjour Jean-Jacques et merci pour cette réponse !

L'assembly utilisé s'appelle MCSSLibNet.dll et est fourni par un constructeur de PDA (Mobile Compia) pour piloter le scanner intégré de l'appareil.

L'évènement utilisé est de type un peu particulier (ScannerDataDelegate) mais fonctionne comme tous les autres : lors de son initialisation il faut passer en paramètre une fonction devant gérer l'évènement.

Exemple en C#:

// Initialisation de l'évènement "lecture"
ScanCtrl.ScannerDataEvent += new ScannerDataDelegate(OnScanData);

// Méthode de gestion de lecture du code
private void OnScanData(object sender,ScannerDataArgs e)
{
// Affichage du code lu
MessageBox.Shox(e.ScanData);
}

Tout exemple de code en Windev permettant de gérer un évènement venant d'une classe .Net est le bienvenu...

Merci d'avance !

Gautier
Publicado el 03,marzo 2009 - 15:09
Bonjour Gautier,

Créez une fenêtre "FEN_MCScanner"
Ajoutez un champ de saisie "SAI_VersionInfo"

// Déclarations globales de FEN_MCScanner
gclMonMCScanner est un ScannerControl dynamique

// Initialisation de FEN_MCScanner
gclMonMCScanner=allouer un ScannerControl

gclMonMCScanner:ScanInit()

SAI_VersionInfo..Valeur=gclMonMCScanner:GetVersionInfo()

// Fermeture de FEN_MCScanner
gclMonMCScanner:ScanClose()

Des infos sur la version devraient s'afficher et vous saurez si le scanner est bien initialisé.

J'ai essayé de contacter MOBILE COMPIA pour récupérer la documentation et la DLL utilisée mais je n'ai pas de réponse pour l'instant.

Je suppose que vous disposez de ces éléments. Si vous me les transmettez, je pourrais approfondir mes recherches.

Cordialement.
JJ. CONFAIS
Publicado el 03,marzo 2009 - 16:33
Bonjour,

Mobile Compia est une société Coréenne et il est assez difficile de trouver des informations technique au sujet de leur matériel...

Je vous remercie pour l'exemple que vous venez de poster, mais La partie déclaration et allocation de l'objet ne me pose pas de problème, de même que l'appel à des méthodes de l'objet ou la lecture de propriétés. Le seul point restant obscur est la récupération d'évènements dans mon programme Windev.

Dans un programme en C#, je vais pouvoir écrire une fonction qui sera appelée automatiquement lors de la lecture d'un code. Lors de l'initialisation du scanner, il suffit ajouter la ligne:

ScanCtrl.ScannerDataEvent += new ScannerDataDelegate(OnScanRead);

Ce qui permet d'appeler la fonction "OnScanRead" dès que le lecteur aura décodé un code à barres. La fonction "OnScanRead" va quant à elle afficher dans un champ texte le contenu du code.

Cette gestion d'évènement de lecture permet d'éviter de créer une boucle infinie chargée de contrôler si un code a été lu, mais je ne sais pas si Windev est capable de gérer ce genre d'évènement... Si c'est possible, ils ont bien brouillés les pistes et caché les informations au fin fond d'une documentation oubliée...

J'ai contourné le problème de scanner en appelant depuis mon programme Windev un programme écrit en C# chargé de gérer le pilotage du scanner...

Pour ceux qui cherchent également à piloter la caméra du PDA (modèle M3 sous Windows Mobile 5), sachez qu'il y a un bug (je ne saurais dire à quel niveau): si une image est affichée dans la fenêtre depuis laquelle vous appelez le module de prise de photo, l'aperçu de la caméra ne fonctionnera pas. Il faut d'abord effacer l'image, prendre la photo, puis ré afficher l'image:

IMG_MonImage=""
// Appel de la fenêtre réalisant les prises de vues
IMG_MonImage="\MaPhoto.jpg"


Je peux fournir les sources du composant C# redéveloppé à ceux que ça intéresse...

Cordialement,
Gautier
Publicado el 29,julio 2010 - 11:29
Monsieur Cuquemelle bonjour,

Je suis en stage de 3 mois dans une entreprise, et on me donne
à développer une maquette d'un projet d'une interface de gestion
de stock et ce avec un mobile Compia M3. Je suis à la recherche
d'une dll MCSSLib.dll récente car celle livré avec le composant M3
de la LST 71 dont je dispose ne fonctionne pas. Je serais également
intéressé par votre composant.

Merci

Cordialement
Gauthier.
Publicado el 29,julio 2010 - 19:03
Rebonjour à tous.

Je recherche une bonne âme qui pourrait me mailer
la fameuse dll MCSSLib.dll la plus récente possible qui
fonctionne avec le composant Windev et le PDA Mobile Compia M3,
parce que je viens de recevoir un email de l'importateur, et cette DLL
n'existe plus chez eux.

Au secours et merci par avance.

Cordialement
Gauthier.
Publicado el 05,agosto 2010 - 13:18
J'ai trouvé la fameuse dll chez le fabricant asiatique mais cela ne fonctionne pas mieux.