Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Programme en VB



  1. #1
    jkidd

    Programme en VB


    ------

    Voila, j'aimerais savoir si dans le programme que je suis en train de finir, vous y voyez quelquechose de bizarre, merci

    Code:
    Option Explicit
    Dim Dimension As String
    Dim nBuffer As Integer
    Dim i As Integer
    Private MonTableau() As String
    Dim Row As Integer
    
    
    Private Sub CmdAcqui_Click()
        CmdAcqui.Enabled = False
        CmdInit.Enabled = False
        
            MSComm1.Output = Chr(&H22) & Chr(&H14) & Chr(&H0)  'On met 0h a l'adresse 14h => On arrete l'acquisition des temperature avec MIP=0
            MSComm1.Output = Chr(&H55) 'On va maintenant lire des données
            MSComm1.Output = Chr(&H33) & Chr(&H0) & Chr(&H1A)  'On lit la page avec OOh pour poids fort et 1Ah pour poids faible
      
                    Do
                        nBuffer = MSComm1.InBufferCount 'On fait une boucle pour obtenir que les 8 premieres valeurs de la page recu sur le port serie
                    Loop While nBuffer < 8
                
                    Dimension = MSComm1.Input
                    Dimension = Asc(Left(Dimension, 1))
                    ReDim MonTableau(Dimension - 1)
                
            MSComm1.Output = Chr(&H55) 'On va maintenant lire des données
            MSComm1.Output = Chr(&H33) & Chr(&H10) & Chr(&H0)   'On lit la page avec 1Oh pour poids fort et 0h pour poids faible
                        
                    Do
                        nBuffer = MSComm1.InBufferCount 'On fait une boucle pour obtenir que les 34 premieres valeurs de la page recu sur le port serie
                    Loop While nBuffer < 34
                        
                        For i = 0 To Dimension - 1
                        MonTableau(i) = Mid(MSComm1.Input, i, i + 1) 'On place nos valeurs dans le tableau
                        Next i
                        
            MSChart1.TitleText = "Graphique de températures"
            MSChart1.chartType = VtChChartType2dLine
            
                    With MSChart1
                         .Repaint = False ' Pas de rafraichissement
                         .ColumnCount = 1 ' Nombre de courbe
                         .RowCount = Dimension ' Nombre de points
    
                         'Tracé du graphique
                         .Column = 1 ' Numero du graphique
                         .ColumnLabel = "MonTableau" ' Libellé du 1er graphe
    
                         'On rentre les valeurs du graphe point par point
                            For Row = 1 To Dimension
                                .Row = Row 'Absisse X
                                .RowLabel = CStr(Row) 'On convertit en Single
                                .Data = MonTableau(Row) 'Ordonnée Y
                            Next Row
                                             
                        .Repaint = True ' Rafraîchissement du controle
                    
                    End With
                        
                    
    
    End Sub
    
    Private Sub CmdInit_Click()
      CmdInit.Enabled = False
      CmdAcqui.Enabled = False
      
      MSComm1.Output = Chr(&H22) & Chr(&HE) & Chr(&H40) 'On ecrit 40h a l'adresse 0Eh => On met CLR a 1
      MSComm1.Output = Chr(&HA5) 'On efface la memoire
      
            Dim i As Variant
            For i = 0 To 10000000 'On met en palce une boucle pour laisser le temps au DS1616 d'effacer sa memoire
             i = i + 1
            Next i
      
      MSComm1.Output = Chr(&H22) & Chr(&H29) & Chr(&H40) 'On ecrit 40h a l'adresse 29h => On met CS0 à 1
      MSComm1.Output = Chr(&H22) & Chr(&HE) & Chr(&H10)   'Ecriture de l'octet 10h a l'adresse 0Eh => On met SE a 1
      MSComm1.Output = Chr(&H22) & Chr(&HD) & Chr(&H1)  'On ecrit 01h a l'adresse 0Dh => On met 1 minute entre chaque acquisition de temperature
      
      CmdInit.Enabled = True
      CmdAcqui.Enabled = True
         
    End Sub
    
    Private Sub Form_Load()
      With MSComm1
        .CommPort = 1 'On initialise la liaison serie sur le port 1
        .Settings = "9600,N,8,1" 'On met une cadence de 9600 bauds, sans parité, 8 bits de données (avec un bit de start) et un bit stop
        .PortOpen = True 'On ouvre le port
      End With
      
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
      MsgBox "Etes vous sur de vouloir quitter l'application?", vbQuestion + vbOKCancel, "Sortie"
      
    End Sub
    J'ai ajouté la balise code (#) pour plus de lisibilité.
    Merci d'exploiter les fonctionnalités du forum.

    yoda1234.

    -----
    Dernière modification par yoda1234 ; 15/03/2007 à 12h30.

  2. Publicité
  3. #2
    Stan_94

    Re : Programme en VB

    Bonjour,

    Si j'ai bien compris, tu fait de l'acquisition de données depuis un genre de thermomètre électronique via le port série afin d'en faire un graphique par l'object MSchart20Lib.
    C'est trés intéressant ! Par contre le programme marche-t-il? A première vue il n'y a rien de bizarre...

    Bon courage.

  4. #3
    jkidd

    Re : Programme en VB

    Oui Stan_94, il s'agit en fait d'un DS 1616 que j'essaye de faire fonctionner apres une phase ou il y a socker des temperatures de maniere autonome.

    Mon soucis, c'est plus la mise en oeuvre de la commande MSChart que le reste, est ce que ca semble correct ?

    Merci

  5. #4
    Stan_94

    Re : Programme en VB

    Ca semble correct, à par un petit truc...
    Je ne sais pas d'où ça vient, et j'ai tester vite fait l'utilisation de MSChart, mais j'ai du mettre
    Dimension = Dimension - 1
    avant
    For Row = 1 To Dimension
    .Row = Row 'Absisse X
    .RowLabel = CStr(Row) 'On convertit en Single
    .Data = MonTableau(Row) 'Ordonnée Y
    Next Row


    sinon il y avait un dépassement de capacité ???
    Il faudra que je me penche sur la question dès que j'aurai un moment, à moins que quelqu'un connaisse la chose !

  6. A voir en vidéo sur Futura
  7. #5
    jkidd

    Re : Programme en VB

    oui j'y avait pensé et je pense que ca marche sans probleme comme ca, merci d'avoir lever mon doute Stan_94 (il me semble que le reste marche super bien - a mon echelle lol)

    Encore MERCI STAN_94

    D'ailleurs, je peux pas ecrire :
    Code:
    
    For Row = 1 To Dimension - 1
    .Row = Row 'Absisse X
    .RowLabel = CStr(Row) 'On convertit en Single
    .Data = MonTableau(Row) 'Ordonnée Y
    Next Row
    au lieu de
    Code:
    Dimension = Dimension - 1
    avant
    For Row = 1 To Dimension
    .Row = Row 'Absisse X
    .RowLabel = CStr(Row) 'On convertit en Single
    .Data = MonTableau(Row) 'Ordonnée Y
    Next Row
    Dernière modification par jkidd ; 15/03/2007 à 13h45.

  8. #6
    Stan_94

    Re : Programme en VB

    Mais de rien, tu apportes plus que moi sur ce coup!
    Et je trouve ton code interessant, je vais peut-être me mettre à regarder comment marche tout ça, pour faire soit même une sonde externe qui serait relié et piloté par le PC via le port série...

    Sinon, le deuxième code marche aussi :
    Code:
    For Row = 1 To Dimension - 1
    .Row = Row 'Absisse X
    .RowLabel = CStr(Row) 'On convertit en Single
    .Data = MonTableau(Row) 'Ordonnée Y
    Next Row
    c'est bon, mais pour être lisible je conseillerais de mettre des parenthèses
    Code:
    For Row = 1 To (Dimension - 1)
    Encore un truc tant que j'y pense. Tu comptes stocker les relevés dans une base de donnée, fichier ou autre ? A moins que le DS 1616 ne le permette...

  9. Publicité
  10. #7
    jkidd

    Re : Programme en VB

    Le DS1616 stocke dans un histogramme mais pas plus 2047 de valeurs, donc j'y transposerai dans une base de données par la suite.

    En plus de faire capteur de temperature, il a 3 entrées analogiques pour d'autres capteurs comme capteur humidite, capteur pression...

    Pour rappel, il possede une horloge a temps réel (super interessant si on veut se faire une petite station météo....-j'y compte bien y arriver d'ici un petit mois)

Discussions similaires

  1. programme
    Par sound dans le forum Électronique
    Réponses: 3
    Dernier message: 06/12/2007, 18h50
  2. Programme TI-89
    Par MagStellon dans le forum Logiciel - Software - Open Source
    Réponses: 17
    Dernier message: 25/10/2007, 17h49
  3. Programme C
    Par traxxa dans le forum Électronique
    Réponses: 3
    Dernier message: 21/03/2007, 21h02
  4. [Brun] Programme TV
    Par turepi dans le forum Dépannage
    Réponses: 0
    Dernier message: 12/01/2007, 18h52
  5. programme
    Par sifepolik dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 26/04/2006, 13h13
Découvrez nos comparatifs produits sur l'informatique et les technologies.