VB.NET SerialPort Baudrate non standard

space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008 - 31 mai 2007 à 17:58
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008 - 2 juin 2007 à 13:01
Bonjour,

je debute en VB.NET ..
mon appli commence à tourner pas mal !.. suis super content ! :=)

dans mon appli, j'utilise un SerialPort pour communiquer avec mes cartes electroniques.
pour configurer la vitesse du port,  je fais un " serialport1.baudrate = 115200 "

nickel, ca fonctionne à 115200 bps ...

Mais la, je souhaites utiliser un baudrate non standard .. n'importe quelle valeur telle que 125000 par exemple .. ou 78932 ..

je sais que c'est possible, car j'ai un petit utilitaire qui le fait ..
mais VB à priori, ne le permet pas tel quel, avec les methodes basiques disponibles :(

Aurriez vous, svp, une solution ?

merci... et felicitations a tous pour ce site .. une mine d'or pour un debutant comme moi
Space_Walker

10 réponses

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
1 juin 2007 à 09:20
Bonjour,
Quand tu dis que VB ne le permet pas, qu'entends-tu par la ? As-tu une exception qui est levée ?
0
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
1 juin 2007 à 12:58
alors la .... pour repondre à ta question ( savoir quelle exception ca levé ), je viens de relancer mon projet ..
et la, ca semble fonctionner !!! ( je dois verifier si reelement mes données sont bien transferées avec le bon baudrate, mais ca ne me genere pas d'erreur dans mon appli !!!

t'immagine bien que hier soir, en postant mon message, ca ne fonctionnait pas !!..
juste un rallumage du PC à l'instant pour consulter le forum et relancer mon projet ..

je verifie ce soir la vitesse reelle de mes données !...

pour toi, ca ne doit pas poser de probleme un baudrate non standard ?
merci
0
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
1 juin 2007 à 13:06
ah .. le probleme .. ! :
voici mon bout de code :

Private
Sub Button_Connexion_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button_Connexion.Click

' on vérifie qu'il n'y ait pas d'erreur (exemple : un port COM ne peut pas être ouvert 2 fois, si une application l'utilise déjà, celà lèvera une exception)

If Button_Connexion.Text =
"Connexion"
Then

Try
'SerialPort1.BaudRate TextBox_BaudRate.Text ' définit la vitesse en bauds du port sérieSerialPort1.BaudRate 115200

SerialPort1.DataBits = 8

' définit la longueur standard des bits de données par octetSerialPort1.Parity = Parity.None

' définit le protocole de contrôle de paritéSerialPort1.StopBits = StopBits.One

SerialPort1.PortName = ComboBox_ComPort.Text

' on ouvre le port choisis dans le comboboxSerialPort1.Open()
Button_Connexion.Text "Déconnexion"ComboBox_ComPort.Enabled

False' on désactive le comboboxTextBox_BaudRate.Enabled FalseButton_Send.Enabled

True
' on active le bouton SENDProgressBar1.Value = 0

' On initialise la ProgressBar.

Catch ex
As Exception
' on récupère l'erreur et on l'afficheMsgBox(

"Port inutilisable")

End
Try

ElseButton_Connexion.Text =

"Connexion"SerialPort1.Close()

' on ferme le portComboBox_ComPort.Enabled =

True' on réactive le comboboxTextBox_BaudRate.Enabled TrueButton_Send.Enabled

False
' on desactive le bouton SEND

End
If

End
SubEnd

Class
**********************************************************************************

si je passe la vitesse par :'SerialPort1.BaudRate = TextBox_BaudRate.Text '
alors la, ca plante si la vitesse n'est pas standard.

si je passe la vitesse par :'SerialPort1.BaudRate = 125000 '
la ca marche ( a verifier la vitesse reelle avec le scope ce soir )

bizarre !
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
1 juin 2007 à 13:32
Il n'y a aucune raison que cela plante en passant le contenu de ton textbox à moins qu'il n'y ai des caractères non numériques.

Essai de cette facon la en convertissant le contenu en type entier
Dim iBr as Integer = -1
Integer.TryParse(TonTextBox.Text, iBr)

et vérifie la valeur qu'a prit iBr si 0 c'est que ton TextBox contient des caractères non numériques.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
1 juin 2007 à 17:38
je viens de rallumer le PC ..
et la ... marche pas :(

je crois que ca a bien voulu s'initialiser la 1iere fois à 125000bps ( mais j'ai pas validé la vitesse au scope ) ..
et puis maintenant, ben ca refuse toute valeur non standard !!

j'ai verifié, iBr prend bien la valeur de mon baudrate rentré dans mon textbox.
je passe donc bien une valeur entiere.
mais surtout que maintenant, meme si je fais SerialPort1.BaudRate = 125000
ben ca marche plus .. ca me genere le message "Port inutilisable" et dans VB, j'ai un
"Une exception de première chance de type 'System.IO.IOException' s'est produite dans System.dll
"

1/ d'apres toi, le composant SerialPort accepte toute valeur de baudrate ?.. j'arrive pas à trouver la contre verité sur MSDN ..

merci de ton aide
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
1 juin 2007 à 18:45
Non l'objet SerialPort ne supporte pas des valeurs non-standard.
Le programme que tu utilises doit passer par son propre driver de port com pour ouvrir une connexion avec un baudrate non-standard, voila pour la petite histoire.

++
0
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
1 juin 2007 à 22:31
ah .. :(

cette derniere reponse aurrait "simplifié" le probleme ..

merci
0
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
2 juin 2007 à 00:36
je cherche.. je cherche, mais je ne trouve que des applications ( ou alors je ne comprend pas bien comment je pourais m'en servir dans vb.net ..? )

par exemple, ici :

http://www.compt.ru/serial-port-monitor/en/index.php




il est clairement dit : "You can change communications chanel's settings easily including setting of non-standard baudrate."

il existe bien une API ( ou un truc du genre ) qui va me permettre de finir mon appli ..? please ? !

merci
0
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
2 juin 2007 à 09:44
0
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
2 juin 2007 à 13:01
oui j'ai lu la page de Microsoft ..

mais alors que penser de ca :

http://www.wcscnet.com/SIComm.htm
      "Baud rates up to 115K, and support for user defined. "

ou bien de :

http://www.compt.ru/en/index.php
    "You can change communications chanel's settings easily including setting of non-standard baudrate."

car ce que je veux, c'est pouvoir utiliser tous les deviseurs entier .. tout simplement !
je comprend pas bien ce qui empecherait de faire ca !...
pour obtenir 115200bps, VB utilise un diviseur ..
pourquoi je ne pourrais pas specifier ce diviseur plustot que de specifier un baudrate !!..??
0
Rejoignez-nous