Hallo Vision-Experten,
nachdem ich dieses Thema hier bereits in einem anderen Thread gepostet habe - vielen Dank noch einmal für die vielen Lösungsvorschläge - will ich die verschiedenen Ansätze kurz vorstellen und zur Diskussion freigeben.
Eines vorweg - leider war keines der Lösungsvorschläge zielführend.
Die IP Kamera, die ich zum Reden kriegen will, ist von Axis. Genauer, Netzwerkkamera AXIS P1344. Diese ist sogar mit einem PoE-Adapter ausgeliefert und lässt sich für die vielfältigsten Anwendungen umfunktionieren, wenn... ja wenn man denn irgendwie die Bilddaten in ein temporäres Image auslagern könnte, um diese dann weiter zu verarbeiten.
ANSATZ #1: Verwendung der IMAQ-Funktionen
Ist problematisch und aus dem Bauch heraus NICHT sinnvoll, da die Kamera nicht mit Hardware-ID angesprochen werden kann. By the way wäre es schön, wenn jemand wüsste OB und WIE man die IP Kamera als Netzwerkgerät im MAX einbinden kann. Ich bekomme es jedenfalls nicht hin. Der Vorschlag kracht jedenfalls (beinahe erwatungsgemäss) bereits beim ersten Funktionsblock. Bis zur Speicherablage des angestrebten 'Grab Image' kommt es leider nicht.
ANSATZ #2: Einbinden des ActiveX-Elementes (WebBrowser)
Damit bekomme ich zwar das Live-Bild in einem Container auf das Frontpanel dargestellt, aber um die Darstellung geht es mir in erster Linie gar nicht. Im Gegenteil, das Live-Bild benötige ich überhaupt nicht. Ein Abruf in der Art 'GetCurrentFrame' o.ä. gibt es über die Browser-Methoden leider nicht.
ANSATZ #3: Zugriff über die AMC-Methoden (nach CGI-Befehl)
Klingt gut und setzt erst einmal das SDK-Paket für die AxisMediaControl Funktionalität voraus. Mit den HTML-Requests via CGI-Befehlszeilen lassen sich die vielfältigsten Daten- und Konfigurationsabrufe vormulieren. Die Methode 'GetCurrentImage' mit einem sicher leicht zu händeldem Variant als Ausgangstyp schimpft leider rum -> Fehler mit unbekannter ID. Schade. Auch das Bild auf dem Frontpanel wird gar nicht angezeigt, also liegt die Ursache vielleich schon ganz vorn irgendwo vergraben.
ANSATZ #4: Low-Level TCP Tour
Ganz normale Tippel-Tappel-Tour: Session öffenen. Schreiben. Lesen. Schliessen. Versteh ich, hat aber gleich 2 Haken. Zum einen laufe ich mit dem Lesen-Befehl ins Leere (wie der CGI-Befehl verdaut, kann man an der Stelle irgendwie auch nicht einschätzen... läuft zumindest durch). Beim Lesen haut jedenfalls was nicht hin. Zum anderen bereitet mir der Daten-String (Ausgabe) arges Kopfzerbrechen. Wie sieht der String aus? Wie baut er sich zusammen? Wo genau beginnt der Datenblock (in diesem Fall das komprimierte JPG-Image)? Da muss also eigentlich noch etwas mit dem Ausgabe-String geschehen, bevor man die 'Raw Image Data' tatsächlich an die Dekodierung senden kann.
Ich hoffe, dass mir irgend jemand weiterhelfen kann. Es muss doch möglich sein die Bilddaten irgendwie in ein Temp IMAQ Speicher-Bereich zu schieben, oder?
Grüsse, ich geh' erst mal