Martin,
I haven't yet had time to explore RoboRealm to the extent I'd like, but I
suspect that most analysis you'd likely wish to perform can be handled
by the broad variety of modules provided that can be inserted into the
pipeline, with the results put into one or more variables that AutoIt can
get via GetVariable - this way RoboRealm is doing all the "heavy lifting".
I agree that having to write it to disk and read it back would be rather
clunky, even if one uses a ramdisk to speed the process. I don't yet
know precisely how GetImage works, although I grabbed a look at the
type library if that's of any help to you. Here they are:
// Generated .IDL file (by the OLE/COM Object Viewer)
//
// typelib filename: RR_COM_API.dll
[
uuid(2DDA153B-5603-4697-AAC9-2B6FDCF1DC64),
version(1.0),
helpstring("RR_COM_API 1.0 Type Library"),
custom(DE77BA64-517C-11D1-A2DA-0000F8773CE9, 83951780),
custom(DE77BA63-517C-11D1-A2DA-0000F8773CE9, 1303678299)
]
library RR_COM_APILib
{
// TLib : // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
importlib("stdole2.tlb");
// Forward declare all types defined in this typelib
interface IAPI_Wrapper;
[
uuid(5379A53A-B254-483B-9DA0-AF6BA0970BE3),
helpstring("API_Wrapper Class")
]
coclass API_Wrapper {
[default] interface IAPI_Wrapper;
};
[
odl,
uuid(B3B82392-E613-4711-B619-E04555549903),
helpstring("IAPI_Wrapper Interface"),
dual,
oleautomation
]
interface IAPI_Wrapper : IDispatch {
[id(0x00000001), helpstring("method Connect")]
HRESULT Connect(
[in] BSTR hostname,
[out, retval] long* res);
[id(0x00000002), helpstring("method Disconnect")]
HRESULT Disconnect([out, retval] long* res);
[id(0x00000003), helpstring("method GetDimension")]
HRESULT GetDimension(
[out] VARIANT* width,
[out] VARIANT* height,
[out, retval] long* res);
[id(0x00000004), helpstring("method GetImage")]
HRESULT GetImage(
[in] BSTR name,
[out] VARIANT* image,
[out] VARIANT* width,
[out] VARIANT* height,
[out, retval] long* res);
[id(0x00000005), helpstring("method SetImage")]
HRESULT SetImage(
[in] BSTR name,
[in] VARIANT* image,
[in] VARIANT* width,
[in] VARIANT* height);
[id(0x00000006), helpstring("method GetVariable")]
HRESULT GetVariable(
[in] BSTR name,
[out, retval] BSTR* value);
[id(0x00000007), helpstring("method SetVariable")]
HRESULT SetVariable(
[in] BSTR name,
[in] BSTR value,
[out, retval] long* res);
[id(0x00000008), helpstring("method DeleteVariable")]
HRESULT DeleteVariable(
[in] BSTR name,
[out, retval] long* res);
[id(0x00000009), helpstring("method Execute")]
HRESULT Execute(
[in] BSTR str,
[out, retval] long* res);
[id(0x0000000a), helpstring("method LoadProgram")]
HRESULT LoadProgram(
[in] BSTR filename,
[out, retval] long* res);
[id(0x0000000b), helpstring("method LoadImage")]
HRESULT LoadImage(
[in] BSTR name,
[in] BSTR filename,
[out, retval] long* res);
[id(0x0000000c), helpstring("method SaveImage")]
HRESULT SaveImage(
[in] BSTR name,
[in] BSTR filename,
[out, retval] long* res);
[id(0x0000000d), helpstring("method SetCamera")]
HRESULT SetCamera(
[in] BSTR name,
[out, retval] long* res);
[id(0x0000000e), helpstring("method Run")]
HRESULT Run(
[in] BSTR name,
[out, retval] long* res);
[id(0x0000000f), helpstring("method WaitVariable")]
HRESULT WaitVariable(
[in] BSTR name,
[in] BSTR value,
[in] long timeout,
[out, retval] long* res);
[id(0x00000010), helpstring("method WaitImage")]
HRESULT WaitImage([out, retval] long* res);
[id(0x00000011), helpstring("method LoadPPM")]
HRESULT LoadPPM(
[in] BSTR filename,
[in] VARIANT* image,
[in] VARIANT* width,
[in] VARIANT* height,
[out, retval] long* res);
[id(0x00000012), helpstring("method SavePPM")]
HRESULT SavePPM(
[in] BSTR filename,
[in] VARIANT* image,
[in] VARIANT* width,
[in] VARIANT* height,
[out, retval] long* res);
[id(0x00000013), helpstring("method Open")]
HRESULT Open(
[in] BSTR hostname,
[in] VARIANT* port,
[out, retval] long* res);
[id(0x00000014), helpstring("method Close")]
HRESULT Close([out, retval] long* res);
[id(0x00000015), helpstring("method GetVariables")]
HRESULT GetVariables(
[in] BSTR name,
[out, retval] VARIANT* value);
[id(0x00000016), helpstring("method SetVariables")]
HRESULT SetVariables(
[in] VARIANT* names,
[in] VARIANT* values,
[out, retval] long* res);
[id(0x00000017), helpstring("method SetParameter")]
HRESULT SetParameter(
[in] BSTR mod,
[in] VARIANT* count,
[in] BSTR name,
[in] BSTR value,
long* res);
[id(0x00000018), helpstring("method GetParameter")]
HRESULT GetParameter(
[in] BSTR mod,
[in] VARIANT* count,
[in] BSTR name,
[out, retval] BSTR* res);
[id(0x00000019), helpstring("method MinimizeWindow")]
HRESULT MinimizeWindow([out, retval] long* res);
[id(0x0000001a), helpstring("method MaximizeWindow")]
HRESULT MaximizeWindow([out, retval] long* res);
[id(0x0000001b), helpstring("method MoveWindow")]
HRESULT MoveWindow(
[in] VARIANT* x,
[in] VARIANT* y,
[out, retval] long* res);
[id(0x0000001c), helpstring("method ResizeWindow")]
HRESULT ResizeWindow(
[in] VARIANT* width,
[in] VARIANT* height,
[out, retval] long* res);
[id(0x0000001d), helpstring("method PositionWindow")]
HRESULT PositionWindow(
[in] VARIANT* x,
[in] VARIANT* y,
[in] VARIANT* width,
[in] VARIANT* height,
[out, retval] long* res);
[id(0x0000001e), helpstring("method SaveProgram")]
HRESULT SaveProgram(
[in] BSTR filename,
[out, retval] long* res);
[id(0x0000001f), helpstring("method Pause")]
HRESULT Pause([out, retval] long* res);
[id(0x00000020), helpstring("method Resume")]
HRESULT Resume([out, retval] long* res);
};
};
I hope you find the possibilities as fascinating as I do