OVH Cloud OVH Cloud

Port Serie sous NT/XP avec VB

1 réponse
Avatar
DkNukMe
Salut, j'ai un probleme quand j'utilise la fonction API=20
WaitCommEvent sous un systeme XP avec Excel ds le langage=20
VBA. L'erreur 996 =3D ERROR_IO_PENDING apparait a chaque=20
fois. Avant d'appeler la fonction, je la configure comme=20
il suit :

DIM o, async As OVERLAPPED
DIM nbwrite, test As Long
DIM nil As SECURITY_ATTRIBUTES
DIM myDCB As DCB
=20
ret =3D SetCommMask(Open_port, (EV_TXEMPTY Or=20
EV_RXFLAG))
o.hEvent =3D CreateEvent(nil, False, False, "emission")
o.Internal =3D 0
o.InternalHigh =3D 0
o.Offset =3D 0
o.OffsetHigh =3D 0
ret =3D ResetEvent(o.hEvent)

Je transmet le caractere sur le port serie avec la=20
fonction WriteFile comme il suit ...
... ret =3D WriteFile(hCommFile, &H5, 1, nbwrite,=20
async) ...

Et j'attend l'evenenement ds la variable test mais le=20
resultat est toujours nul et l'erreur qui en resulte est=20
de code 996.
ret =3D WaitCommEvent(hCommFile, test, async)


Sinon, je n'arrive pas non plus a transmettre=20
correctement le caractere ... seulement 7 bit sur 8 sont=20
emis, et le bit de parit=E9 ne sort pas non plus alors que=20
je l'ai configurer pour avoir ue parite paire.
=20
Open_port =3D CreateFile(port, GENERIC_WRITE, 0&, nil,=20
OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0)

ret =3D GetCommState(Open_port, myDCB)
myDCB.DCBlength =3D LenB(myDCB)
myDCB.BaudRate =3D 1200
myDCB.bytesize =3D 8
myDCB.parity =3D EVENPARITY
myDCB.StopBits =3D ONESTOPBIT
'myDCB.fOutxCtsFlow =3D False
myDCB.fOutxDsrFlow =3D False
myDCB.fDtrControl =3D DTR_CONTROL_DISABLE
myDCB.fRtsControl =3D RTS_CONTROL_DISABLE
If SetCommState(Open_port, myDCB) =3D 0 Then GoTo=20
Open_Port_Error
=20
ret =3D WriteFile(hCommFile, &H5, 1, nbwrite, async)

Merci de votre aide

1 réponse

Avatar
François Picalausa
Hello,

je n'ai pas la réponse spécifique à ton problème mais la ligne
DIM o, async As OVERLAPPED


déclare o en tant que variant.
Si tu le veux OVERLAPPED, je te conseille
Dim o As OVERLAPPED, async As OVERLAPPED

De même
DIM nbwrite, test As Long


déclare nbwrite en Variant.

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"DkNukMe" a écrit dans le message de
news:1162f01c4418d$6ec6c110$
DIM o, async As OVERLAPPED
DIM nbwrite, test As Long