begin process at 2012 02 14 00:43:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Système

 > 

Périphérique

 > 

RS232 et gestion RTS/CTS


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

RS232 et gestion RTS/CTS

jeudi 7 juin 2007 à 21:16:21 | RS232 et gestion RTS/CTS

space_walker


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

jeudi 7 juin 2007 à 21:30:34 | Re : RS232 et gestion RTS/CTS

casy

Membre Club

Perso j'aurais plutot mis ceci :

      While SerialPort1.CtsHolding = False
          Application.DoEvents
      EndWhile


Si mes souvenirs sont bon, lorsque le recepteur est pret à recevoir, il positionne la ligne CTS de l'emetteur, comme ça l'emetteur sait qu'il peut y aller. Si j'ai bien compris, toi tu veux attendre d'avoir l'autorisation d'emettre. Donc attendre tant que CTS est False.

Application.DoEvents, c'est pour rendre la main au système pendant l'attente. Sinon tu fais une boucle bloquante qui occupe en permanance le proco et ne lui laisse pas le temps (entre-autre) de gerer le port série.


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]
jeudi 7 juin 2007 à 22:25:32 | Re : RS232 et gestion RTS/CTS

space_walker

excatement, le PC est toujours pret a emettre ( donc je ne gere pas le RTS ) et j'attend que ma carte sur mon port COM soit dispo a recevoir.
elle positionne alors le signal CTS ..

alors effectivement, mon ecran est bloqué t'en que CTS n'est pas positionné et je pensais regler ca par un thread ( plus tard car je ne sais pas encore comment on fait ! )..

je ne pensais pas que ca bloquait aussi le port com !!..??
et en faite, je ne comprend pas ton code modifié !
"si CTS n'est pas positionné, rendre la main"  .... comprend pas :(

bon je viens de tester cette modif, ca ne semble pas changer grand chose à mon probleme ( à part les ecran qui passaient blanc lorsque c'etait bloqué ) .. mais le resultat final est le meme .. grrr je ne vois vraiment pas non plus de probleme du coté de ma carte .. grrr

merci !
jeudi 7 juin 2007 à 22:34:35 | Re : RS232 et gestion RTS/CTS

space_walker



bon je viens de regrader sur MSN le DoEvents
http://msdn2.microsoft.com/fr-fr/library/bd65th41(VS.80).aspx

ok .. je vois mieu ce que c'est .. mais mon probleme n'est pas la ! ..

mais je comprend toujours pas le : While SerialPort1.CtsHolding = False
dons mon idee, pour mon PC, le CTS est vrai lorsque il a pas le droit d'emettre ...

"Clear To Send", ma carte passe le signal à 0 lorsqu'elle est OK a recevoir ...
je me trompe ??

jeudi 7 juin 2007 à 22:48:43 | Re : RS232 et gestion RTS/CTS

casy

Membre Club
Non, normalement, si on résonne en états logique, ta carte doit passer CTS à un état 1 lorsque elle est prete à recevoir des données et le passer à 0 lorsque elle ne peut plus recevoir des données.

Evidement si tu te base sur les tensions aux bornes des connecteurs, il te faut connaitre les particularités de la norme RS232 auparavent.

Ainsi un etat 1 se traduit par une tension entre -3 et -18 Volts
Et un etat 0 se traduit par une tension entre +3 et +18 Volts

Souvent les tensions relevées sont de l'ordre de +/-10 à +/-12 Volts


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]
jeudi 7 juin 2007 à 23:29:56 | Re : RS232 et gestion RTS/CTS

space_walker



je connais la norme rassure toi ..
j'ai bien sur deja essayé avec les 2 etats logique ..

en faite ma carte perd les pedales .. comme si le PC ne verifiait pas l'etat du CTS avant d'emettre ...

j'ai l'impression que le CTS est pris en compte apres un premier vidage de buffer uniquement ..

il me vient un doute .. en faite mon port COM est un adaptateur USB/COM ... avec un driver COM virtuel .. ce convertisseur gere t-il serieusement le handshaking RTS/CTS !!!...????
j'utilise ca car il me permet de specifier un baudrate non standard ( 125000 bps )... si j'essaye avec mon port COM1, je ne peux pas selectionner de baudrate byzare !

bon il va falloir que je valide ca ....
merci de tes conseils ..
dimanche 10 juin 2007 à 00:02:56 | Re : RS232 et gestion RTS/CTS

space_walker



bon j'ai verifié, mon convertisseur gere bien le handshaking RTS/CTS ..

un autre doute au niveau du buffer d'emission et de sa taille : WriteBufferSize.
il est indiqué qu"on ne peut mettre que des entiers paires ...

si je met 2, est ce que mes 2 octets ( du buffer ) seront bien envoyés apres controle de l'etat de CTS ?.. c'est a dire est ce que que j'explose pas le buffer de mon recepteur !...?
dimanche 10 juin 2007 à 11:38:09 | Re : RS232 et gestion RTS/CTS

casy

Membre Club

On ne peut mettre que des valeurs paires car le port série de .Net tout comme le Framework en générel fonction avec le format de codage Unicode dans lequel un caractère est représenté sur 2 octets.

Ainsi si tu écrit, à l'aide des methodes Write ou WriteLine, une chaine de caractères sur le port série, pour chaque caractères de la chaine, c'est 2 octets qui seront envoyés.

Tu pourrais passer au format ASCII, dans ce cas là tu aurais effectivement un octet par caractère, mais le format ascii entendu n'est pas reconnu. Ce qui fait que tous les caractères dont le code ascii est suppérieur à 127 seront pas reconnues, et ne seront pas envoyées correctement.

Le mieux est de rester avec le codage par defaut, et de convertir les chaines en tableau de bytes puis d'envioyer ce tableau de bytes avec WriteBytes


---- Sevyc64  (alias Casy) ----
# LE PARTAGE EST NOTRE FORCE #    [ Lien ]
dimanche 10 juin 2007 à 14:59:30 | Re : RS232 et gestion RTS/CTS

space_walker


heu mais c'est la mon probleme .. OUI je veux passer en ASCII !.
je veux envoyer 1 octet / caractere ! ..
si la data dans la case de mon datagridview, vaut 230(decimal), je veux envoyer l'octet E6..
et surtout pas les octets 45 puis 36 ..
( ceci afin de limiter le nombre de data a transmettre...


il me faut ecrire :
      For index2 = 1 To 75

           linetowrite = linetowrite & "x" & Cbyte (Hex(datagridview2(index2, index).Value))

        Next

?????
merci encore ;)
dimanche 10 juin 2007 à 15:12:40 | Re : RS232 et gestion RTS/CTS

space_walker



alors ca :
For index2 = 1 To 75

           linetowrite = linetowrite & "x" & Cbyte (Hex(datagridview2(index2, index).Value))

        Next

ca plante !..

et SerialPort.WriteByte ... ca existe pas ..?
a priori, c'est pour un "stream"

1 2 3 4

Cette discussion est classée dans : index, datagridview2, linetowrite, index2, cts


Répondre à ce message

Sujets en rapport avec ce message

comment faire un puissance 4?? [ par bigoud73 ] Comment faire en VB6 pour dire ou le pion sera selon la colonne de la grille choisie svp ??Meci d'avance. Voici le programme actuel, si vous pouvez no ListView monter descendre l'index [ par jsmeiway ] Bonjour,1/J'aimerais sur une listview avec par exemple 3 lignes A, B, Cpouvoir monter le B à la place du A ou descendre le B à la place du C2/je sais explication prog son [ par joxman ] bonjours  à tous j'ai  téléchargé un programme  que  mixe  2  wav  ca  marche  bien  c'est  super j'aimerai comprendre le programme je ne comprend pa mixage son wav [ par joxman ] bonjours  à tous j'ai  téléchargé un programme  que  mixe  2  wav  ca  marche  bien  c'est  super j'aimerai comprendre le programme je ne pb en vb access ac la fonction seek et index d'un recordeset [ par peute51 ] salut a tous merci de me repondrevoila j'ai un petit probleme en vb sous accessil faut que je cherche un prenom et une adresse dans une table eleve av Rechercher un enregistrement par Index [ par moukhlik ] Bonjour A tousMon but et de chercher un enregistrement par Index et non par clé dans ma base de donnée qui contient déjà des Index; et manipulation de Pb SQL DELETE et clef primaire [ par interstate6003 ] Cher CruciVBiste je me trouve face à un énorme problème, qui pour le moment reste sans réponse, et cela sur n'importe quel forum.En ce moment je dével Chargement dynamique d'objets [ par cbnet ] Bonjour, j'ai un problème concernant le chargement d'objets avec l'instruction Load... Explication : j'ai créé un objet PictureBox que j'ai appelé Con Chargement dynamique d'objets [ par cbnet ] Bonjour, j'ai un problème concernant le chargement d'objets avec l'instruction Load... Explication : j'ai créé un objet PictureBox que j'ai appelé Co création d'objet avec index [ par titounours ] Hello, J'ai un blème sur mon aplli de chat multiclient. Normallement,quand une requete de conexion est faite,l'appli serveur doit créé un nouveau sock


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 : 2,543 sec (4)

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