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 ...