Port série

barbichou1965 Messages postés 3 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 27 mai 2008 - 27 mai 2008 à 11:22
cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 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 ?

@+ ;)

1 réponse

cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
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
 
0
Rejoignez-nous