Einzelnen Beitrag anzeigen

Sascha.E

Registriert seit: 9. Nov 2006
Ort: Bremen
11 Beiträge
 
#1

Kameraansteuerung - EOleException

  Alt 15. Jan 2007, 11:08
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:
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;
Die Prozedur bezieht sich dabei auf diese Konfigurationen:
Delphi-Quellcode:
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;
an der markierten Stelle tritt folgender Fehler auf (in jedem Punkt der TEBoard Ansteuerung):

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.


Sämtliche DP und google Recherchen waren erfolglos
Hat jemand ne idee dazu?

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
Wenn ich was net kriege, was ich haben will, dann mach ich den Traubenklaufuchs ...
  Mit Zitat antworten Zitat