Fotos zur Dokumentation

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Antworten
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Fotos zur Dokumentation

Beitrag von Werner_Bayern »

Servus,

hat sowas von Euch schon mal jemand realisiert? Wir brauchen sowas für einen Produktionsprozess - nach Fertigstellung sollen 1-3 Bilder dazu abgespeichert werden können. Eine Webcam, die wir softwaremäßig ansteuern können? Muss aber automatisiert über Xbase++ möglich sein.
Wäre unschön, wenn man da auf eine mitgelieferte Software angewiesen wäre, bei der man erst den Pfad zum Abspeichern der Aufnahmen einstellen müsste und wir dann diesen Pfad überwachen auf neue Bilder.
Sollte schon über einen Button "Aufnahme" gehen...
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von Martin Altmann »

Moin,
Manfred hat das bereits gemacht - in HTML. Funzt ganz leicht.
Sollte auch in deinem Fall einfach gehen - einfach HTML mit in den Dialog einbinden.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fotos zur Dokumentation

Beitrag von Werner_Bayern »

Servus Martin,

dann bin ich ja mal gespannt auf Manfreds Post 8)
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von Martin Altmann »

Im Prinzip war es ähnlich dem hier (wenn ich mich recht erinnere):

Code: Alles auswählen

<input type="file" id="mypic" accept="image/*" capture="camera">
Also entscheidend das capture und das accept im input-Tag.
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Fotos zur Dokumentation

Beitrag von Manfred »

auf den ersten Blick habe ich nichts hinzuzufügen. Martins Line ist alles.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von brandelh »

capture="camera"

ist das camera hier ein Eigenname des Treibers oder nimmt der automatisch eine eingerichtete Web Cam ?
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von Martin Altmann »

Letzteres.
Gibt ähnliches für Video bzw. Audio - je nachdem, was gewünscht wird.
HTML5!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Fotos zur Dokumentation

Beitrag von ramses »

Wir haben das mit AXIS Web Cams gemacht. Bei Bewegungserkennung in einem markierten Feld oder per Inputsignal(Lichtschranke) sendet die Cam Bilder per FTP an den Server. Die Bilder können aber auch jederzeit aus dem Xbase-Programm heraus angefordert werden. Das Steuerprogramm (Xbase-Programm als Dienst) verarbeitet die Bilder dann entsprechend den anderen vorhandenen Infos.

Bei der AXIS-Cam können Bilder z.B. mit folgenden Zeilen XBase Code angefordert werden

Code: Alles auswählen

            cComm := "http://192.168.155.128/axis-cgi/jpg/image.cgi?compression=45&clock=1&date=1&resolution=2592x1994"
            // Funktion mit Xbase Socketfunktion
            oResp :=  HttpClient():new( cComm )
            **oResp:setTimeout( [<nResolveTimeout>], [<nConnectTimeout>], [<nSendTimeout>], [<nReceiveTimeout
            oResp:setTimeout( 2000,2000,2000,2000 )  // nicht zu lange warten
            oResp:SetAuthorization( get_axisData("User",""), get_axisData("PSW","") )
            oResp:getFile( cJPGFile )  // Filename mit welchem Bild gespeichert wird
            if oResp:getStatusCode() != 200
               // Handle error
               ?  oResp:getStatusCode(),  oResp:httpResponse:statusText
            endif
            oResp:disconnect()
            oResp := nil
Die IP-Adresse, Auflösung, User und Passwort muss der Kamera angepasst werden. Mit diesem Code in einem Dienst haben wir problemlos viele Bilder von vielen Kameras gelesen und gespeichert. Neuerdings verwenden wir dazu wieder xb2net zur Abfrage weil die Xbase-Funktionen IPv6 als dies dringend benötigt wurde gar nicht unterstützt hat. Ein Durchlauf des Codes für den Abruf eines Bilds benötigt ca. 8/100 Sek.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fotos zur Dokumentation

Beitrag von Werner_Bayern »

Danke.
Wenn ich das über

Code: Alles auswählen

oHtml := XbpHTMLWindow():new(drawingArea)
oHtml:HTML := '<input type="file" id="mypic" accept="image/*" capture="camera">'
mache, erscheint aber nur eine leere Eingabezeile? Klicke ich in das SLE, kommt ein Dateiauswahldialog?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von Martin Altmann »

Werner,
zumindest innerhalb einer Webseite bekommst du hinter dem Eingabefeld auch einen Knopf mit einer Kamera drauf angezeigt. Wenn du darauf klickst, öffnet sich die Kameraaufnahme.
Ist an dem Rechner, an dem du das getestet hattest auch eine eingeschaltete Kamera angeschlossen?
Ist XbpHTMLWindow HTML 5? Oder kann man da entsprechende Header setzen?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von Jan »

Ich hole Bilder bei Mobotix-Kameras ab. Wie Carlo per HTTPClient:

Code: Alles auswählen

oHc := HttpClient():new(cPfad)
oHc:setAuthorization("meinekennung", "meinpasswort")
cFoto := oHc:send()
oHc:disconnect()
oHc := NIL

oBild:loadData(cFoto)
oBild:display()
Die Bilder zeige ich dann ganz klassisch per con XbpBitmap() abgeleiteter Klasse an.

Da ich dort mehrer Kameras auslese im Sekundentakt muß man aber darauf hinweisen, daß das das Netz massiv belasten kann.

Jan
Zuletzt geändert von Jan am Sa, 17. Aug 2019 5:26, insgesamt 1-mal geändert.
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von Jan »

Martin Altmann hat geschrieben: Sa, 17. Aug 2019 0:17Ist XbpHTMLWindow HTML 5? Oder kann man da entsprechende Header setzen?
XBPHTMLWindow() basiert auf htmlayout.dll. Einer Bibliothek eines Drittanbieters aus Kanada aus dem Jahr 2009 für HTML und CSS. Soweit ich das in Erinnerung habe kann die bis HTML 3.2 und CSS 2. Alaska will lt. Aussage von Steffen vor mehreren Jahren auf Chromium umsteigen, damit ginge dann wohl auch HTML 5. Liegt in der Priorität aber anscheinend nicht sehr weit oben. Vielleicht mit der angekündigten Web-Strategie? Wo die ersten Ergebnisse im April- oder Mai- Update kommen sollten?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2513
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Fotos zur Dokumentation

Beitrag von ramses »

Wie ein Test mit der aktuellen Xbase Version und lokalen IPv6 Adresse soeben gezeigt hat funktioniert jetzt HttpClient() auch mit IPv6 Adressen. Auf jeden fall mit lokalen.
Valar Morghulis

Gruss Carlo
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fotos zur Dokumentation

Beitrag von Werner_Bayern »

Servus Martin,

ja, eine USB-Kamera ist angeschlossen und funktioniert auch unter Windows. HTML 5 funktioniert sicherlich nicht mit XbpHTMLWindow - das scheint ein entscheidender Hinweis zu sein.
Wenn ich obige Zeile aber in eine htm-Datei speichere und die mit Firefox, IE 11 oder Edge starte, kommt auch nur ein Dateiauswahl-Dialog.
Auch mit

Code: Alles auswählen

<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Titel</title>
  </head>
  <body>

  </body>
  <input type="file" id="mypic" accept="image/*" capture="camera">
</html>
kein Erfolg.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fotos zur Dokumentation

Beitrag von Werner_Bayern »

Jan hat geschrieben: Sa, 17. Aug 2019 5:00 Ich hole Bilder bei Mobotix-Kameras ab. Wie Carlo per HTTPClient:

oHc := HttpClient():new(cPfad)
Servus Jan,

was verwendest Du für cPfad? Die IP-Adresse der Mobotix?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von Martin Altmann »

Werner,
Hast du mal versucht, die HTML-Seite mit einem Smartphone oder Tablet zu öffnen?
Bei Manfred und seinen Kunden funktioniert das (wobei die Smartphones für den Zugriff auf einen XB2.Net-Server nutzen und damit Bilder aufnehmen und hochladen).

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von Martin Altmann »

Ich sehe gerade: dein Body-Ende-tag steht zu früh!
Das muss direkt vor dem html-Ende-tag kommen (dein Input steht außerhalb der Webseitendefinition)!

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von Martin Altmann »

Yup,
habe gerade einen Beitrag auf Stackoverflow gefunden: Desktop-Browser ignorieren das Camera-Attribut. Geht nur mit mobilen Browsern.
Oder du nimmst GetUserMedia, das sollte auch auf Desktop-Browsern klappen:
https://www.w3.org/TR/mediacapture-streams/

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fotos zur Dokumentation

Beitrag von Werner_Bayern »

Danke Martin!

Das mit GetUserMedia() hatte ich schon gelesen, aber noch nicht getestet.
Zum HTML-Aufbau: Nach meinem Verständnis ist das Input so schon richtig, gehört nicht in den body-Bereich.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fotos zur Dokumentation

Beitrag von Werner_Bayern »

So, dank Martins Hinweise funktionierts mit Firefox schon mal so:

Code: Alles auswählen

<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">
  <title>HTML5 Medien-Zugriff</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style>
    video, img {
      max-width:100%;
    }
  </style>
</head>
<body>

<video autoplay></video>

<script>
  (function() {
    'use strict';
    var video = document.querySelector('video')
      , canvas;

    /**
     *  generates a still frame image from the stream in the <video>
     *  appends the image to the <body>
     */
    function takeSnapshot() {
      var img = document.querySelector('img') || document.createElement('img');
      var context;
      var width = video.offsetWidth
        , height = video.offsetHeight;

      canvas = canvas || document.createElement('canvas');
      canvas.width = width;
      canvas.height = height;

      context = canvas.getContext('2d');
      context.drawImage(video, 0, 0, width, height);

      img.src = canvas.toDataURL('image/png');
      document.body.appendChild(img);
    }

    // use MediaDevices API
    // docs: https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia
    if (navigator.mediaDevices) {
      // access the web cam
      navigator.mediaDevices.getUserMedia({video: true})
      // permission granted:
        .then(function(stream) {
          video.srcObject = stream
		  //video.src = window.URL.createObjectURL(stream);
          video.addEventListener('click', takeSnapshot);
        })
        // permission denied:
        .catch(function(error) {
          document.body.textContent = 'Auf eine Kamera kann nicht zugegriffen werden! Fehler: ' + error.name;
        });
    }
  })();

</script>
</body>
</html>
Quellcode aus GitHub. Damit können Snapshots gemacht werden, die dann im Body des Dokumentes abgelegt erscheinen.

Für meinen Fall aber leider nicht brauchbar - funktioniert nicht mit XbpHTMLWindow und kann nicht automatisiert ablaufen, weil ich dann keinen Zugriff auf das erstellte Bild habe.

Da muss es einen anderen Weg geben?
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von Tom »

Als Formularelement in einem HTML-Formular, das per POST (!) abgeschickt wird, funktioniert das mit Martins einer Zeile Code. Wie ist der Server aufgebaut?
Herzlich,
Tom
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fotos zur Dokumentation

Beitrag von Werner_Bayern »

Servus Tom,

der entscheidende Hinweis kam von Martin:
Desktop-Browser ignorieren das Camera-Attribut. Geht nur mit mobilen Browsern.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Fotos zur Dokumentation

Beitrag von Jan »

Werner_Bayern hat geschrieben: Sa, 17. Aug 2019 21:31was verwendest Du für cPfad? Die IP-Adresse der Mobotix?
Moin Werner,

ja, plus ein paar Parameter. das sieht dann z. B. so aus:

Code: Alles auswählen

http://192.168.0.21/cgi-bin/image.jpg?imgprof=XGA
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Fotos zur Dokumentation

Beitrag von Werner_Bayern »

Danke.
es grüßt

Werner

<when the music is over, turn off the lights!>
Antworten