cs_andrealphus
Messages postés46Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention21 décembre 2004
-
15 mai 2003 à 11:03
cs_andrealphus
Messages postés46Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention21 décembre 2004
-
15 mai 2003 à 14:51
[mailto:david.leguillon@voila.fr 4ndr&@lphu$]
voila j'essaie d'importer des fonctions depuis une dll SANS .LIB (donc dynamiquement) mais j'ai un probleme lors de l'utilisation
PS (adressé à BruNews): est ce que tu à fais test que je t'ai demandé ds le dernier mail ???
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 15 mai 2003 à 11:24
bon je fais de suite mais je n'irai pas plus loin car ensuite c'est purement specifique a l'emploi de la dll et ce n'est plus mon probleme.
Je reste dispo pour les questions sur win32.
BruNews, ciao...
void carte_A1010(HWND hWnd)
{
HINSTANCE hDll;
/**************************
chargement de la library
***************************/
hDll = LoadLibrary("idndll.dll");
/*****************************************
obtention des adresses des fonctions
******************************************/
IDN_OpenComm = (IDN_OPENCOMM) GetProcAddress(hDll,(LPCSTR)1);
IDN_CloseComm = (IDN_CLOSECOMM) GetProcAddress(hDll,(LPCSTR)2);
IDN_SetNTDriver = (IDN_SETNTDRIVER) GetProcAddress(hDll,(LPCSTR)32);
/****************************************
déclaration des différents fonctions pour
la connection / déconnection
*****************************************/
TCHAR szMerde[MAX_LOADSTRING];
IDN_DRVOPEN idn_drvopen;
int ixdrv=-1;
unsigned long address=(unsigned long)bnahextodw("378");
long baud=(long) 62500L ;
int err ;
/*******************************************************
installation du driver sur le port parallèle ( adr=378 )
********************************************************/
/* if ((err = IDN_SetNTDriver(address)) != IDN_E000)
{
LoadString(hInst,IDS_MERDE,szMerde,MAX_LOADSTRING);
MessageBox(hWnd,szMerde,"TEST_setntdriver",MB_OK | MB_ICONINFORMATION);
}*/
/*****************************************
réglages des parametres pour la connextion
******************************************/
memset((void *)&idn_drvopen, 0, sizeof(idn_drvopen)) ;
lstrcpy(idn_drvopen.NameDrv, DRV_LPT) ; // parallel port
idn_drvopen.address = address ; // indirizzo driver
idn_drvopen.tiplin = RS485 ;
idn_drvopen.tiput = INTERROGATION ; // tipo di utilizzo
idn_drvopen.baud = baud ; // baud rate
idn_drvopen.parity = NONE ; // parita'
idn_drvopen.bstop = 1 ; // bit di stop
idn_drvopen.wlen = 8 ; // lunghezza parola
idn_drvopen.macch = 1 ; // nome macchina (nodo)
idn_drvopen.nrip = 5 ; // numero massimo ripetizione blocco
idn_drvopen.tim2 = 2000 ; // tempo attesa dato (millisec)
idn_drvopen.tim1 = 2000 ; // tempo attesa ack (millisec)
idn_drvopen.tim4 = 5000 ; // tempo ripresa pallino (millisec)
idn_drvopen.tim3 = 3000 ; // tempo attesa result phase (millisec)
idn_drvopen.tim5 = 4000 ; // tempo attesa fifo libera per us1307 in giri di loop (2000 ok)
idn_drvopen.tim6 = 4000 ; // tempo attesa ack sulla fifo per us1307 in giri di loop (2000 ok)
idn_drvopen.tim7 = 4000 ; // tempo attesa dato sulla fifo per us1307 in giri di loop (2000 ok)
idn_drvopen.tim8 = 4000 ; // tempo attesa result ph in fifo per us1307 (millisec)
idn_drvopen.tim9 = 1 ; // count per ritardo a loop
/***************************
ouverture de la transmission
****************************/
/*if ((err = IDN_OpenComm(&idn_drvopen)) != IDN_E000)
{
LoadString(hInst,IDS_MERDE,szMerde,MAX_LOADSTRING);
MessageBox(hWnd,szMerde,"TEST_open_connection",MB_OK | MB_ICONINFORMATION);
}*/
ixdrv = idn_drvopen.ixdrv ; // library index
/***************************
fermeture de la transmission
****************************/
/* if ((err = IDN_CloseComm(idn_drvopen.ixdrv)) != 0)
{
LoadString(hInst,IDS_MERDE,szMerde,MAX_LOADSTRING);
MessageBox(hWnd,szMerde,"TEST_close_connection",MB_OK | MB_ICONINFORMATION);
}
ixdrv = -1 ; */
}
le pb c'est qu'il me dit qu'il y a une différence "call convention" entre le pointeur et la fonction. Si t'as la soluce...
hésite pas !
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 15 mai 2003 à 11:44
ici vu que tu mets une adresse en dur:
unsigned long address=(unsigned long)bnahextodw("378");
tu peux aussi bien mettre direct:
unsigned long address= 888;
ou
unsigned long address= 0x378;
BruNews, ciao...
Vous n’avez pas trouvé la réponse que vous recherchez ?