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 :

[VB]Probleme de lancement d'automate


Sujet :

VB 6 et antérieur

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut [VB]Probleme de lancement d'automate
    Bonjour à tous,

    voici mon probleme : je suis pas un pro de la programmation (encore moins de vb), je tourne en rond, et je deviens fou :

    je cherche à acquerir des donnees à l'aide d'un automate réalisé en vb et lancé depuis PHP (en vu de faire une station meteo consultable à distance).

    J'arrive à lancer la capture, mais mon script ne s'arrete pas.

    je voudrais simplement lancer la capture, que php me rende la main, et pouvoir ensuite arreter la capture

    Comment faire S'IL VOUS PLAIT

    en PJ le script de ma dll et mon script PHP

    Merci d'avance


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
     
    '_____________________________________________________________________________
    '
    '                           Interface VB pour PHP -  Station Meteo
    '
    '                                   Copyright Anthropo@free.fr
    '_____________________________________________________________________________
    '-----------------------------------------------------------------------------
    '
    ' Déclaration des methodes de la DLL d'accès à l'interface
    '
    '-----------------------------------------------------------------------------
     
        Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Long) As Long
        Private Declare Sub CloseDevice Lib "k8055d.dll" ()
        Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal data As Long)
        Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()
        Private Declare Sub SetAllDigital Lib "k8055d.dll" ()
        Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long) As Boolean
        Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Long) As Long
        Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Long)
        Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Long, ByVal DebounceTime As Long)
        Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
     
     
    '_____________________________________________________________________________
    '-----------------------------------------------------------------------------
    '
    ' Déclaration du parametre on/off
    '
    '-----------------------------------------------------------------------------
       Private demarrer As Boolean
     
     
     
    '_____________________________________________________________________________
    '-----------------------------------------------------------------------------
    '
    'Declaration des parametres physiques de l'anémometre : durée de la capture en secondes, rayon des branches de l'anémo en centimetres
    '
    '-----------------------------------------------------------------------------
     
        Private Echantillon As Long
        Private Rayon As Single
     
    Public Function Parametres_anemo(ByVal data1 As Long, ByVal Data2 As Long)
        Rayon = (data1 / 100) ' en m
        Echantillon = Data2 'en s
    End Function
     
     
    ' ______________________________________________________________________________
    ' ----------------------------------------------------------------------------
    ' Déclaration des methodes de l'objet COM
    '
    '-----------------------------------------------------------------------------
     
    Public Function Connect(ByVal Addresse As Long)
        Dim h As Long
        h = OpenDevice(Addresse)
        If (h = O) Then Connect = "Carte connectée" Else Connect = "La carte n'a pas été trouvée"
    End Function
     
     
    Public Sub Deconnect()
        CloseDevice
    End Sub
     
     
    Public Function Vitesse()
        ResetCounter (1)
        SetCounterDebounceTime 1, 0
        Sleep (Echantillon * 1000) 'en ms
        Vitesse = Str(Round((ReadCounter(1) / Echantillon) * 2 * (4 * Atn(1)) * Rayon * 3.6, 2)) ' & " Km/h"   ' V=F*2PI*R en m/s ==> en Km/h
    End Function
     
     
    Public Function Direction()
        Sleep (1000)
        Dim i As Long
        i = (ReadDigitalChannel(3) * 4 + ReadDigitalChannel(4) * 8 + ReadDigitalChannel(5) * 16)
                Direction = i
    End Function
     
     
     
    Public Function temperature() 'la temperature est definie de manière aléatoire en attendant le capteur
        Randomize Timer
        temperature = Int(Rnd * 25) + 1
    End Function
     
     
     
     
    '_____________________________________________________________________________
    '-----------------------------------------------------------------------------
    '
    ' Déclenchement et arrêt de l'automate d'enregistrement des données depuis l'administration Php.
    '
    '-----------------------------------------------------------------------------
     
    Public Function lancer_capture()
        demarrer = True
        Dim Debut As Date
        Debut = Now ' renvoie la date et l'heure courante
        ' Routine de pause (remplacer "s" (secondes) par une des autres unités de temps : s Secondes, n Minutes ou h Heures)
        Do While (demarrer = True)
            SetAllDigital
            Do While Abs(DateDiff("s", Debut, Now)) < 20
                DoEvents ' Repasse la main au système en attendant
            Loop
            If (demarrer = True) Then
                capturer
            Else
                Exit Do
            End If
            ClearAllDigital
        Loop
    End Function
     
     
    Public Function arreter_capture()
        'affectation d'une valeur
        demarrer = false
    End Function
     
     
     
     
    '_____________________________________________________________________________
    '-----------------------------------------------------------------------------
    '
    ' Connection à la base de données Mysql, on va enregistrer les données toutes les trois minutes le jour même
    '
    '-----------------------------------------------------------------------------
     
    Public Sub capturer()
    .../...
    End Sub
     
    '_____________________________________________________________________________
    '-----------------------------------------------------------------------------

    Script PHP de démarrage :
    Code php : 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
     
    <HTML>
    <BODY>
    Test de capture<br><br><br><br>
    <?php
     
    // Appel de la DLL
    $interface=new COM ("velleman.K8055");
     
    // Définie Taille_rayon en centimetres, duree_echantillon en secondes
    $interface->Parametres_anemo("10","1");
     
    //connexion à la carte
    echo $interface->connect("0");
     
    //démarrage de la capture
    $interface->lancer_capture();
     
    //Deconnexion de la carte
    $interface->deconnect();
     
    ?>
    </body>
    </html>

    Script PHP de ‘tentative d’arrêt ‘
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <HTML>
    <BODY>
    Test  d’arret
     
    <?php
    $interface->arreter_capture();
    ?>
    </body>
    </html>

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ta capture te rapporte-t-elle des infos ?
    Avant de lancer la capture, ne peux-tu pas imposer un temps d'attente et si ce temps est dépassé, déconnecter la carte ?

    Juste une idée comme ça, je ne connais pas le php

    A+

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    la capture fonctionne bien, j'alimente une base mysql avec myodbc.

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 17
    Points : 21
    Points
    21
    Par défaut Synchro ou asynchro
    Bonjour,
    Pourrais tu essayer de créer un composant COM VB plutot qu'une DLL?
    En effet, ta Dll va s'executer dans la même zone mémoire que l'appli qui appel(Php ou apache...), donc les appels aux focntions Dll seront synchrones, ils attendront un retour avant de te rendre la main.
    Or, si tu crée un composant, il aura son propre espace d'adressage, comprend par là que les appels n'attendront pas de réponses.

    Comme les composant sont des composant COM, de toute façon, tu n'as rien a changer dans ton code, simplement copie colle dans un projet Composant au lieu de Dll.

    Tiens moi au courrant
    Cordialement,
    Gilles Manouvrier

Discussions similaires

  1. [Système][Process]Probleme de lancement d'un .sh
    Par jool dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 04/05/2005, 11h58
  2. [NetBeans] Probleme au lancement NetBeans
    Par boubou11 dans le forum NetBeans
    Réponses: 2
    Dernier message: 21/04/2005, 11h38
  3. [Kylix] Problème au lancement d'un programme
    Par jeanbi dans le forum EDI
    Réponses: 7
    Dernier message: 19/01/2005, 23h00
  4. [Linux]probleme au lancement d'eclipse sur mandrake 10
    Par Dnx dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/09/2004, 19h34
  5. [Tomcat] [eclipse] probleme au lancement de mes jsp
    Par sandusa dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 11/05/2004, 14h59

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