Mscomm

cs_bentic Messages postés 63 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 11 janvier 2013 - 23 sept. 2006 à 22:05
cs_bentic Messages postés 63 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 11 janvier 2013 - 28 sept. 2006 à 23:31
Bonsoir,
je me lance dans un utilitaire avec de trés grand  soucis de fonctionnement, vu mon niveau car la prog c un métier. M'enfin, je remercie d'avance la personne qui va comprendre mon problème et me le résoudre. (je ne connais rien a la prog je bidouille avec toute la richesse de ce site, je suis automaticien).
j'ai récupéré et fait tourner a ma façon cette routine pour communiquer avec un automate, via je pense le protocole VT100

Private Sub Form_Load()
MSComm1.PortOpen = True
Dim InBuff As String

         Select Case MSComm1.CommEvent
            Case comEventBreak
            Case comEventCDTO
            Case comEventCTSTO
            Case comEventDSRTO
            Case comEventFrame
            Case comEventOverrun
            Case comEventRxOver
            Case comEventRxParity
            Case comEventTxFull
            Case comEventDCB

        
            Case comEvCD
            Case comEvCTS
            Case comEvDSR
            Case comEvRing
            Case comEvReceive
            Label1.Caption = "Input"
            InBuff = MSComm1.Input
            Case comEvSend
              
            Case comEvEOF
                                          
         End Select

      End Sub

      Private Sub Lbl1_Click()
Dim Buffer As Variant
    MSComm1.ParityReplace = ""
    MSComm1.InputLen = 0
    If MSComm1.PortOpen = True Then
    MSComm1.PortOpen = False
 End If
    MSComm1.PortOpen = True
    Timer1.Enabled = True
    Timer1.Interval = 200
     Buffer = Chr$(48)
     MSComm1.Output = Buffer
     End Sub

Private Sub Lbl10_Click()
Dim Buffer As Variant
MSComm1.ParityReplace = ""
    MSComm1.InputLen = 0
    If MSComm1.PortOpen = True Then
    MSComm1.PortOpen = False
 End If
    MSComm1.PortOpen = True
    Timer1.Enabled = True
    Timer1.Interval = 200
   Buffer = Chr$(72)
   MSComm1.Output = Buffer
End Sub

Ma premier question est:
j'obtiens ça , dans le TextBox
I[HMENU =1  VISU= 2
MODIF=3
et de temps en temps
OOXXXXIIIasXX MENU =1
Il faudrait pouvoir supprimer le "I[H "et tout les trucs OOXXXX etc..
Souhait   
MENU=1  VISU=2
MODIF=3
Il y a bien longtemps on ma repondu que qu'il fallait mettre CHR$(27) & "H" Ok mais ou?

Deuxieme question; je pense que les infos tournent en boucle,  comment est-il possible de rafraichir en permanence pour etre toujours au meme endroit au moment de l'ouverture du port com1.

Merci,
 

17 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 sept. 2006 à 13:09
Salut
Ces codes sont des balises de positionnement du curseur ou de formatage de texte.
Je suppose que tu te connectes à un Vax qui tourne sous OpenVMS ou Unix.
"Hyper Terminal" de Windows fait cela très bien.

Sinon, pour supprimer ces codes, il faut pouvoir les détecter.
Il faut donc repérer toutes les combinaisons possibles.
Pour supprimer le bout de chaine --> Replace
Exemple :
ChaineOriginale = "tralala I[HMENU=1 VISU=2"
ChaineASupprimer = "I[H"
ChaineOriginale = Replace(ChaineOriginale, ChaineASupprimer, "")

Tu n'as plus qu'à imaginer un tableau de chaines à supprimer et une boucle qui scanera chaque ligne de texte reçu avec une recherche de chaque chaine à supprimer.

La meilleure méthode serait quand même de connaître exactement la signification de ces balises.
Renseigne-toi sur le type de système d'exploitation de la machine sur laquelle tu te connectes.
Si c'est du DCL de OpenVMS, je pourrais te donner quelques infos.

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'accroit quand on
0
cs_bentic Messages postés 63 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 11 janvier 2013
24 sept. 2006 à 18:55
Salut
Du peut que je sais il s'agit du protocoleVT100 et les deux balises seraient
 
cursorhome      Move cursor to upper left corner      ^[H
cleareol            Erase to end of current line                ^[K
quand a savoir si c'estun DCL ou OpenVMS je suis incapable de repondre a cette question. Je sais en tout cas que je me suis fait un petit convertisseur RS485/RS232 pour dialoguer avec un EEprom qui se trouve sur l'automate.
J'ai besoin d'aide, je serais ravie de pouvoir repondre a d'autre questions  pouvant solutionner mon  soucis
Merci, 
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 sept. 2006 à 19:36
Re
Regarde ce fichier Excel dans lequel j'ai regroupé ces codes VT http://www.template.fr/MVP/VT_Codes_ecran.xls
Il faudra analyser ce que tu reçois, mais je pense que ce que tu écris comme un accent circonflexe ^ doit être un code escape Chr(27)

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'accroit quand on
0
cs_bentic Messages postés 63 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 11 janvier 2013
24 sept. 2006 à 21:08
Effectivement c'est bien "ESC" .  Le codage serai   CHR$(27) & "H"  Seulement voila, je n'arrive pas a l'inclure dans la routine et si de plus il faut créer un additif je vais tourné en triangle bien longtemps.
J'ai cherché des exemples sur le site mais rien ni fait malgré toutes les sources.
 
0

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

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 sept. 2006 à 23:17
"Seulement voila, je n'arrive pas a l'inclure dans la routine"   Quel routine ?
Si tu veux utiliser la technique que je t'ai proposé, il suffit de dire que ChaineASupprimer = Chr$(27) & "H" , c'est tout
En cherchant "<Esc>H" dans un moteur de recherche, je suis tombé sur cette page d'info : clique ici

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'accroit quand on
0
cs_bentic Messages postés 63 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 11 janvier 2013
25 sept. 2006 à 00:02
j'ai passé la soirée a lire et relire c'est deux liens pour comprendre
http://www.microsoft.com/france/msdn/windows/ctlmscommtech.mspx
http://www.microsoft.com/france/msdn/windows/ctlmscomm.mspx
je vais me plongé maintenant sur celui que tu me propose
merci pour ce coup de pouce
0
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
25 sept. 2006 à 00:30
Bonjour,

Pour pouvoir t'aider a ton programme tu peux te referrer a un de mes codes-sources:

http://www.vbfrance.com/codes/SYSCOM-PRO-VER-BETA-HYPER-TERMINAL_25327.aspx

Ce programme est un herper-terminal et possede unr routine de decodage et d'affichage du VT100 (gestion a 85/90%)

Bonne prog
[Gally Home Corp]
0
cs_bentic Messages postés 63 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 11 janvier 2013
25 sept. 2006 à 14:25
Ho la la terrible !


Comme dit Lefèvre dans « les tontons flingueurs », je me prépare à des nuits blanches, des migraines des « nervouse brékdones. Je vais faire le tour de ton SYSComPro car ce que je cherche doit y être. En ayant fait un petit tour, combien cela représente de temps passé pour faire un truc comme ça ?


Merci    
0
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
25 sept. 2006 à 14:42
Bonjour,


Je ne peux pas vraiment quantifier le temps de dev parce-qu'il y a eu pas mal de test avant. Sinon sa represente pas mal de mois.

Je me suis remis sur SYSCom Pro depuis peu et j'ai déjà apporter quelque modification. Sinon je vais me mettre a finir le mode PlugIn qui pourrait te permettre de developper un plugin et non une source complete et ce en utilisant les fonction de SYSCom Pro.

Sinon pour un prob de comprehention po de problème faut demander

A++
[Gally Home Corp]
0
cs_bentic Messages postés 63 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 11 janvier 2013
27 sept. 2006 à 00:09
Bonsoir
Effectivement dans le module "basDraw_VT100" il y de belle choses, reste a faire un assemblage.
Sinon voila ce que l'ont ma transmis
<!--[if !supportLists]-->·                
<!--[endif]-->Communication
Protocol

This chapter describes the communication
protocol between Subsystem and SVT II depending on the selected
compatibility mode.

<!--[if !supportLists]-->·                
<!--[endif]-->Standard ASCII
Escape Sequences
Standard escape sequences are multiple
character control functions that are not displayed but control the SVT II
operation. The control functions recognized are listed.

 

ommand

, Sequence

, ----
Cursor
up

, ESC,
‘[‘,
Pn, ‘A’

, ----
Cursor
down

, ESC,
‘[‘,
Pn, ‘B’

, ----
Cursor
forward

, ESC,
‘[‘,
Pn, ‘C’

, ----
Cursor
backward

, ESC, ‘[‘, Pn, ‘D’

, ----
Cursor position

, ESC, ‘[‘, Pl, ‘;’, Pc, ‘H’

, ----
Cursor
home position

, ESC,
‘[‘,
‘H’

, ----
Erase
from cursor to end of line

, ESC,
‘[‘,
‘K’

, ----
Erase
from cursor to end of display

, ESC,
‘[‘,
‘J’

, ----
Erase
entire display

, ESC,
‘[‘,
‘2J’

Table ?.2: Standard ASCII escape sequences

Pn: number of movements, Pl: number of lines, Pc: number of columns,

all numbers composed of ASCII digits ‘0’ to ‘9’

The erase commands have no influence to the
cursor position.

<!--[if !supportLists]-->·                
<!--[endif]-->Enhanced Escape Sequences
For future extensions a Read SVT’s SCN command is provided. This command allows the
Subsystem to identify the type and software version of the connected Service
Tool.

 

Command

, Sequence

, ----
Read
SVT’s SCN

, ESC,
‘[‘,
‘n’

Table.3:
Enhanced escape sequences

<!--[if !supportLists]-->·                
<!--[endif]-->SVT II To
Subsystem
The SVT II can transmit codes for pressed
keys and answer messages.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 sept. 2006 à 19:34
Re
Fais le parallèle avec ce que je t'ai envoyé (liste des codes écrans) et tu verras que c'est pratiquement la même chose.
Leur tableau n'est pas facile à interpréter.
Genre : Erase entire display :
   Ta doc         ESC, ?[?, ?2J?<?XML:NAMESPACE PREFIX = O /??>

   Mon code    ESC[2J
ou encore : Cursor position :
   Ta doc         ESC, ?[?, Pl, ?;?, Pc, ?H?
   Mon code    ESC[x;yH
Il semble suffire de supprimer les ? et les , dans leur syntaxe ...

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'accroit quand on
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 sept. 2006 à 19:36
Précision : Les écrans VT100 (pas 220) sont des zones texte de 24 lignes sur 80 colonnes
Il faut donc, si tu récupères des codes de repositionnement du curseur, que tu saches où te placer.
Ce n'est pas évident.
0
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
27 sept. 2006 à 21:47
Bonjour

pour le module "basDraw_VT100" il fonctionne parfaitement, avec les test que j'ai fait sur Switch 3Com, TeleMaintenance, Modem et je c plus apres... Sinon pour ton assemblage tu peux toujours me demander et je connais pas mal mon code lol ;-) et j'ai une version plus ressente sur mon disque

A++
[Gally Home Corp]
0
cs_bentic Messages postés 63 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 11 janvier 2013
27 sept. 2006 à 23:12
Bonsoir


Pour répondre à Jack sur le repositionnement  du curseur, a priori suivant la sélection il
se positionne tout seul, je souffle pour ce point. J’aurais une autre question,
bien plus tard, sur les lignes et les colonnes.
Ex : si tu valides 3 dans






MENU=1  VISU=2

MODIF=3




Ouverture d’un nouveau menu



ECRITURE=1 EFFACE=2




1



ECRITURE 12  NOUVELLE et la tu trouves le curseur 


Pour Gally : ton SYSCom fonctionne chez moi, ça c bien déjà.
Maintenant pour le reste il faut que j’arrive a inclure des morceaux de ton
code sur le mien.


Merci a vous deux


Qui c, peut-être un jour je serai a votre place a pouvoir renseigner. Au
fait, aucune formation en prog (les livres) je suis automaticien.  
0
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
28 sept. 2006 à 02:26
Bonjour,


Je suis un ex electicien-automaticien et c'est pour des choses comme sa à l'origine que je me suis a travailler sur le MSComm ;-) par la suite juste pour le fun...


Sinon je peu faire des découpes dans mon code source pour par exemple mettre l'affichage de VT100 (seulement) et complet...


Au sujet du VT100 n'hesite pas a me poser des questions j'ai du le comprendre avant de faire la routine d'affichage (remarque c'est mieu). La prochaine fois que j'ecrirais je ferais une petite doc d'expliquation du VT100.

A++
[Gally Home Corp]
0
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
28 sept. 2006 à 03:13
Re,

Je sais qu'il est tard mais n'arrivant pas à dormir et j'ai prefairais faire avancer les choses en fesant une petite doc sur le VT100.

------------------------------------------
--                                      --
--   LE CODAGE DES SEQUENCES DU VT100   --
--                                      --
------------------------------------------





PETITE EXPLICATION SUR LA PRESENTATION DU VT100.





INFORATION :  {Vn}  = VALEUR NUMERIQUE
  {Pl}  = VALEUR LIGNE
  {Pc}  = VALEUR COLONNE
  <ESC> = VALEUR DU CARACTERE 27 DE LA TABLE ASCII




 



EXPLICATION POUR LA SEQUENCE "<ESC>[0;4;5m"



                     Delimitateurs
                          / \
                         /   \
                         |   |
                        \ / \ /
                <ESC>[ 0 ; 4 ; 5  m
                ^^^^^^ ^   ^   ^  ^
                |    | |   |   |  |
                \    /  \  |  /   +------ CARACTERE FINAL
                 \  /    \ | /
                  CSI   PARAMETRES
                      DE SELECTION




 



DEPLACEMENT ET POSITION DU CURSEUR :





 DECLACEMENT :



 <ESC>[A    DEPLACE LE CURSEUR EN HAUT
 <ESC>[B    DEPLACE LE CURSEUR EN BAS
 <ESC>[C    DEPLACE LE CURSEUR A DROITE
 <ESC>[D    DEPLACE LE CURSEUR A GAUCHE





 POSITIONNEMENT :



 <ESC>[{Pc};{Pl}R  REPORTE LA POSITION A {Pc} ET {Pc} DU CURSEUR



 <ESC>[{Pl};{Pc}H  POSITIONNEMENT DU CURSEUR A {Pc} ET {Pc}
 <ESC>[{Pl};{Pc}f  POSITIONNEMENT DU CURSEUR A {Pc} ET {Pc}



 <ESC>[{Vn}A   DEPLACEMENT DE {Vn} VERS LA HAUT
 <ESC>[{Vn}B   DEPLACEMENT DE {Vn} VERS LA BAS
 <ESC>[{Vn}C   DEPLACEMENT DE {Vn} VERS LA DROITE
 <ESC>[{Vn}D   DEPLACEMENT DE {Vn} VERS LA GAUCHE





 <ESC>[J    POSITIONNEMENT DU CURSEUR A LA FIN DE L'ECRAN
 <ESC>[0J   POSITIONNEMENT DU CURSEUR A LA FIN DE L'ECRAN
 <ESC>[1J   POSITIONNEMENT DU CURSEUR AU DEBUT DE L'ECRAN





EFFACEMENT ECRAN ET DONNEE :



 <ESC>[J    EFFACEMENT COMPLET DE L'ECRAN




 



AFFECTATION DES INFORMATIONS DE L'ECRAN :



 <ESC>[{Vn};{Vn};...{Vn}m AFFECTATION DES ATTRIBUTS DE CARACTERE



 VALEUR D'ATTRIBUT:



  0 ATTRIBUTS PAR DEFAUT
  1 MODE GRAS
  4 MODE SOULIGNE
  5 MODE CLIGNOTEMENT
  7 MODE INVERSSE VIDEO



  INFORMATION: IL Y A AUSSI LES COULEURS DE CARACTERE ET DE FOND.





SAUVEGARDE ET RESTAURATION DES DONNEES :



 <ESC>7    SAUVEGARDE DU CURSEUR ET DES ATTRIBUTS
 <ESC>8    RESTAURATION DE LA SAUVEGARDE DU CURSEUR ET DES ATTRIBUTS




Bonne Programmation,
[Gally Home Corp]
0
cs_bentic Messages postés 63 Date d'inscription dimanche 4 mai 2003 Statut Membre Dernière intervention 11 janvier 2013
28 sept. 2006 à 23:31
OK je vais me pencher sur vos précieux renseignements, je ne cloture pas la conversation car je reviendrais avec de nouvelles questions.
Encore merci pour le coup de pouce
0
Rejoignez-nous