![]() |
Kameraansteuerung - EOleException
Hi! ich hab schon wieder ein Problem, dass mich ziemlich knabbern lässt, ohne dass ich mich einen Millimeter vom Fleck bewege, was die Suche der Lösung angeht. Ich versuche ein Beispielprogramm zur Ansteuerung einer SVS-Vistek Industriekamera mit 11Mpx zu kompilieren, um den Code als Grundprinzip für einen eigenen Image/Videograbber zu nutzen ... es gibt leider nur die beigelegten Beispielcodes, ansonsten keine Codebeispiele.
Auch eine Bedienungsanleitung/Dokumentation mit Erklärung von Codepunkten/Segmenten wird nicht geliefert. Die ganze Sache funktioniert mit beigelegten ActiveX Elementen. Ich bekomme in JEDEM Beispielprogramm den selben Fehler in der TEBoard Configuration. jetzt habe ich folgenden Code:
Delphi-Quellcode:
Die Prozedur bezieht sich dabei auf diese Konfigurationen:
uses Windows, ActiveX, Classes, Graphics, OleServer, OleCtrls, StdVCL;
//[..] type // *********************************************************************// // Forward declaration of types defined in TypeLibrary // *********************************************************************// _IECameraEvents = dispinterface; IEventMonitorSink = interface; IEventMonitor = interface; IECamera = interface; IECameraDisp = dispinterface; IEConfiguration = interface; IEConfigurationDisp = dispinterface; IEBoard = interface; IEBoardDisp = dispinterface; //[..] TEBoard = class(TOleControl) private FIntf: IEBoard; function GetControlInterface: IEBoard; protected procedure CreateControl; procedure InitControlData; override; public procedure SetParamNm(const ParamName: WideString; Value: OleVariant); function GetParamNm(const ParamName: WideString): OleVariant; property ControlInterface: IEBoard read GetControlInterface; property DefaultInterface: IEBoard read GetControlInterface; property DebugMode: TOleEnum index 3 write SetTOleEnumProp; property MultiCamHandle: Integer index 4 read GetIntegerProp; property DriverIndex: Integer index 5 write SetIntegerProp; published end; //[..] procedure TEBoard.SetParamNm(const ParamName: WideString; Value: OleVariant); begin DefaultInterface.SetParamNm(ParamName, Value); //<-------- Fehlerzeile end;
Delphi-Quellcode:
an der markierten Stelle tritt folgender Fehler auf (in jedem Punkt der TEBoard Ansteuerung):
unit MultiCam_First_AX_Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, eVision_TLB, OleCtrls, MULTICAMLib_TLB; type TMultiCam_First_AX = class(TForm) Grab: TButton; Live: TButton; Stop: TButton; EBW8Image1: TEBW8Image; ECamera1: TECamera; EBoard1: TEBoard; procedure FormCreate(Sender: TObject); procedure GrabClick(Sender: TObject); procedure ECamera1Signal(Sender: TObject; SignalType: TOleEnum; const Obj: IDispatch; Last: WordBool); procedure LiveClick(Sender: TObject); procedure StopClick(Sender: TObject); //[..] procedure TMultiCam_First_AX.FormCreate(Sender: TObject); var Width: integer; Heigth: integer; DriverIndex: integer; var1: Variant; var2: Variant; str1: String; str2: String; begin // 1. Use DriverIndex to select the Board to use: DriverIndex := 0; // 2. For Alpha, Gamma, change the topology corresponding // to the CamFile used: EBoard1.DriverIndex := DriverIndex; EBoard1.SetParamNm('BoardTopology','DUO'); //Oder MONO (unterscheidet sich ob eine Medium Config Cam an beide Ports oder je eine Base Config Cam an je einen Port gekabelt wird) // 3. Change your camera files here: ECamera1.Mpf := 'ALPHA_Y'; ECamera1.SetParamNm('CamFile','Std-BW-CCIR_I50SA'); // 4. Put the channel on the board: ECamera1.SetParamNm('DriverIndex',DriverIndex); // 5. Configure the receiving EImage: // (set image size corresponding to camera capture) var1 := ECamera1.GetParamNm('ImageSizeX'); var2 := ECamera1.GetParamNm('ImageSizeY'); str1:= var1; str2:= var2; Width := StrToInt(str1); Heigth := StrToInt(str2); EBW8Image1.SetSize(Width,Heigth); //6. Link the Camera with the EImage: ECamera1.SetCluster(EBW8Image1.Obj); //7. Enable the signals: ECamera1.SetParamNm('SignalEnable:2','ON'); end; Im Projekt MultiCam_First-AX-Projekt1.exe ist eine Exception der Klasse OEleException aufgetreten. Meldung: 'SetParamNm: Invalid Argument'. Prozeß wurde angehalten. Mit einzelne Anweisung oder Start fortsetzen. :wiejetzt: Sämtliche DP und google Recherchen waren erfolglos :( Hat jemand ne idee dazu? :gruebel: Ahso, falls was fehlt schicke ich es nach! Kanns manchmal daran liegen, dass einfach auf die Board Topology ein falscher Wert übergeben wird? Das wäre das einzige was mir einfällt :gruebel: |
Re: Kameraansteuerung - EOleException
Hast du schon mal versucht, die Typelibrary selbst neu einzulesen ?
Durchaus möglich, dass der Demo-Sourcecode noch eine Übersetzung einer älteren Version ist. Die Active-X Library wurde weiterentwickelt, ohne dass die Demos entsprechend angepasst wurden. Das kommt immer wieder mal vor. |
Re: Kameraansteuerung - EOleException
Hi :)
Das hatte ich auch schon versucht, ja :) das problem war einfach, dass euresys das Programm in einer Art WingDings Parametrisierung ausgeliefert hat. :wall: Sprich, die Deklarationen und Werte sind fiktiv und völlig wirr. :gruebel: Nach dem Lesen von ca 290 Seiten PDF Dokumentation habe ich endlich eine Übersicht gefunden, die mit der Suchfunktion nicht aufzufinden war, in der die Board Topology angegeben ist. Nun häng ich am nächsten Punkt, dem CamFile, aber das wird eine ähnliche Deklarationssache sein ;) Ich danke auf jeden Fall für die Bemühungen. Und falls jemand mal an einem ähnlichen Projekt mit Euresys und SVS-Vistek zu knabbern hat, beziehungsweise mit Euresys Produkten im Allgemeinen, einfach ne PM schreiben, ich helfe dann so gut ich kann ;) In diesem Sinne, auf frohes Schaffen leute! :drunken: Gruß, Sascha BTW: falls sich jemand fragt: "Was zum Teufel bearbeitet dieser Spinner für Projekte, PCI-Messkarten (Wo ich noch immer keine Lösung hab :P) und 11Mpx Kameras :cyclops: ich arbeite an der Uni Bremen in einem Sonderforschungsbereich für messtechnik und sensorik :gruebel: auf bald :mrgreen: EDIT: hab oben mal den Parameter so eingefügt, wie er mit dem Grablink Expert 2 Compiliert werden kann ;) wenn das Ding endlich komplett läuft mit der Vistek Cam, dann poste ich das Programm mal, damit zu mindest auf diese Hardware Konfig irgendwer Zurückgreifen kann ;) |
Re: Kameraansteuerung - EOleException
Zitat:
|
Re: Kameraansteuerung - EOleException
Zitat:
|
Re: Kameraansteuerung - EOleException
bin mit den Codedeklarationen heute noch ein gutes stück voran gekommen, ist allerdings etwas mühsam ...
weiter gehts erst nächsten donnerstag, denn solang ist urlaub ;) klausurvorbereitung :kotz: Sobald es was neues gibt und das programm im eigentlich sinne stabil rennt, hier mehr ;) bis dahin :hi: |
Re: Kameraansteuerung - EOleException
Also ... ich habe nach langwieriger Forschungsarbeit und vielen vielen Test mit meiner komischen Kamera einen weg gefunden, wie alles korrekt angesteuert wird und ich sogar ein Livebild mit der Kamera erzeugen kann. Nur häng ich jetzt wieder an der nächsten Treppenstufe fest:
Das livebild liegt in einem Active X - Element, was vom Hersteller zum implementieren mitgeliefert wird. Ich versuche seit dem, eine Snapshot Funktion zu schreiben. Das bedeutet, ich will quasi einen screenshot des bildfensters. Dabei hacke ich aber irgendwie, da ich keine Möglichkeit finde, das Bild einzeln als Datei mit neuem Namen abzulegen. Hat da jemand vielleicht nen neuen Tipp für mich? Da sollte es doch hoffentlich jemanden geben der sich damit auskennt? :wiejetzt: (und ja, gelbe seiten hab ich schon versucht ^^ die antwort zählt also net :warn: *g* ) Danke schonmal im Voraus! PS: falls euch was vom quellcode fehlt oder ähnliches: melden, dann stell ich das so schnell es geht hier rein ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz