UTILISATION DU PORT SÉRIE ET DÉTECTION D'UN MODEM RTC BRANCHÉ SUR L'ORDI

cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 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.

https://codes-sources.commentcamarche.net/source/37581-utilisation-du-port-serie-et-detection-d-un-modem-rtc-branche-sur-l-ordi

Utilisateur anonyme
21 mai 2009 à 18:26
bon travail
svp, tu peut mettre ce programme en ZIP
salut2lemonde Messages postés 17 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 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és 17 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 18 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és 62 Date d'inscription samedi 23 juin 2007 Statut Membre Dernière intervention 21 novembre 2015
24 juin 2007 à 15:38
Et t'il possible d'avoir le projet complet?
BenJ2Tours Messages postés 7 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 13 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és 4 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 27 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és 4 Date d'inscription mercredi 15 septembre 2004 Statut Membre Dernière intervention 27 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és 3 Date d'inscription vendredi 16 juin 2006 Statut Membre Dernière intervention 12 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és 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
20 déc. 2006 à 13:16
J'ai vu, merci de ton interet.
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
20 déc. 2006 à 13:12
cs_nitrique Messages postés 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
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és 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
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és 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
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és 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
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és 344 Date d'inscription jeudi 1 mai 2003 Statut Membre Dernière intervention 4 avril 2011 1
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és 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
18 mai 2006 à 17:35
J'ai les Dll seules, tu as reçu mon msg ?
JacPapa Messages postés 5 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 18 mai 2006
18 mai 2006 à 17:27
A NHenry:
Dans tous les cas, merci pour tes efforts.
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
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és 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
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és 5 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 18 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és 5 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 18 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és 5 Date d'inscription samedi 23 octobre 2004 Statut Membre Dernière intervention 18 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és 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
15 mai 2006 à 09:01
Boujour,

J'ai trouver une classe sur OPenNetCF.Org (OpenNETCF.IO.Serial.Port).
cs_Willi Messages postés 2375 Date d'inscription jeudi 12 juillet 2001 Statut Modérateur Dernière intervention 15 décembre 2018 22
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 ?