UTILISATION DU PORT SÉRIE ET DÉTECTION D'UN MODEM RTC BRANCHÉ SUR L'ORDI
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 2018
-
14 mai 2006 à 14:37
Utilisateur anonyme -
21 mai 2009 à 18:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
bon travail
svp, tu peut mettre ce programme en ZIP
salut2lemonde
Messages postés17Date d'inscriptionjeudi 24 juillet 2008StatutMembreDernière intervention18 mai 2009 5 août 2008 à 12:31
salut;
je veut savoir si je peut recuperer les données reçues d'un buffer dans une table de base se donnée access'et si fesable commant?
salut2lemonde
Messages postés17Date d'inscriptionjeudi 24 juillet 2008StatutMembreDernière intervention18 mai 2009 5 août 2008 à 10:23
salut;
je veut savoir si je veut faire la connexion puis envoyer une donnée et recuperer les données reçues sur le buffer dans une base se donnée?
zn415
Messages postés62Date d'inscriptionsamedi 23 juin 2007StatutMembreDernière intervention21 novembre 2015 24 juin 2007 à 15:38
Et t'il possible d'avoir le projet complet?
BenJ2Tours
Messages postés7Date d'inscriptionmardi 5 juin 2007StatutMembreDernière intervention13 juin 2007 11 juin 2007 à 09:36
J'essaye depuis un petit moment de detecter la reception de donnée sur mon port serie pour l'afficher dans une RichTextBox.
J'ai l'impression que c'est exactement ce que vous faites ici mais moi je n'y arrive pas je pense quue je doit mal declarer mon sous-programme DataReceved.
Quelqu'un pourrais jeter un coup d'oeil.
Private Sub PortRS232_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
Dim Buffer As String = PortRS232.ReadExisting()
'L'évènement DataReceived se situe sur un thread différent que le form, nous devons donc appelé un délégué pour afficher le résultat à l'écran
If Me.InvokeRequired Then
Me.Invoke(New d_Affiche(AddressOf Affiche), Buffer)
End If
End Sub
'fonction permettant l'affichage des données lors de l'appel du délégué
Private Sub Affiche(ByVal Texte As String)
RichTextBox1.Text &= Texte
End Sub
mdabin
Messages postés4Date d'inscriptionmercredi 15 septembre 2004StatutMembreDernière intervention27 avril 2007 27 avril 2007 à 15:19
Pour l'evenement SerialPort1_DataReceived, il faut faire appel à un delegué:
1) Le declarer
Private Delegate Sub d_Affiche(ByVal Texte As String)
2)Dans DataReceived:
Dim Buffer As String = SerialPort1.ReadExisting()
If Me.InvokeRequired Then
Me.Invoke(New d_Affiche(AddressOf Affiche), Buffer)
End If
3)
Private Sub Affiche(ByVal Texte As String)
RichTextBox1.Text &= Texte
End Sub
'Grace à cette fonction, on peut récuperer le contenu du buffer dans une TextBox par exemple
J'ai un peu + de mal pour faire rentrer le contenu du buffer dans une table: erreur du type:
"Modifications non effectuées: risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l'index pour permettre les doublons et recommencez."
Si vous avez une idée
Merci
mdabin
Messages postés4Date d'inscriptionmercredi 15 septembre 2004StatutMembreDernière intervention27 avril 2007 27 avril 2007 à 15:18
Pour l'evenement SerialPort1_DataReceived, il faut faire appel à un delegué:
1) Le declarer
Private Delegate Sub d_Affiche(ByVal Texte As String)
2)Dans DataReceived:
Dim Buffer As String = SerialPort1.ReadExisting()
If Me.InvokeRequired Then
Me.Invoke(New d_Affiche(AddressOf Affiche), Buffer)
End If
3)
Private Sub Affiche(ByVal Texte As String)
RichTextBox1.Text &= Texte
End Sub
'Grace à cette fonction, on peut récuperer le contenu du buffer dans une TextBox par exemple
J'ai un peu + de mal pour faire rentrer le contenu du buffer dans une table: erreur du type:
"Modifications non effectuées: risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l'index pour permettre les doublons et recommencez."
Si vous avez une idée
Merci
2vbeur
Messages postés3Date d'inscriptionvendredi 16 juin 2006StatutMembreDernière intervention12 avril 2007 7 févr. 2007 à 09:29
salut,
Bravo pour le travail..
j'ai tester ton code, il y a effictivement quelques fautes :
dans le Form1_Load tu n'a pas fait apelle a la foction configuration() de la class port serie !
j'ai tester sa mais j'ai découvert que la variable ne pouvait pas prendre une valeur autre qu'un nom d'un port série !!
> donc Public NoPort As String "NULL" et If (NoPort <> "NULL") Then
ne foctionne pas !!
il faut impérativement choisir le bon port com dans les propiétés du SerialPort..
je vous tient au courant ...
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 20 déc. 2006 à 13:16
J'ai vu, merci de ton interet.
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 20 déc. 2006 à 13:12
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 20 déc. 2006 à 12:54
SerialPort1.Write((New System.Text.UTF8Encoding).GetBytes(txtRendu.Text))
C'est bien ça pourtant ? Il me fait une erreur:
Value of type '1-dimensional array of Byte' cannot be converted to 'String'.
Pas toi ?
Sinon, la surcharge de write prends 2 parametres de plus, nan ?
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 20 déc. 2006 à 12:48
Bonjour,
Ton pb est du au fait qu'il prend les caracères accentués en unicode et pas en UTF8.
Sinon la syntaxe un peu mieux :
SerialPort1.Write((new System.Text.UTF8Encoding).getbytes(txtRendu.Text))
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 20 déc. 2006 à 12:37
Merci pour ta rapidité.
J'ai carrément fait:
SerialPort1.Encoding = System.Text.Encoding.UTF8
avant le writeline
Mais ça me rend: "Bonjour Â[espace] toi jÂ[copyright]jÂ[copyright]"
Code ASCII: 195 et 169 au lieu de 233.
Peux tu me donner ta façon de faire pour la chaine seule ?
J'ai essayé convert... Mais ne trouve pas UTF8, et:
SerialPort1.Write(System.Text.UTF8Encoding(txtRendu.Text))
me fait une erreur de compilation.
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 20 déc. 2006 à 12:27
Bonjour,
Il semblerais (d'après ce que tu dis), que la sub Write(String), utilise La conversion ASCII, donc pas de caractères accentués.
Pour cela, utilise le Write(Byte()), et utilise System.Text.UTF8.
cs_nitrique
Messages postés344Date d'inscriptionjeudi 1 mai 2003StatutMembreDernière intervention 4 avril 20111 20 déc. 2006 à 11:29
Si tu envoies des caractères accentués par le port COM, que reçoit tu ?
Pour ma part, la phrase: "Bonjour à toi Jéjé" devient "Bonjour ? toi J?j?".
Alors que si je passe par l'hyperterminal, la phrase est reproduite correctement.
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 18 mai 2006 à 17:35
J'ai les Dll seules, tu as reçu mon msg ?
JacPapa
Messages postés5Date d'inscriptionsamedi 23 octobre 2004StatutMembreDernière intervention18 mai 2006 18 mai 2006 à 17:27
A NHenry:
Dans tous les cas, merci pour tes efforts.
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 18 mai 2006 à 17:11
Je n'ai plus que sa vesrion modifiée par mes soins pour un projet au lycée, une maigre chance que j'ai encore le zip original chez moi.
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 18 mai 2006 à 17:09
Bonjour, apparemment, il ne supportent plus pour le .NET 1.
Je vais voir si je l'ai encore en stock.
JacPapa
Messages postés5Date d'inscriptionsamedi 23 octobre 2004StatutMembreDernière intervention18 mai 2006 18 mai 2006 à 16:58
Willy svp. Peut tu indiquer le lien de la diable de page ou tu as trouvé "OpenNETCF.IO.Serial.Port".
Remerciements avancés
JacPapa
Messages postés5Date d'inscriptionsamedi 23 octobre 2004StatutMembreDernière intervention18 mai 2006 18 mai 2006 à 16:51
Malgrès la charte de bonne conduite que je viens d'approuver les "fôtes" restent...
Il faut lire "sans problemes" et non pas "dans problemes".
JacPapa
Messages postés5Date d'inscriptionsamedi 23 octobre 2004StatutMembreDernière intervention18 mai 2006 18 mai 2006 à 16:49
Bonjour à tous,
Commentaire général/
Tu parles d'un modem pour se connecter sur un PABX. Mais un PABX utilise des lignes numériques (numeris), un modem des lignes analogiques (RTC). est ce une erreur de ma part ou cela fonctionne t'il ? (Nous pilotons des modems RTC sur nos programmes VB depuis 3 ans dans problemes mais en ligne analogiques)
NHenry
Messages postés15101Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention24 mars 2024159 15 mai 2006 à 09:01
Boujour,
J'ai trouver une classe sur OPenNetCF.Org (OpenNETCF.IO.Serial.Port).
cs_Willi
Messages postés2375Date d'inscriptionjeudi 12 juillet 2001StatutModérateurDernière intervention15 décembre 201823 14 mai 2006 à 14:37
Il me semble que la classe SerialPort est une nouveautée du framework 2.0
As-tu une alternative pour ceux qui ne bossent pas avec vb2005 ?
21 mai 2009 à 18:26
svp, tu peut mettre ce programme en ZIP
5 août 2008 à 12:31
je veut savoir si je peut recuperer les données reçues d'un buffer dans une table de base se donnée access'et si fesable commant?
5 août 2008 à 10:23
je veut savoir si je veut faire la connexion puis envoyer une donnée et recuperer les données reçues sur le buffer dans une base se donnée?
24 juin 2007 à 15:38
11 juin 2007 à 09:36
J'ai l'impression que c'est exactement ce que vous faites ici mais moi je n'y arrive pas je pense quue je doit mal declarer mon sous-programme DataReceved.
Quelqu'un pourrais jeter un coup d'oeil.
Private Sub PortRS232_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs)
Dim Buffer As String = PortRS232.ReadExisting()
'L'évènement DataReceived se situe sur un thread différent que le form, nous devons donc appelé un délégué pour afficher le résultat à l'écran
If Me.InvokeRequired Then
Me.Invoke(New d_Affiche(AddressOf Affiche), Buffer)
End If
End Sub
'fonction permettant l'affichage des données lors de l'appel du délégué
Private Sub Affiche(ByVal Texte As String)
RichTextBox1.Text &= Texte
End Sub
27 avril 2007 à 15:19
1) Le declarer
Private Delegate Sub d_Affiche(ByVal Texte As String)
2)Dans DataReceived:
Dim Buffer As String = SerialPort1.ReadExisting()
If Me.InvokeRequired Then
Me.Invoke(New d_Affiche(AddressOf Affiche), Buffer)
End If
3)
Private Sub Affiche(ByVal Texte As String)
RichTextBox1.Text &= Texte
End Sub
'Grace à cette fonction, on peut récuperer le contenu du buffer dans une TextBox par exemple
J'ai un peu + de mal pour faire rentrer le contenu du buffer dans une table: erreur du type:
"Modifications non effectuées: risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l'index pour permettre les doublons et recommencez."
Si vous avez une idée
Merci
27 avril 2007 à 15:18
1) Le declarer
Private Delegate Sub d_Affiche(ByVal Texte As String)
2)Dans DataReceived:
Dim Buffer As String = SerialPort1.ReadExisting()
If Me.InvokeRequired Then
Me.Invoke(New d_Affiche(AddressOf Affiche), Buffer)
End If
3)
Private Sub Affiche(ByVal Texte As String)
RichTextBox1.Text &= Texte
End Sub
'Grace à cette fonction, on peut récuperer le contenu du buffer dans une TextBox par exemple
J'ai un peu + de mal pour faire rentrer le contenu du buffer dans une table: erreur du type:
"Modifications non effectuées: risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l'index pour permettre les doublons et recommencez."
Si vous avez une idée
Merci
7 févr. 2007 à 09:29
Bravo pour le travail..
j'ai tester ton code, il y a effictivement quelques fautes :
dans le Form1_Load tu n'a pas fait apelle a la foction configuration() de la class port serie !
j'ai tester sa mais j'ai découvert que la variable ne pouvait pas prendre une valeur autre qu'un nom d'un port série !!
> donc Public NoPort As String "NULL" et If (NoPort <> "NULL") Then
ne foctionne pas !!
il faut impérativement choisir le bon port com dans les propiétés du SerialPort..
je vous tient au courant ...
20 déc. 2006 à 13:16
20 déc. 2006 à 13:12
http://www.vbfrance.com/infomsg_VB2005-SERIALPORT-GTTRANSFORMATION-CARACTERES-ACCENTUES_862236.aspx#3
20 déc. 2006 à 12:54
C'est bien ça pourtant ? Il me fait une erreur:
Value of type '1-dimensional array of Byte' cannot be converted to 'String'.
Pas toi ?
Sinon, la surcharge de write prends 2 parametres de plus, nan ?
20 déc. 2006 à 12:48
Ton pb est du au fait qu'il prend les caracères accentués en unicode et pas en UTF8.
Sinon la syntaxe un peu mieux :
SerialPort1.Write((new System.Text.UTF8Encoding).getbytes(txtRendu.Text))
20 déc. 2006 à 12:37
J'ai carrément fait:
SerialPort1.Encoding = System.Text.Encoding.UTF8
avant le writeline
Mais ça me rend: "Bonjour Â[espace] toi jÂ[copyright]jÂ[copyright]"
Code ASCII: 195 et 169 au lieu de 233.
Peux tu me donner ta façon de faire pour la chaine seule ?
J'ai essayé convert... Mais ne trouve pas UTF8, et:
SerialPort1.Write(System.Text.UTF8Encoding(txtRendu.Text))
me fait une erreur de compilation.
20 déc. 2006 à 12:27
Il semblerais (d'après ce que tu dis), que la sub Write(String), utilise La conversion ASCII, donc pas de caractères accentués.
Pour cela, utilise le Write(Byte()), et utilise System.Text.UTF8.
20 déc. 2006 à 11:29
Pour ma part, la phrase: "Bonjour à toi Jéjé" devient "Bonjour ? toi J?j?".
Alors que si je passe par l'hyperterminal, la phrase est reproduite correctement.
18 mai 2006 à 17:35
18 mai 2006 à 17:27
Dans tous les cas, merci pour tes efforts.
18 mai 2006 à 17:11
18 mai 2006 à 17:09
Je vais voir si je l'ai encore en stock.
18 mai 2006 à 16:58
Remerciements avancés
18 mai 2006 à 16:51
Il faut lire "sans problemes" et non pas "dans problemes".
18 mai 2006 à 16:49
Commentaire général/
Tu parles d'un modem pour se connecter sur un PABX. Mais un PABX utilise des lignes numériques (numeris), un modem des lignes analogiques (RTC). est ce une erreur de ma part ou cela fonctionne t'il ? (Nous pilotons des modems RTC sur nos programmes VB depuis 3 ans dans problemes mais en ligne analogiques)
15 mai 2006 à 09:01
J'ai trouver une classe sur OPenNetCF.Org (OpenNETCF.IO.Serial.Port).
14 mai 2006 à 14:37
As-tu une alternative pour ceux qui ne bossent pas avec vb2005 ?