IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

VB6 projet pas facile de compréhension


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut VB6 projet pas facile de compréhension
    voila je vous expose mon problème TRACE1TC.TXT

    j'ai un fichier en .txt dans lequel je dois aller chercher une "adtrans" (adresse de transmission) .l'adtrans=020

    dans ce texte on a la position initiale du disjoncteur 1(le disjoncteur 1 est régi par l'adtrans 020 (codé en hexa))

    on a étape1 => l'état initiale du disjoncteur1 s'il est "OUVERT - VALIDE) un bouton ok s'allume

    étape 2 => j'ai une phase commande fermeture

    si adtrans=020 y a marqué "FERME-VALIDE" alors bouton ok s'allume

    étape 3 => si les deux boutons ok s'ont allumé alors le voyant valide s'allume sinon le voyant défaut s'allume


    je n'arrive pas a faire l'automaintien des 2 boutons ok pour pouvoir afficher le valide
      0  0

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut re projet
    Je reprend tout sur le but du projet.

    si vous voulez on commande des disjoncteurs à distance grâce aux adresses transmissions (adtrans).

    dans ce cas le disjoncteur1 est l'adtrans=020 donc enfaite on regarde l'état initiale du disjoncteur avec le controle de CG.

    après il faudrait que j'arrive a faire une boucle avec les 2 ECHOS commande d' "ouverture" / "fermeture" car en faite l'adtrans=XXX , il faudrait que XXX soit une variable qu'on peut changer car on a 400 disjoncteurs et chacun une adresse transmission différente. Et la je n'ai pas d'idée

    Merci de votre aide
      0  0

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    c'est toujours aussi incompréhensible ..


    que veux tu faire avec ton fichier texte ..? lire une ligne particulière ? (adtrans=020) en modifier une autre ...?
      0  0

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut re
    TRACE1TC.TXT

    voila vous comprendrez mieux le principe du projet avec le texte.

    Ca parle d'un disjoncteur en gros on veut savoir s'il peut s'ouvrir ou se fermer

    donc

    1ere étape=> on regarde sa position initiale dans le bloc CG (s'il est ouvert valide)

    2eme étape=> oon regarde sur la commande de fermeture s'il se ferme

    3eme étape on regarde sa commande de fermeture

    grace au fichier texte que nous délivre la machine
    Pour l'instant je le fais sur un disjoncteur mais il y en a beaucoup donc je voudrais faire une variable avec "adtrans= variable" voila et pouvoir peut etre reboucler sur les commandes de fermeture et d'ouverture
      0  0

  5. #5
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    C'est une nouvelle journée, il fait beau, soyons fous, je me risque à une interprétation du charabia :

    Tu lis 2 fois la même ligne d'un fichiere texte, la première fois tu espères y trouver "OUVERT", la deuxième fois tu voudrais y trouver "FERME" pour pouvoir afficher une validation mais tu n'y arrives pas.
    Y a t'il un moment où ton fichier texte est sensé être modifié ? Si oui, par qui ?
    Pour info, en supprimant ton dernier message hier dans l'autre sujet, tu as effacé le lien de ton projet.

    Si moi aussi j'ai mal compris (et j'en ai peur), essais de nous réexpliquer ça calmement et clairement. On pourra éviter par exemple d'écrire "si adtrans=020 y a marqué "FERME-VALIDE" alors bouton ok s'allume" parce que pour toi c'est peut être clair mais nous on sait pas si "y a marqué" signifie "mon programme affiche alors sur l'écran" ou "si on trouve dans le fichier texte" ou "mon programme modifie alors le fichier texte" ou autre chose.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !
      0  0

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut re
    disjoncteur 1.zip

    normalement il est complet.....Maquette PA valide pas de défauts.doc


    Le deuxième doc est une esquisse de réalisation finale voila merci
      0  0

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut re
    on a 4 bloc de retour de Control General qui nous donne les états initiales de nos disjoncteurs.

    ensuite pour commande ouverture et fermeture cela reste fixe.

    ce qu'il faut comprendre je travaille sur un PA (Poste Asservi)

    j'ai oublié de dire quelque chose d'important!

    de mon logiciel j'envoie une TC (télécommande) "commande d'ouverture".

    Le PA lui m'envoi une TS (télésignalisation) dans le fichier TS=Ouverture - valide donc la impeccable! et idem pour la commande fermeture.

    ce que je veux si maTS correspond bien a ma TC alors ok sinon on a trouvé le problème!
      0  0

  8. #8
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Sauf que là, pour ton projet, c'est une simu et que le fichier texte est figé une fois pour toute, c'est bien ça ?
    Dans la pratique, c'est le même fichier pour tous les disjoncteurs que tu dois controler ? A force d'envoyer des commandes, le fichier va grossir sans arret. Ya t'il une limite de taille ?
    La difficulté de ton projet va résider à aller lire les bonnes données dans ce fichier texte mais il nous manque encore des infos pour savoir comment celui ci evolue.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !
      0  0

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut
    pour l'instant je travail sur ce fichier.

    Après mon tuteur voudrait un endroit ou on peut charger facilement un fichier.txt et controler les disjoncteurs s'ils peuvent s'ouvrir ou se fermer correctement voila.

    Moi je ne travaillerais que sur ce fichier trace, est il possible de faire une boucle avec les commandes ouverture fermeture.

    Ou il m'a dit si le logiciel peut voir au 3 endroits l'état de adtrans=020 et faire une comparaison...

    on peut essayer juste pour le disjoncteur1 deja mais la je suis limité... je suis entrain de lire en même temps Visual Basic2005de Franscesco Balena.

    ce qu'il veut a la fin c'est la maquette PA.doc en gros j'appuie sur un bouton ensuite analyse du texte et les disjoncteurs suivant s'ils sont ouvert ou pas se mettent en ok.

    voila
      0  0

  10. #10
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Citation Envoyé par legrisbi Voir le message
    pour l'instant je travail sur ce fichier.

    Après mon tuteur voudrait un endroit ou on peut charger facilement un fichier.txt et controler les disjoncteurs s'ils peuvent s'ouvrir ou se fermer correctement voila.
    On est sensés comprendre quoi ?

    Citation Envoyé par legrisbi Voir le message
    Moi je ne travaillerais que sur ce fichier trace, est il possible de faire une boucle avec les commandes ouverture fermeture.
    Oui c'est possible

    Citation Envoyé par legrisbi Voir le message
    Ou il m'a dit si le logiciel peut voir au 3 endroits l'état de adtrans=020 et faire une comparaison...
    Tu parlais avant de comparer 2 états, maintenant 3...

    Citation Envoyé par legrisbi Voir le message
    on peut essayer juste pour le disjoncteur1 deja mais la je suis limité... je suis entrain de lire en même temps Visual Basic2005de Franscesco Balena.
    Tu sais que tu es dans la section VB6 et que VB6 n'est pas VB.Net ?

    Citation Envoyé par legrisbi Voir le message
    ce qu'il veut a la fin c'est la maquette PA.doc en gros j'appuie sur un bouton ensuite analyse du texte et les disjoncteurs suivant s'ils sont ouvert ou pas se mettent en ok.
    voila
    Je crois malgré tout avoir compris à peu près (mais il m'aura fallu du temps !). Maintenant j'attends une question PRECISE pour un problème PRECIS si tu butes sur un point particulier.

    Explique nous déjà comment tu comptes lire les différents états d'un disjoncteur quelconque. Pour parler concretement, dans ton projet, dans la zone de texte "Mot à Chercher", l'utilisateur est sensé rentrer quoi par exemple ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !
      0  0

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut
    pour faire une analyse du texte rapide si j'utilise cette formule a votre avis est ce que je peux aller chercher des infos après.


    ex : Dim sr As New StreamReader ("c:\trace1TC.txt")



    y a t'il également une différence entre VB2005 et VB6? ou est-ce juste la convivialité qui s'est amélioré?

    merci
      0  0

  12. #12
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Je vais rester zen encore pour le moment mais je t'assure qu'il va falloir que je fasse un effort.
    Ce forum est fait pour tenter de s'entraider en VB6 (et je le dis encore une fois ce n'est pas VB.Net) quand l'un ou l'autre rencontre des problèmes particuliers. Pour éviter de faire perdre du temps aux autres et pour apprendre par soi même, on prend le temps, avant de poser une question claire et précise, de vérifier si le problème n'a pas déjà été évoqué. On est même sensés avoir fait des recherches éventuellement sur d'autres sites (Une petite recherche VB6, VB2005 sur Google ou Wikipedia par exemple devrait t'apprendre 2 ou 3 choses).
    Je t'encourage donc vivement à bien peser la pertinence de ta prochaine question.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !
      0  0

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut
    je répond a tes questions:

    -oui on a 3 états l'état initiale plus les deux états de commande.

    - j'aimerais pouvoir comparer en fait l'adtrans=020 et sa TS double pour connaitre sa position.
    ma question est comment faire le lien la comparaison entre l'adtrans et la TS double.

    TXTResultat j'aimerais avoir:
    adtrans=020 TS double:OUvert - valide
    commande ouverture : adtrans=020 TS double:OUvert - valide
    commande fermeture : adtrans=020 TS double:Ferme - valide

    arriver a les comparer comme sur le projet "OUVERT - VALIDE" et "FERME-VALIDE" voila est ce possible?
    si possible une indication, une formule....
      0  0

  14. #14
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut
    excuse-moi je viens de lire l'historique...

    je suis désolé, je travaille sur du VB6 moi nan?

    mais les algorithmes sont assez semblables.....

    enfin bon...
      0  0

  15. #15
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Oui tu travailles en VB6 et un algorithme ne dépend pas d'un langage en particulier alors si tu commences à aller lire la doc de VB.Net pour programmer en VB6, t'es pas sorti de l'auberge, déjà que là...

    Pour en revenir à ton problème, pour connaitre l'état de la première commande passée au disjoncteur d'adresse 20, tu dois aller chercher une ligne contenant :
    "TS sur changement d'etat avec cause associee : ADTRANS=0x20"
    Puis tu dois lire les 2 lignes suivantes pour trouver, puisque si je comprends bien la structure complete d'un etat de commande est :
    >TS sur changement d'etat avec cause associee : ADTRANS=0x20
    TS Simple : Disparition
    TS Double : Fermeture - VALIDE
    Comment faire ça ? Avant de rentrer plus dans les détails, j'aimerais savoir si ce fichier a une taille finie ou s'il grossit sans arret, et si oui jusqu'à quelle limite ? Le fichier, même pour ton projet, est-il fixe où peut il évoluer pendant que ton programme tourne ?
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !
      0  0

  16. #16
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut
    comme c'est une "maquette" la taille est finie car on a une carte de commande avec 16 relais.

    Le fichier ne bouge pas il est fixe car une adtrans est UNIQUE seul les mises à jours (bien plus tard tout les 3ans) et encore on ne touche pas aux adresses transmissions.

    quand le programme tourne le fichier est fixe voila

    merci
      0  0

  17. #17
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Ok, donc comme le fichier est plutôt petit tu peux procéder comme suit (c'est un moyen, certainement pas le seul) :

    Tu lis chaque ligne du fichier, et tu stockes chacune de ces lignes en mémoire dans un tableau du type LigneFichier(x). tu stockes le nombre de lignes dans une variable appeleée par exemple NbLignes

    Pour connaitre l'état de la commande de fermeture sur le disjoncteur d'adresse 20 (histoire de prendre un cas concret), tu vas rechercher dans ce tableau, si tu as :
    ">>> ECHO ***** COMMANDE DE FERMETURE SUR TCD ADTR 20 *****"

    Comment faire ? Admetons que tu as stocké dans une variable l'adresse du disjoncteur dont tu cherches l'état, appelons cette variable AdrDisj, tu peux alors écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Dim DisjStatus As String
    Dim Trouve As Boolean
    Dim i As Integer
    Do
      i = i + 1
      If LigneFichier(i) = ">>> ECHO ***** COMMANDE DE FERMETURE SUR TCD ADTR" & Str(AdrDisj) & " *****" Then
        Trouve = True
        Exit Do
      End If
    Loop Until i = NbLignes
    If Trouve = True Then
      'On a trouvé la ligne cherchée
      'La strucutre du fichier étant du type :
      '>>> ECHO ***** COMMANDE DE FERMETURE SUR TCD ADTR 20 *****
      '
      '><27/04/2009 - 11:00:00> Reception d'une indication de donnees emises pour le PA num 1
      '><27/04/2009 - 11:00:02> Reception de donnees du PA num 1, len = 6
      '0A 04 01 E7 57 02
      '>TS sur changement d'etat avec cause associee : ADTRANS=0x20
      'TS Simple: Disparition
      'TS Double : Fermeture - VALIDE
      'Il va falloir aller chercher la réponse 7 lignes plus loin
      DisjStatus = LigneFichier(i + 7)
    Else
      'On a pas trouvé la ligne recherchée, à toi de voir quoi faire dans ce cas
    End If
    J'insiste sur le fait que c'est un moyen, pas le seul et qu'il devra être amélioré pour rechercher aussi l'état de la commande d'ouverture, mais j'espère que ça te donne une piste déjà pour commencer.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !
      0  0

  18. #18
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut
    j'ai un petit souci avec "LigneFichier" dois je faire une déclaration de variable?

    j'ai rajouté ce programme a mon programme que j'avais dans le bouton chercher en essayant de modifier l'affichage (est-ce judicieux).

    merci
      0  0

  19. #19
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Si tu as activé l'option Explicit (ce que je recommande) tu dois avoir une erreur quand tu utilises une variable non déclarée. Il faut donc bien sûr déclarer ton tableau avant de le remplir.
    Soit tu le déclares aavec une dimension dont tu es sûr qu'elle te permettra de lire toutes les lignes du fichier, Dim LigneFichier(10000) par exemple, soit tu redimensionnes ton tableau au fur et à mesure que tu lis le fichier avec ReDim Preserve.
    Dans le premier cas, tu prends le risque de tomber sur un fichier plus gros que ce que tu as prévu ou alors tu prends de la place en mémoire inutilement. Ce n'est donc pas forcément très élégant ni très "sécuritaire" mais ça peut éventuellement convenir faute de mieux.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !
      0  0

  20. #20
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Points : 10
    Points
    10
    Par défaut
    ce que je dis est bête la variable i est déclarée.
    Lignefichier ne marche pas , je me fais insulter par mon ordi...
      0  0

Discussion fermée
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Quand vous avez un chef de projet pas facile
    Par lionel84 dans le forum Emploi
    Réponses: 10
    Dernier message: 26/11/2010, 17h21
  2. Créer un projet VB6 (et pas VB.net)
    Par sigfrit dans le forum Visual Studio
    Réponses: 1
    Dernier message: 15/03/2009, 23h52
  3. [VB6]ne pas faire la différence Maj/min dans une chaine
    Par dbozec dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/04/2006, 12h32
  4. un petit histogramme pas facile
    Par Bibouda dans le forum C
    Réponses: 15
    Dernier message: 23/11/2005, 21h17
  5. [VB6] Ne pas faire de retour automatique dans un RichTextBox
    Par Arthaniel dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 20/01/2005, 03h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo