Bonjour à tous
Faisant suite à l'exposé d'un premier problème lié au développement d'un programme de pilotage d'une carte relais (code qui fonctionne une fois puis plus rien) : https://www.developpez.net/forums/d2...uis-plus-rien/ , J'en suis à traiter en parallèle des solutions alternatives.
L'objectif étant de pouvoir commuter des relais (carte à 16 relais) via un interface que j'ai développé en VB.Net, et vu que mon code actuel pose soucis, j'ai trouvé l'action palliative qui fait appel à l’exécution de scripts VBS externe au programme. J'arrive actuellement à réaliser la commutation de n'importe quel relais en déclenchant le script VBS en lui transférant le numéro du relais à commuter.
A contrario, en interrogeant la carte, il est possible d'avoir l'état de commutation des 16 relais. Il suffit d'envoyer une commande html http://192.168.1.4/30000/99 pour récupérer une chaine de caractère contenant l'état des relais.
Mon script VBS qui se nomme "Etat_relais.vbs" et qui se trouve actuellement à la racine du disque E est le suivant :
Pour le moment, je visualise le résultat (une chaine de 16 caractères 0 ou 1 qui traduisent l'état réel des relais) dans un MsgBox pour vérifier le bon fonctionnement du script.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Dim aXMLHTTP, aURL aURL = "http://192.168.1.4/30000/99" set aXMLHTTP = CreateObject("MSXML2.XMLHTTP") Call aXMLHTTP.Open("GET", aURL, False) Call aXMLHTTP.send() Call MsgBox(mid(aXMLHTTP.responseText, 21,16)) ' Extraction d'une chaine de 16 caractères à partir du 21ème pour n'avoir que l'état des relais. set aXMLHTTP = Nothing
Dans mon programme VB.Net, j'exécute les lignes suivantes pour lancer le script VBS :
Ma question est comment récupérer cette variable dans mon code VB.Net afin de la traiter ? J'ai passé beaucoup de temps à chercher (peut-être mal) et j'ai trouvé certaines solutions entre de l'exe, du bat, ... Mais entre VBS et VB.Net, rien !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim Etat_Rel Dim p As New System.Diagnostics.Process() p.StartInfo.FileName = "E:\Etat_relais.vbs" p.Start()
Merci pour votre aide
Jean-Pierre
Partager