Accueil > Forum > > > > RS232 et gestion RTS/CTS
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 AsIntegerDim linetowrite AsStringDim charout AsStringDim datagridview2 As DataGridView
datagridview2 = Form_Main.DataGridView2
If SerialPort1.IsOpen = TrueAndAlso datagridview2.Rows.Count > 0 ThenCursor = 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
|
Perso j'aurais plutot mis ceci : While SerialPort1.CtsHolding = False Application.DoEvents EndWhileSi 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
|
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
|
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"
|
|
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
Livres en rapport
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|