|
|
||||||||||||||||||||||||
|
Contourner le bug du contrôle liaison série de eVB Le contrôle liaison série
de eVB semble très mal fonctionner lorsqu'on l'utilise avec l'IRDA.
En effet, il envoie bien les données mais impossible de recevoir
les réponses, le buffer d'entrée reste désespérément
vide. Ce problème a été plusieurs fois évoqué
sur le forum eVB de
J'ai donc décidé de créer une petite DLL pour contourner le problème. Cette DLL fonctionne parfaitement avec l'IRDA mais pour le moment a des problèmes avec les ports com classiques (c'est un comble non ?). Je publie qu'en même la DLL dans cette version pour que ceux qui ont le problème avec l'IRDA puissent commencer à l'utiliser en attendant la version finale (appauvrie en bugs).
Cette DLL publie 4 fonctions que l'on déclare sous eVB de la manière suivante : Declare Function SerialOpen Lib "VBSerial.dll"
(ByVal pPort As String, ByVal pBaudRate As Long, ByVal pParity As String,
ByVal pStopBits As String) As Boolean Declare Function SerialClose Lib "VBSerial.dll"
() As Boolean Declare Function SerialWrite Lib "VBSerial.dll"
(ByVal wOutput As String) As Boolean Declare Function SerialRead Lib "VBSerial.dll"
(ByVal wBuffer As String, ByVal wMaxSize As Long) As Boolean Declare Function SerialInBufferCount Lib "VBSerial.dll" (ByRef wSize As Long) As Boolean
Il faut utiliser cette fonction pour ouvrir le port de communication. Elle retourne True si la fonction arrive à ouvrir le port avec les paramètres demandés. Cette fonction prend 4 paramètres :
Lorsque vous avez terminé d'utiliser le port série ouvert avec la fonction "SerialOpen", il faut le fermer. Cette fonction ne prend pas de paramètre. Elle retourne True si la fermeture est possible.
Cette fonction permet de lire le contenu du buffer d'entrée. Si il n'y a rien à lire la chaine placée en entrée n'est pas modifiée. Si la lecture est possible cette fonction retourne True.
Il est important de signaler que wBuffer doit être "préchargé" afin d'allouer assez de place mémoire avant de l'utiliser comme paramètre de cette fonction : Dim wBuffer As String
Dim k As Integer
wBuffer = String(1000, Chr(0))
If SerialRead(wBuffer, 1000) Then
k = InStr(wBuffer, Chr(0))
If k > 0 Then wBuffer = Mid(wBuffer, 1, k - 1)
If wBuffer <> "" Then MsgBox wBuffer
Cette fonction permet d'envoyer des caractères sur la liaison série. Il suffit de passer en paramètres la chaine à envoyer. Si l'écriture réussit elle retourne True.
N'hésitez pas à utiliser les services du forum dédié aux DLLs pour eVB si vous rencontrez des problèmes avec cette DLL ou sa mise en oeuvre. |
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
|
Copyright 2001-2004 - Tous droits réservés
|
||||||||||||||||||||||||
|
iPAQ
est un produit de COMPAQ.
|