Test de communication pc-pc par null modem (port série rs232)

Soyez le premier à donner votre avis sur cette source.

Vue 58 654 fois - Téléchargée 5 224 fois

Description

Ceci n'est pas une appli mirrobolante, mais elle a l'avantage de résumer les bases de la communication par port série RS232 entre 2 PCs sous VB6.

Assistance technique : câblage d'un "Null Modem" DB9
nécessite deux prises femelles 9 broches
_______
\54321/
\9876/

1 --> 7-8 : DCD vers RTS/CTS
2 <-- 3 : RXD sur TXD
3 --> 2 : TXD vers RXD
5 ---- 5 : Ground sur Ground
7-8 --> 1 : RTS/CTS sur DCD

Remarque :
Cette appli nécessite :
Microsoft Form2.0 Object Library
Microsoft Comm Control 6.0

Source / Exemple :


'       Ce projet est un test de communication entre deux ordinateurs
'   via un port série RS232.
'       En connectant un PC à un autre, ce programme permet d'envoyer des
'   chaînes de 8 caractères maximum.
'       La configuration des ports est basique : "9600,n,8,1".

'       This project is a communication test between 2 computers on a
'   RS232 serial port.
'       After connecting the computers, you can send strings
'   of 8 characters maximum.
'       The configuration of ports is classical : "9600,n,8,1".

'       Il est aussi là à titre d'exemple pour ceux qui s'adonnent à la
'   communication par port série. On rappellera que ce port sert
'   essentiellement aujourd'hui pour les modems et les appareils industriels.

'       This software can else be used by those who want to train themselves
'   on communication with serial port. We can remember that, nowadays,
'   this port is essentially used for modems and industrials equipements.

'P S :
'   Les deux fenêtres des COM 1 et 2 sont identiques en tous points.
'
'   The two windows for COM 1 and 2 are exactly the same.

Private Sub Form_Load()
    Comm.InputMode = comInputModeText
    Comm.RThreshold = 1         'permet de gérer l'événement CommEvent : réception
    Comm.SThreshold = 1         'permet de gérer l'événement CommEvent : envoi
End Sub

Private Sub Comm_OnComm()

'   Cette procédure permet de gérer les événements présents autour et sur le port
'   Le cas présent, je teste l'envoi, la réception avec l'affichage du contenu du
'   buffer d'entrée, et l'événement Break de blocage du buffer de sortie.

'   This process work on events in and arround the port. Present case, I test
'   sending, reception followed by displaying the input buffer, and the event
'   Break which block the output buffer.

    Select Case Comm.CommEvent
    Case 0: Text1.Text = Text1.Text & "Travail terminé" & vbCrLf
    Case 1: Text1.Text = Text1.Text & "Envoi en cours" & vbCrLf
    Case 2: Text1.Text = Text1.Text & "Reception en cours" & vbCrLf
            Text1.Text = Text1.Text & Comm.Input & " -- reçu" & vbCrLf
    Case 1001: Text1.Text = Text1.Text & "Blocage" & vbCrLf
    End Select
End Sub

Private Sub Command1_Click()        'Bouton Envoyer / Send button
    On Error Resume Next
    Comm.Output = Text2.Text
End Sub

Private Sub Command2_Click()        'Bouton Ouvrir Port / Open serial button
    Comm.PortOpen = True
End Sub

Private Sub Command3_Click()        'Bouton Fermer Port / Close serial button
    Comm.PortOpen = False
End Sub

Private Sub Command4_Click()        'Bouton Break / Break button
    If Comm.PortOpen = True Then
    Select Case Comm.Break
        Case vbFalse
            Comm.Break = True
            Command4.BackColor = vbRed
        Case vbTrue
            Comm.Break = False
            Command4.BackColor = vbGreen
        End Select
    Else
        Comm.Break = False
        Command4.BackColor = vbGreen
    End If
End Sub

Private Sub Timer1_Timer()          'Une routine de test sur l'état du port / a loopback on testing state of port
    If Comm.PortOpen = True Then
        Label1.Caption = "Ouvert"
        Command2.Enabled = False
        Command3.Enabled = True
    Else
        Label1.Caption = "Fermé"
        Command2.Enabled = True
        Command3.Enabled = False
    End If
    Text3.Text = "OutBuffer : " & Comm.OutBufferCount & " | InputBuffer : " & Comm.InBufferCount
End Sub

Conclusion :


Je n'est pas poussé la gestion d'erreurs.
Alors, si vous constatez un bug,...vous savez à quelle porte sonner...

Dernière mise à jour:
pour ceux qui ne l'on pas, me laisser un message sur le site

PrX

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
jeudi 12 mai 2011
Statut
Membre
Dernière intervention
25 mai 2011

salut tt le mande
je suis en train de réaliser cette application,, aider moi
Messages postés
8
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
19 septembre 2006

J'ai un problème avec mon port série sous visual basic 6 : je viens d'écrire une application VB6.0 et
je n'ai rien du tout en sortie de mon port com1 lorsque j'utilise MScomm (PORT SÉRIE RS232).
Je suis capable de recevoir des messages mais je ne peux en envoyer. Je voudrai donc savoir d'ou vient le problème. Est-ce une dll manquante, un composant à ajouté, version Windows XP PRO INCOMPATIBLE, etc... ???
Messages postés
91
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
2 novembre 2005

Mounaouir,

J'ai bien recu votre message.

Comme je le precise dans les commentaires, une connexion RS232 PC<->Automate dépend de trois choses essentiels :
- le cable de connexion (quelle broches à quel fil)
- le protocole de communication (caractere de debut de chaine, de fin de chaine, caractere de controle s'il existe, formatage de la chaine, etc...)
- le type de codage (caracteres alphanumeriques, sur un seul octet uniquement, etc..)

Personnellement, j'ai eu des problemes de discussion avec un automate Omron, meme avec le cable idoine.
Cependant la plupart des fabricants dispose aujourd'hui d'un logiciel de supervision d'automate, en version complete ou "Lite", comme je l'ai utilise plus tard pour le projet qui m'avait lance dans cette etude.

Pour le probleme de deux PC, mon programme n'a jamais pose de probleme particulier.
Le seul mauvais point est que je n'ai pas defini de protocole de communication. D'ou la lecture par 8 caracteres.
Verifiez donc la qualite et les connexions des broches dans votre cables "Null Modem".

Si la solution n'est pas la, il me faudrait plus d'elements pour vous etre d'un plus grand secours.

Salutations,

PrX
Messages postés
1
Date d'inscription
samedi 5 février 2005
Statut
Membre
Dernière intervention
13 décembre 2005

je sui entrain de réaliser une communication serie entre une automate et un PC mais chez moi j'utilise 2 pc mais tj ca marche pas d'ou je peut commencer je sait pas ou se reside le PB HARD ou SOFT
corrdialement orienter moi merci
badrmnr@gmail.com
badr_mnr@yahoo.fr
Messages postés
91
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
2 novembre 2005

Merci a tous pour vos messages...!!!

Je voudrais d'abord m'excuser, mais ca fait pres de 1 an que je galere sur 36 choses a la fois et j'ai un peu trop delaisse mes sources a partir de mars 2004, de plus que je travaillais surtout en VC++6 au Quebec a ce moment la.
La, je suis revenu mais en recherche d'emploi, et je programme donc moins que je n'ecris des lettres de motivation.(lol)

Voici les reponses aux questions:
1)Le controle MSComm ne permet pas de lire le port de sortie, seulement la reponse... Perso, j'avais teste avec un NULL MODEM connecte entre mon COM1 et ùmon COM2.

2)Si ca ne marche toujours pas, verifier le cablage de la connectique.

3)A la question de mon affichage par trame de 8 octet, je n'ai pas mis en place de protocole de coomunication dans mon exemple. Mais on peut tou a fait lire un trame de plus de 8 caracteres si on en met place un. Exemple : <trame> + <CRLF>

4)le tansfert bit a bit n'est pas une chose que j'ai pratique beaucoup en VB6 avec le controle MSComm, mais en VC++6. Ma reponse est que la communication existe de 2 facons : BIT et textuelle. Je ne sais pas si le controle maitrise la 1ere methode.

5)La communication complete par port serie (cad comme le LAN) est une chose tres interessante a etudier.
Toutefois, je tiens a preciser qu'au jour ou j'ai ecris ce code, je travaillais sur la communication PC/Automate. C'est pour ca que je n'avais pas etendu mon travail.
Enfin, je pense que, sauf cas particuliers, ce mode de dialogue PC/PC est devenu relativement obsolete avec l'apparition des reseaux 10Mbit,100Mbit et gigabit.

Encore un grand merci a tous! ;-D

PrX
Afficher les 16 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.