INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Werte von Webserver auslesen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

17.12.2020, 15:39
Beitrag #1

Darkskater Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Dec 2020

2020 community edition
-
EN

72xxx
Deutschland
Werte von Webserver auslesen
Hallo zusammen,
nachdem ich bei meinem ersten Problem hier sehr schnell Hilfe gefunden habe und mittlerweile auch fleißig mit LabView spiele, würde ich gerne ein weiteres Projekt angehen.
Es geht um zwei Ultraschallsensoren, welche zur Messung von Entfernungen (zwischen 2 und 4cm) eingesetzt werden. Die beiden Sensoren (UC4-1354B) sind an einem (Gateway angebunden, welches per LAN-Kabel am Rechner hängt. Die Messwerte werden wie folgt abgerufen: Firefox--> Webserver (192.168.0.1) aufrufen --> zum Sensor durchs Menü "durchklicken" (Java)-->Werte erscheinen.
Ich habe eine Excel mit Makro erhalten, welche mir den Messwert in Excel pollt, ohne dass man die o.g. Schritte durchführen muss.

Ziel ist es im Idealfall alles über eine VI laufen zu lassen (Temperatur aus meinem ersten Thread und dann eben die Distanzsensoren). Am elegantesten wäre es natürlich, wenn man die Excel garnicht mehr "manuell" öffnen/starten muss sondern alles über ein und dieselbe VI bedienen/ablesen kann.
Später wird das Ganze dann sukzessive erweitert (z.B. Einbindung von Schichtdickenmesssensoren, temperaturgesteuerte Regelung der Infrarotstrahler etc).

Im Anhang befindet sich die besagte Excel Datei.
Ein Screenshot der Excel sowie der Code von den Makros habe ich beigefügt. (.xlsm-Dateien lassen sich hier leider nicht hochladen). Bei "Port" kann entweder Sensor1 (Port 1) oder Sensor2 (Port 2) ausgewählt werden. Die wirkliche Distanz wird dann über die ersten 3 Zahlen in Zelle B8 berechnet und in B15 als Endergebnis ausgegeben.
   
Code:
Option Explicit

Sub StartPolling()

    If Worksheets(1).Buttons("Button_PollPD").Caption = "Start polling" Then
        Worksheets(1).Buttons("Button_PollPD").Caption = "End polling"
        Call StartQuery(Cells(2, 2), Cells(3, 2), Worksheets(1))
    Else
        Worksheets(1).Buttons("Button_PollPD").Caption = "Start polling"
        StopQuery
    End If
    
End Sub
Code:
Dim timerActive As Boolean
Dim ipAddress As String
Dim activePort As String
Dim currentSheet As Worksheet

Private Sub ParseProcessdataJSON(data As String)
    Dim scriptControl As Object
    Dim json As Object
    
    Set scriptControl = CreateObject("MSScriptControl.ScriptControl")
    scriptControl.Language = "JScript"
    
    Set json = scriptControl.Eval("(" + data + ")")
    
    With currentSheet
        Dim dataObj As Object
        Set dataObj = CallByName(json, "data", VbGet)
        .Cells(8, 3) = CallByName(dataObj, "isValid", VbGet)
        Set processdatainObj = CallByName(dataObj, "processDataIn", VbGet)
        Dim arrayLength As Variant
        arrayLength = CInt(CallByName(processdatainObj, "length", VbGet))
        Dim strPD As String
        For i = 0 To arrayLength - 1
            strPD = strPD + CStr(CallByName(processdatainObj, CStr(i), VbGet))
            If i < arrayLength - 1 Then
                strPD = strPD + ", "
            End If
        Next
        .Cells(8, 2) = strPD
    End With
End Sub

Private Sub QueryRESTProcessData()

    Dim objRequest As Object
    Dim strUrl As String
    Dim strResponse As String
    Dim strBody As String
    Dim portNo As Variant

    Set objRequest = CreateObject("MSXML2.XMLHTTP")
    strUrl = "http://" + ipAddress + "/iolink/sickv1/readPort"

    portNo = CInt(activePort) - 1
    strBody = "{""header"":{""portNumber"":" + CStr(portNo) + "},""data"":{""processData"":""in""}}"

    With objRequest
        .Open "POST", strUrl, False
        .SetRequestHeader "Content-Type", "application/json"
        .SetRequestHeader "Accept", "application/json" ''Content-Type: application/json'
        .Send (strBody)
        strResponse = .ResponseText
    End With

    Debug.Print strResponse
    
    Call ParseProcessdataJSON(strResponse)
    
    currentSheet.Cells(8, 1) = "Port " + activePort
    
    If (timerActive = True) Then
        Application.OnTime Now() + TimeValue("00:00:01"), "QueryRESTProcessData"
    End If
End Sub

Sub StartQuery(ipAddr, port, sheet As Worksheet)
    ipAddress = ipAddr
    activePort = port
    Set currentSheet = sheet
    
    timerActive = True
    Application.OnTime Now() + TimeValue("00:00:01"), "QueryRESTProcessData"
End Sub

Sub StopQuery()
        timerActive = False
End Sub



Wie würdet ihr an die Sache ran gehen? Freue mich über jeden Tipp/HinweisBlush


Vielen Dank im Voraus und viele liebe GrüßeWink2
Christian
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
17.12.2020, 15:46 (Dieser Beitrag wurde zuletzt bearbeitet: 17.12.2020 15:50 von GerdW.)
Beitrag #2

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Werte von Webserver auslesen
Hallo darkskater,

was passiert, wenn du im Browser diese Webseite aufrufst:
Code:
strUrl = "http://" + ipAddress + "/iolink/sickv1/readPort"
?

Was schreibt denn das Manual von Sick zu diesem HTTP-POST-Aufruf? (Schau dir doch mal Kapitel 7.4 im Manual an.)

Zitat:(.xlsm-Dateien lassen sich hier leider nicht hochladen).
Ich lege zwar mangels Excel auf diesem Rechner keinen großen Wert auf XLSM-Dateien, aber du kannst jede Datei hier hochladen, sobald du sie in einem ZIP verpackst…

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.12.2020, 08:56 (Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2020 09:56 von Darkskater.)
Beitrag #3

Darkskater Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Dec 2020

2020 community edition
-
EN

72xxx
Deutschland
RE: Werte von Webserver auslesen
Hallo Gerd,
erst mal ein großes Dankeschön, dass du dir nochmal die Zeit nimmst und mich unterstützt. Das weiß ich wirklich sehr zu schätzen und sehe das auch nicht als selbstverständlich an!Top1
GerdW' schrieb:Hallo darkskater,

was passiert, wenn du im Browser diese Webseite aufrufst:
Code:
strUrl = "http://" + ipAddress + "/iolink/sickv1/readPort"
?
Also bei "http://192.168.0.1/iolink/sickv1/readPort" (bzw. readPort1 und readPort2) erscheint eine komplett weiße Seite und sonst nichts. Seitenquelltext ist auch komplett leer. (192.168.0.1 wäre die IP unter der man den Webserver erreicht)

GerdW' schrieb:Was schreibt denn das Manual von Sick zu diesem HTTP-POST-Aufruf? (Schau dir doch mal Kapitel 7.4 im Manual an.)
Das werde ich mir über die Feiertage mal zu Gemüte führen, vielen Dank für den Tipp! Habe schon etliches beim Hersteller an Dokumenten rausgesucht aber genau DAS Dokument wohl übersehenIsagnix_2

Zitat:(.xlsm-Dateien lassen sich hier leider nicht hochladen).
GerdW' schrieb:Ich lege zwar mangels Excel auf diesem Rechner keinen großen Wert auf XLSM-Dateien, aber du kannst jede Datei hier hochladen, sobald du sie in einem ZIP verpackst…
Done!


Edit: Jetzt als .zip. Sorry, in der Eile...


Viele Grüße
Christian


Angehängte Datei(en)
0.0 .zip  distance.zip (Größe: 24,21 KB / Downloads: 246)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.12.2020, 09:15
Beitrag #4

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Werte von Webserver auslesen
Hallo Christian,

Zitat:Done!
RAR <> ZIP!

ZIP wird von jedem modernen OS per default unterstützt, weil es public domain ist.
RAR ist ein proprietäres Archivformat, die dafür nötige Software hat nicht jeder zur Verfügung.
Deshalb bitte in Zukunft ZIP benutzen, wenn von ZIP gesprochen wird.
(Ich selbst bevorzuge die OpenSource-Alternative 7zip.)

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.12.2020, 10:05
Beitrag #5

Darkskater Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Dec 2020

2020 community edition
-
EN

72xxx
Deutschland
RE: Werte von Webserver auslesen
Sorry, habe es korrigiert
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.12.2020, 10:19 (Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2020 14:07 von jg.)
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: Werte von Webserver auslesen
Hallo Christian,

der Aufruf einer URL in einem Browser ist kein http-POST-Aufruf, so wie von Gerd empfohlen.

Die LabVIEW HTTP-Client-API hat ein passendes VI dafür.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.12.2020, 11:25 (Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2020 11:30 von Darkskater.)
Beitrag #7

Darkskater Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Dec 2020

2020 community edition
-
EN

72xxx
Deutschland
RE: Werte von Webserver auslesen
(18.12.2020 10:19 )jg schrieb:  Hallo Christian,

der Aufruf einer URL in einem Browser ist kein http-POST-Aufruf, so wie von Gerd empfohlen.

Die LabVIEW HTTP-Client-API hat ein passende VI dafür.

Gruß, Jens

Ich werde mich darum kümmern. Kämpfe gerade mit dem PackageManager... lässt sich nicht starten und nicht reparieren/updatenAhrg1

Ich danke euch beiden schonmal sehr!
Melde mich sobald wieder alles läuft...
Schon mal schöne Feiertage, falls man sich nichtmehr liest/schreibtBeer
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
18.12.2020, 13:33
Beitrag #8

th13 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 178
Registriert seit: Oct 2013

2020 SP1
2013
EN


Deutschland
RE: Werte von Webserver auslesen
(18.12.2020 10:19 )jg schrieb:  > Die LabVIEW HTTP-Client-API hat ein passende VI dafür.
Zum Ausprobieren kann man auch die Powershell nutzen:
Code:
$params = @{param1='abc';param2=123}
Invoke-WebRequest -Uri http://<url> -Method POST -Body $params
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Werte in Datei speichern und auslesen Mistered 2 5.446 10.05.2020 13:23
Letzter Beitrag: Mistered
  Webserver Applikation erstellen und starten Kanaille 1 4.969 18.09.2019 13:45
Letzter Beitrag: Kanaille
  Hlife bei meinem Webserver tomanek99 0 3.458 28.11.2018 12:22
Letzter Beitrag: tomanek99
  Webserver emir2707 6 6.040 16.03.2016 16:11
Letzter Beitrag: jg
  Webserver funktioniert nur im debug Modus kraesy 0 4.079 08.07.2015 11:39
Letzter Beitrag: kraesy
  NI Webserver knq 6 9.393 15.06.2015 22:03
Letzter Beitrag: knq

Gehe zu: