Bonjour à tous


Je suis débutant en programmation Windev. Je suis actuellement entrain de dévelpper un programme sous Windev permettant la communication entre un automate Unitronics V350 et un PC. Pour ce faire le fabricant d’automate met à disposition sur son site www.unitronics.com un fichier dll (UnCmDrv1.dll) ainsi qu’un exemple écrit sous VBA Excel.

Voici un bout du programme écrit sous Excel (ce programme permet l’ouverture du port série COM1):


Private Function prvOpenPort() As Boolean

Dim eComParam As tPC_CommSettings



'Create new instance of the Comm Driver Dll.

Set mComDriver = New UnCmDrv1.clsCommDriver

'Configure the connection parameters.

With eComParam

.Baudrate = eBR_38400

.DataBits = eDB_8

.Parity = eP_None

.StopBits = eSB_1

.TimeOut = 500

.Retries = 3

End With

mComDriver.Comm_Autodetect = True

mComDriver.ShowCommMessages = True

'Opens the com.

prvOpenPort = mComDriver.Comm_Open(Cells(5, 4), eComParam) ‘******Cells(5,4) = 1 numéro du port******

End Function



Voici le programme sous Windev que j’ai écrit ( ou devrais je dire un exemple de la multitude de programme que j’ai déjà essayé sans succés)
(copier/coller d'un fichier texte)


AutomationParamètre(apIndiceBaseTableau = 1)


enBaudRate est une structure

eBR_4800 est un Variant

eBR_9600 est un Variant

FIN


enDataBits est une structure

eDB_7 est un Variant

eDB_8 est un Variant

FIN



enParity est une structure

eP_None est un Variant

eP_Odd est un Variant

FIN



enStopBits est une structure

eSB_1 est un Variant

eSB_2 est un Variant

FIN


tPC_CommSettings est composée de


Baurate est enBaudRate

DataBits est un enDataBits

Parity est un enParity

Retries est un Variant = 3

StopBits est un enStopBits

TimeOut est un Variant = 500

FIN

eComparam est un tableau de 0 Variants

eComparam = [tPC_CommSettings.Baurate.eBR_9600,tPC_CommSettings.DataBits.eDB_8,tPC_CommSettings.Parity.eP_None,tPC_CommSettings.Retries,tPC_CommSettings.StopBits.eSB_1,tPC_CommSettings.TimeOut]


OuvertCom est un booléen

mComDriver est un objet Automation "UnCmDrv1.clsCommDriver"

mComDriver>>Comm_Autodetect = Vrai

mComDriver>>ShowCommMessages = Vrai

OuvertCom = mComDriver>>Comm_Open(1,eComparam)

SI OuvertCom = Vrai ALORS Info("Port Com Ouvert") SINON Info("Ouverture Port COM échouée")


Avec ce programme l’activeX renvoi une erreur : 80020005 type incorrect pour le paramètre 2 ( a savoir eComparam)

Si je déclare le type tPC_CommSetting comme structure c’ est Windev qui me renvoi une erreur du genre : Variable incompatible avec l’objet automation



J’ai essayé différentes combinaisons avec des tableaux, des structures, des variables composées mais sans succés.

Je joins à ce message l’exemple sous VBA, pour le fichier dll (UnCmDrv1.dll) vous pouver le télécharger sur http://www.unitronics.com/Content.aspx?page=Downloads. Voir COM Object ActiveX .dll



Si vous avez une idée pour résoudre mon problème ?



Merci de votre considération et de votre temps



A bientôt



Sonny BORSOI