RS232 et gestion RTS/CTS

Résolu
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008 - 7 juin 2007 à 21:16
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008 - 26 mars 2008 à 17:31
http://www.vbfrance.com/auteurdetail.aspx?ID=225810



bonjour,

j'essaye en ce moment de gerer la ligne CTS de mon port COM...
voici mon bout de code.
est ce que qqun pourrait confirmer si c'est ok .. car ca deconne un peu et je ne sais pas si c'est ma boucle d'attente du CTS est correcte  ... ?

Merci :=)

'-----------------------------------------------------------------------------------------

Private Sub Button_Send_Click( ByVal sender As Object , ByVal e As System.EventArgs) Handles Button_Send.Click

Dim index, index2 AsInteger

Dim linetowrite AsString

Dim charout AsString

Dim datagridview2 As DataGridView

datagridview2 = Form_Main.DataGridView2

 

If SerialPort1.IsOpen = TrueAndAlso datagridview2.Rows.Count > 0 Then
Cursor = Cursors.WaitCursor
' On passe le curseur en sablier

ProgressBar1.Value = 0
' On initialise la ProgressBar.

ProgressBar1.Maximum = datagridview2.Rows.Count - 1
' Maximum= nombre total d'octet.

For
index = 0 To (datagridview2.Rows.Count - 1)
linetowrite =
"x" & ( CStr (Hex(datagridview2(0, index).Value)))

        For index2 = 1 To 75
           linetowrite = linetowrite &
"x" & CStr (Hex(datagridview2(index2, index).Value))

        Next

For index2 = 0 To linetowrite.Length - 1

   If CheckBoxCTS.Checked = TrueThen

      While SerialPort1.CtsHolding = True

      EndWhile

   EndIf
   charout = linetowrite(index2)

   SerialPort1.Write(charout)

Next


ProgressBar1.PerformStep()








Next



Cursor = Cursors.Arrow


' On repasse le curseur en normal








End
If






End
Sub

30 réponses

traicha Messages postés 5 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 26 mars 2008
25 mars 2008 à 16:04
pardon je n'ai pas une réponse mais je me suis bloauée à ce niveau:gerer RTS/CTS du pc relié à une carte ne contenant qu'un E/R BIM-433,que je dois aussi gerer en émission et en réception.Avez-vous une idée? ou bien dit moi comment contacter CRAZY?
0
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
25 mars 2008 à 16:27
un bonjour, merci ou svp ??...
question incomprehensible, a reformuler !!
0
traicha Messages postés 5 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 26 mars 2008
25 mars 2008 à 16:59
Merci de votre reponse.
Mon projet consiste à réaliser une transmission radio entre deux cartes.
la première contient un PIC et un E/R BIM-433, elle emet des trames(j'ai pas de problemes por cette carte).
la deuxième contient un E/R BIM-433 et relié au pc par cable USB TTL-232.Mon problème est comment gerer CTS/RTS du pc, et TX/RX de l'E/R? a la réception, le pc exécute un programme VB qui consiste à traiter les trames et émettre un Ack.
le problème que je ne sais pas par quoi gerer CTS/RTS pour commander le pc en emission et en reception, et gerer TX/RX du BIM pour qu'il écoute le canal et reçoit les trames puis prend la porteuse et emet l'ack.
j'ai essayer de les gerer tous par CD du BIM qui detecte s'il y a porteuse ou non:CD prend bien l'etat 1 quand il y a trames , mais quand elle doit prendre l'etat 0 pour que le pc peut emettre l'ack, elle commence à fluctuer..
desolé,si c'est pas clair, je répete
0
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
25 mars 2008 à 17:10
ton PC ne fait que recevoir les trames et retourne un ACK vers ton PIC ?.. alors certainement pas besoin de gerer le CTS/RTS coté PC .. il est bien assez rapide !!

en VB.NET, il suffit de mettre la methode serialport.handshake = none .. regarde MSDN .. et la page precedente pour voir comment je teste le CTS coté PC :
WhileSerialPort1.CtsHolding =
FalseApplication.DoEvents()

End
While
0

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

Posez votre question
traicha Messages postés 5 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 26 mars 2008
25 mars 2008 à 17:23
j'ai vérifié que le pc traite les trames et emet l'ack (j'ai affiché mscomm.output dans l'interface que j'ai dévéloppé sous vb pour afficher les données contenues dans la trame reçue).
Mais cet ack passe à l'E/R que je dois gérer en E/R en reliant TX/RX à un signal qui detecte quand etre recepteur de trames, et quand passer en emetteur pour transmettre l'ack du pc vers l'autre carte(qui contient le pic).c'est ça le probleme,avec quoi gerer tx/rx? par RTS du pc(mais j'ai constaté que le pc dde tjs l'autorisation d'émettre donc rts tjs à 0), par CD?(son etat 1 n'est pas bon)
0
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
25 mars 2008 à 19:41
je comprend rien de ce que tu racontes !!
ton PIC envoie des trames, il recoit le ACK .. quel est le probleme !..?
une fois qu'il a emit sa trame, il passe en attente de l'ack .. basta !..?
laisse tomber le RTS/CTS
tu dois commuter ton module BIM433 pour qu'il soit emeteur ou recepteur ?..

fais deja fonctionner ton ensemble SANS les modules BIM-433 .. en filaire .. ATTENTION au niveaux RS232/TTL .. intercale un MAX232 ou equivalent

sinon, des sources en VB pour la liaison RS232, c'est pas ce qu'il manque !...
0
traicha Messages postés 5 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 26 mars 2008
25 mars 2008 à 20:16
sava merci,je sais que c'est difficile à comprendre.
lorsque j'ai lu ta phrase "tu dois commuter ton module BIM433 pour qu'il soit emeteur ou recepteur", j'ai pensé que tu va me donner une idée comment gérer TX et RX du BIM pour dés qu'il reçoit les trame,passe en etat d'émission et transmis l'ack.
j'ai réussit à recevoir les trame car j'ai fixé le BIM en état de reception(RX=0 et TX=1) une fois pour toute,donc il ne peut pas basculer en émetteur (RX=1 et TX=0).
 merci bcp et désolé je sens que je t'ai dérangé. je vais chercher autre solution.
0
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
25 mars 2008 à 22:06
tu ne me deranges pas, mais un bonjour, un stp et un merci plustot, c'est pas plus mal .. !
"fixé le BIM en état de reception(RX=0 et TX=1) une fois pour toute" .. mais tes lignes RX et TX sont la pour la transmission des trames !!.. tu ne peux et ne dois pas les fixer a des niveaux !!! si tu fixes ta ligne TX a un niveau .. comment tu emets ?????? !

 je comprend pas ton probleme de devoir commuter ton module en emission ou en reception ...
mais bon ..
0
traicha Messages postés 5 Date d'inscription mardi 25 mars 2008 Statut Membre Dernière intervention 26 mars 2008
26 mars 2008 à 07:24
bonjour, peut etre j'ai pas donné tous les détails.
le BIM comporte TXD et RXD qui sont responsable de la transmission des données.
Alors que RX et TX sont responsable d'activer RXD et TXD:
-quand TX=1, RX=0 : RXD est activé pour recevoir les trames
-quand TX=0, RX=1 : TXD est activé pour émettre l'ack.
le probleme que je dois relié TX et RX à un signal de commande qui détecte quand les trames finissent pour basculer en émission.
0
space_walker Messages postés 84 Date d'inscription mardi 3 février 2004 Statut Membre Dernière intervention 22 juillet 2008
26 mars 2008 à 17:31
ah ben voila .. c'est plus clair !
coté PC je ne sais pas si en VB tu peux piloter manuellement la ligne RTS (qui est la seule en sortie, CTS etant une entree ).
tu as aussi la broche DTR qui est une sortie
voir : http://en.wikipedia.org/wiki/Rs232

si tu peux les piloter logiciellement, pas de probleme.
sinon tu devras faire un petit montage adaptateur pour gerer tes 2 lignes RX et TX

a+
0
Rejoignez-nous