Appel de dll

cs_Pascalbo
Messages postés
16
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
1 février 2005
- 18 janv. 2005 à 16:08
cs_Pascalbo
Messages postés
16
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
1 février 2005
- 20 janv. 2005 à 20:42
Bonjour,
je cherche à appeler depuis C# une fonction en dll dont la déclaration en C est la suivante:

I2COpen(hWnd, // Application Window Handle
hALInstance, // Application Instance
&i2c) // I2C Link Property Struct

La structure i2c est de la forme:
i2c.comport = 1;
i2c.WmMsgNo = WM_USER;
i2c.pfCBF = NULL; // Application Callback Function Address.
i2c.pcLogFileName = "log.txt";

Je coince un peu au niveau de la déclaration dans C#:
[DllImport("i2c32200.dll")]
private static extern int I2COpen (...

ensuite comment déclarer la structure et finalement appeler la fonction.

Merci.

28 réponses

cs_Pascalbo
Messages postés
16
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
1 février 2005

20 janv. 2005 à 19:04
Le seul endroit où je vois <valeur non définie> est la ligne:

-$exception
- System.SystemException
- System.Exception
- _exceptionMethod <valeur non définie>

Ca ne me dit rien du tout et toi ?
0
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
20 janv. 2005 à 19:07
non
execute ton appli en debug et ragarde les valeurs des éléments utilisés sur la ligne qui provoque l'erreur

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_Pascalbo
Messages postés
16
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
1 février 2005

20 janv. 2005 à 19:27
Je ne vois pas comment procéder, normalement je lance l'appli (par ex. avec F5) et soit il y a un point d'arrêt, soit c'est une exception qui survient.

Peux-tu me préciser la manière de faire ?

Merci de ta patience.
0
MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
57
20 janv. 2005 à 19:32
Met un point d'arret, ou lance l'appli avec F11 pour du pas a pas.

Ensuite, ajoute un espion sur la variable ou l'objet que tu souhaites
(tu fais un clic droit dessus, "Ajouter espion"), puis continue
d'executer ton application en pas a pas, et comme ca, tu peux controler
la valeur des variables que tu souhaite.


Mx
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
20 janv. 2005 à 19:36
huuum
Tu utilises quel IDE ?

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_Pascalbo
Messages postés
16
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
1 février 2005

20 janv. 2005 à 20:02
MS visual studio 2003

Bon en fait c'est bien ce que je fais.
Ca plante à l'appel de la dll (ligne I2COpen).

public int OuvreI2C(byte PortCom, byte SlaveAdresse, IntPtr HandleAppli)
{
IntPtr hInst= Marshal.GetHINSTANCE(this.GetType().Module);


I2CStruct MonI2CStruct= new I2CStruct();
MonI2CStruct.comport= 6; //PortCom;
MonI2CStruct.WmMsgNo= 0;
MonI2CStruct.pfCBF= IntPtr.Zero;
MonI2CStruct.pcLogFileName= "toto.txt";
MonI2CStruct.LogFileLevel= 0;
MonI2CStruct.LogFileSize= 1000;
MonI2CStruct.HostSlaveAddr= 0xFE; //SlaveAdresse;
MonI2CStruct.BusTimeOut= 1000;
MonI2CStruct.MasterBitRate= 2;
MonI2CStruct.MasterRxBufSize= 13684;
MonI2CStruct.MasterTxBufSize= 16385;
MonI2CStruct.MasterArbRetry= 0;
MonI2CStruct.SlaveRxGCEnable= 0;
MonI2CStruct.SlaveRxBufSize= 100;
MonI2CStruct.SlaveTxBufSize= 0;


int Retour= I2COpen( // Open Link to iPort. Return on Error or Complete
HandleAppli, // App Window Handle
hInst, // App Instance
ref MonI2CStruct); // iPort Property Structure*/
return Retour;
}
0
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
20 janv. 2005 à 20:33
ba donc si sur une exception tu entres bien en debug et qu'il t'amene sur cette ligne, verifie les valeurs des parametres de I2COpen, tu as juste a passer le curseur dessus (et au pire à les ajouter à un espion)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_Pascalbo
Messages postés
16
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
1 février 2005

20 janv. 2005 à 20:42
Tout semble correct: la structure est bien remplie, les handles fenêtre et instance aussi, je ne vois rien qui cloche.

J'arrête pour aujourd'hui, à demain.
0