begin process at 2012 02 14 06:51:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Visual Basic & VB.NET

 > 

Archives Visual Basic

 > 

Périphériques

 > 

communication rs485


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

communication rs485

vendredi 28 avril 2006 à 16:48:15 | communication rs485

bilel60

Bonjour tous le monde

Voila j'ai un leger probleme et je souhaiterais avoir de l'aide etant debutant dans la programmation en VB. Donc J'ai créé un petit prog qui doit communiquer avec un autre  par port serie, mon programme fonctionne tres bien pour une connection via un cable rs232 mais je voudrai le faire fonctionné aussi via  rs485 mais petit souci, je recois bien les information de l'autre pc je n'arrive pas a lui envoyé, mon port et configuré en rs485 half duplex sans Echo. Je vous met mes source pour que vous puissiez eventuellement desselé une erreur.

Merci d'avance

Option Explicit
Dim tampon As String
Dim fermeture As Boolean


Private Sub Command1_Click()
Ouverture (Text1.Text)
End Sub

Private Sub Command2_Click()
MSComm1.PortOpen = False 'on ferme le port quand l'appli quitte
fermeture = True
Text3.SelText = "Fermeture du port com" & Text1.Text & ", "
End Sub


Private Sub Form_Load()
Form1.Caption = "Balance Precia"
Label1.Caption = "Port de Communication"
Label2.Caption = "Chemin du Fichier"
Command1.Caption = " Ouverture manuelle du port "
Command2.Caption = " Fermeture du port "

Text1.Text = ""
Text2.Text = "C:"
Text3.Text = ""
Ouverture (Text1.Text)

End Sub
Private Sub Ouverture(Port As String)

With MSComm1
If Text1.Text = "" Then fermeture = True: Exit Sub
.CommPort = Text1.Text 'on utilise le port COM2: car on utilise 1 PC avec 2 ports COM:
'si vous avez 2 PC, changez en .CommPort=1 !!!
.Handshaking = 2
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True
End With
Text3.SelStart = Len(Text3.Text)
Text3.SelText = "Ouverture du port com" & Text1.Text & ", "

End Sub
Private Sub Form_Unload(Cancel As Integer)
If fermeture Then Exit Sub
MSComm1.PortOpen = False 'on ferme le port quand l'appli quitte
End Sub

Private Sub MSComm1_OnComm()
Dim InBuff As String
Dim buffer As String
Select Case MSComm1.CommEvent
' On effectue la gestion des erreurs


'liste des erreurs possibles
Case comEventBreak 'On a reçu un signal d'interruption (Break)
Case comEventCDTO ' Timeout de la porteuse
Case comEventCTSTO ' Timeout du signal CTS (Clear To Send)
Case comEventDSRTO ' Timeout du signal de réception
Case comEventFrame ' Erreur de trame
Case comEventOverrun ' Des données ont été perdues
Case comEventRxOver ' Tampon de réception saturé
Case comEventRxParity ' Erreur de parité
Case comEventTxFull ' Tampon d'envoi saturé
Case comEventDCB ' Erreur de réception DCB (jamais vu)

'liste des événements possibles
Case comEvCD 'Changement dans la broche CD (porteuse)
Case comEvCTS 'Changement dans broche CTS
Case comEvDSR 'Changement dans broche DSR (réception)
Case comEvRing 'Changement dans broche RING (sonnerie)

'Reception des donnees
Case comEvReceive
      buffer = MSComm1.Input
    
      Call Stock(buffer) 'traitement données

Case comEvSend 'il y a des caractères à envoyer

Case comEvEOF 'on a reçu le caractère EOF
End Select
End Sub

Sub Stock(buffer As String)

tampon = tampon & buffer

If (Len(tampon) > 4) Then Exit Sub

If (Len(tampon) = 4) Then
    Call Traitement(tampon)
End If

End Sub

Sub Traitement(tampon As String)
'cette procédure sert à traiter l'information reçue dans le tampon
     Text3.SelStart = Len(Text3.Text)
     Text3.SelText = "Message Reçu " & tampon & ", " 'ici, on affiche le résultat dans un champ de texte
    
     If (Trim(tampon) = "0D0A") Then
        tampon = ""
        Call lectureFichierEtTraitement
        Exit Sub
     End If
    
        'Text3.SelText = " Message reçu : ERROR, "
        'MSComm1.PortOpen = False
        'Text3.SelText = " Fermeture du port com, "
        'Ouverture (Text1.Text)
       
    
    ' If (Trim(tampon) <> "0D0A") Then
       
    'End If
        
End Sub
Private Sub lectureFichierEtTraitement()
Dim detecteur1et2 As String * 1
Dim detecteur1 As String * 1
Dim detecteur2 As String * 1
Dim radioactivite
Dim bf1, bf2, max1, max2, rad1, rad2
Dim message As String

On Error Resume Next


Close 1
    'Text2.Text &
    Open Text2.Text & "\NouveauCamion.val" For Input As #1
    Line Input #1, radioactivite
   
    Line Input #1, bf1: bf1 = "0000000000" & Trim(bf1)
    bf1 = Mid(bf1, Len(bf1) - 10, Len(bf1))
    Line Input #1, bf2: bf2 = "00000000000" & Trim(bf2)
    bf2 = Mid(bf2, Len(bf2) - 10, Len(bf2))
    Line Input #1, max1: max1 = "00000000000" & Trim(max1)
    max1 = Mid(max1, Len(max1) - 10, Len(max1))
    Line Input #1, max2: max2 = "00000000000" & Trim(max2)
    max2 = Mid(max2, Len(max2) - 10, Len(max2))
    Line Input #1, rad1: rad1 = Trim(rad1)
    Line Input #1, rad2: rad2 = Trim(rad2)
  Close #1

    detecteur1et2 = "N"
    detecteur1 = "N"
    detecteur2 = "N"

    If (radioactivite = "RAD") Then
   
        If (rad1 = "RAD" And rad2 = "RAD") Then
            detecteur1et2 = "O"
            detecteur1 = "N"
            detecteur2 = "N"
        End If
        If (rad1 = "RAD" And rad2 <> "RAD") Then
            detecteur1 = "O"
        End If
        If (rad2 = "RAD" And rad1 <> "RAD") Then
            detecteur2 = "O"
        End If
    End If
  
   message = bf1 & ";" & max1 & ";" & bf2 & ";" & max2 & ";" & detecteur1 & detecteur2 & detecteur1et2
  Call envoiMessage(message)
End Sub

Private Sub envoiMessage(message As String)
MSComm1.Output = message
End Sub
 

vendredi 28 avril 2006 à 18:40:44 | Re : communication rs485

pluplu

Le mode de liaison  RS232  est simple puisqu'il ne relie que deux devices entre eux, tandis que le mode de fonctionnement RS485 est plus complexe puisque sur un seul bus de deux fils on peut communiquer avec une trentaine de devices, donc il faut savoir qui cause avec qui et quand, pour cela le mode RS485 utilise un protocole comme MODBUS ou autres donc il faut remanier ton code en conséquence.

Pascal Laurençon
samedi 29 avril 2006 à 01:57:07 | Re : communication rs485

jack

Administrateur CodeS-SourceS
Salut
A ma connaissance, on ne peut pas connecter directement du RS485 sur un port série de PC, à moins qu'il s'agisse d'une carte additionnelle capable de.
RS485 n'est pas un protocole de communication, mais une caractéristique technique de communication (définition du brochage 2 fils).
Donc, il faudra un convertisseur externe RS232 / RS485
Comme l'a dit Pluplu, si tu dois dialoguer avec plusieurs "clients", il va falloir en plus gérer un protocole du genre JBus / ModBus.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
mardi 2 mai 2006 à 11:09:56 | Re : communication rs485

rvblog

Membre Club
Salut bilel60, salut pluplu, salut jack,

parfaitement d'accord avec ce qui a été dit.

Je souhaitais juste rajouter qu'il y a des chances que le protocole à utiliser soit déterminé par l'appareil que tu utilises.
Dans certains cas (genre les terminaux Proface), la seule difference entre un dialogue RS232 et RS485 est le rajout, dans la trame, de l'identifiant du client auquel tu t'adresses (sous forme d'entier).

par contre, pas moyen à ma connaissance d'économiser l'achat d'un convertisseur.

PS: attention toujours à la longueur des cables.

à+

rvblogn


Je veux ton bien... et je l'aurais... mais jamais avant la page 4
mardi 2 mai 2006 à 11:54:36 | Re : communication rs485

bilel60

Salut les amis et merci encore, je vais donc pensher pour l'utilisation d'un convertisseur externe, merci encore et a bientot
mardi 2 mai 2006 à 11:54:37 | Re : communication rs485

bilel60

Salut les amis et merci encore, je vais donc pensher pour l'utilisation d'un convertisseur externe, merci encore et a bientot


Cette discussion est classée dans : text, port, end, tampon, len


Répondre à ce message

Sujets en rapport avec ce message

[Catégorie modifiée .Net -> VB6] Problème d'affichage de données d'un port com [ par mah00 ] Bonjour, J'ai une carte avec des interrupteurs communicant avec un port com. Je veux savoir ce qu'envoie cette carte quand j'appuie sur un des interr Code qui freeze excel et Vba (Problème) [ par choupinoob ] Bonjour à tous. Voila j'ai adapté un code permettant de récupérer les valeurs d'un port série pour m'en servir sur Excel. Malheureusement ce code, m Background worker sur form differente. [ par Sentynel ] Bonjour à tous, J'ai un soucis avec mon background worker. J'ai ma form principal (mainform) qui contien une listbox avec des items. Lorsque l'on cli ajout er un utulisateur [ par babadou ] apres remplire tout les champs et taper sur bouton ajouter le resulta est toujour utulisateur existe si quelqu'un visualiser le faute SVP me demande Aide Macro Suppression Doublons [ par HiiiCoach ] Bonjour à tous, Je me tourne vers vous pour un besoin urgent et vous remercie d'avance de l'aide que vous m'apporterez. Il y a quelques semaines, j' Problème quantité dans une application pharmacie [ par moh120 ] Bonjour à toutes et à tous, Je suis en train de faire une application gestion de stock d'un pharmacie avec vb2008 & sql2005 Le problème c'est que j'ai lecture dans un jeu d'enregistrement [ par navyconchita ] salut, quelqu'un peut-il m'aider à résoudre ce petit problème? Voici le code d'un bouton "Précédent" que j'ai fait pour me permettre de passer en rév erreur automation [ par jraynald ] bonjour à tous. depuis que l'on soit passé sous excel 2007 au boulot, une macro vba que j'avais réalisée ne fonctionne plus, j'ai l'erreur: erreur d' erreur en vb6 [ par mimou89ch ] j'ai un code qui me permet de lister les données d'un fichier excel à l'aide de MSFlexGrid mais l'exécution ne s'effectue pas à cause de l'erreur "424 erreur du à l'effacement du contenu des textbox [ par batman511 ] Bonjour; Mon probleme survient au moment ou j'utilise le "button commande 4" aux quels je luis demande d'efacer le contenus de tous mes textbox afin


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales