barbichou1965
Messages postés3Date d'inscriptionmercredi 4 avril 2007StatutMembreDernière intervention27 mai 2008
-
27 mai 2008 à 11:22
cs_Megafan
Messages postés389Date d'inscriptiondimanche 7 avril 2002StatutMembreDernière intervention23 septembre 2016
-
27 mai 2008 à 11:50
Salut,
dans le cadre de mon apprentissage sur vb express edition 2008, j'ai créé une petite application de communication par port série entre 2 pc
pas de souci de connection ou déconnection du port ou de lecture et envoi de données sur le port
pour recevoir les données, j'utilise le code suivant :
'données reçues par le port com
Private
Sub
reception(
ByVal
sender
As
Object
,
ByVal
e
As
System.IO.Ports.SerialDataReceivedEventArgs)
Handles
serialPort.DataReceivedTextBox1.Invoke(
New
delegation(
AddressOf
updateTextBox),
New
Object
() {})
End
Sub
'délégation et mise à jour de la fenêtre d'information textbox
Public
Delegate
Sub
delegation()
Public
Sub
updateTextBox()
With
TextBox1.AppendText(serialPort.ReadExisting)
.ScrollToCaret()
End
With
End
Sub
jusque là tout roule mais je voudrais mettre en place un systeme de réponse automatique lorsque la connection est en cours
ex: données reçues sur le port com "salut"
réponse automatique "salut" et ainsi de suite en fonction des données reçues
j'ai pensé utilisé public event ou privat event mais ça ne marche pas ou je me plante
une idée de code pour réaliser ceci ?
cs_Megafan
Messages postés389Date d'inscriptiondimanche 7 avril 2002StatutMembreDernière intervention23 septembre 20162 27 mai 2008 à 11:50
Salut,
Ayant fait ce genre de projet, je te conseille de créer une classe avec un objet SerialPort declaré comme suit :
Private
WithEvents SerialPort
As
New IO.Ports.SerialPort
Tu pourra alors faire remonter des evenements à ta Form depuis la classe.
Je te conseille de stocker les caractères qui arrivent dans un buffer et de detecter une fin de trame (VBCrLf par exemple)
Dès lors tu raise ton event, et tu renvoi ton ACK à l'autre PC (attention de ne pas envoyer exactement la meme trame, sinon ca va tourner en rond)
@+
Megafan