El driver carga,y salta la ventana con el mensaje "no se pudieron cargar los filtros en Astromatic" y no me rellena la "persiana" para seleccionar los filtros,sin embargo el driver aparece como conectado y si selecciono filtro desde el interfaz de mi driver el cambio se refleja en astromatic indicando que estoy en el filtro 7, 5 o cualquiera que haya seleccionado.
Cuando miro la traza de ASCOM,
en envia este error
[quote] Names Get GET Names - COM
18:43:47.625 TargetInvocationException System.Reflection.TargetInvocationException: Se produjo una excepción en el destino de la invocación. ---> System.BadImageFormatException: El acceso a la dirección de memoria no es válido. (Excepción de HRESULT: 0x800703E6)[/quote]
Sin embargo el ASCOM conform ,si me lo pilla
[quote]
Properties
18:45:26.906 FocusOffsets Get OK Found 8 filter offset values
18:45:26.906 FocusOffsets Get INFO Filter 0 Offset: 0
18:45:26.921 FocusOffsets Get INFO Filter 1 Offset: 2
18:45:26.921 FocusOffsets Get INFO Filter 2 Offset: 7
18:45:26.921 FocusOffsets Get INFO Filter 3 Offset: 4
18:45:26.937 FocusOffsets Get INFO Filter 4 Offset: 1
18:45:26.937 FocusOffsets Get INFO Filter 5 Offset: 4
18:45:26.953 FocusOffsets Get INFO Filter 6 Offset: 3
18:45:26.953 FocusOffsets Get INFO Filter 7 Offset: 8
18:45:26.984 Names Get OK Found 8 filter names
18:45:26.984 Names Get INFO Filter 0 Name: Luminance
18:45:27.000 Names Get INFO Filter 1 Name: Red
18:45:27.000 Names Get INFO Filter 2 Name: Green
18:45:27.000 Names Get INFO Filter 3 Name: Blue
18:45:27.015 Names Get INFO Filter 4 Name: IR
18:45:27.015 Names Get INFO Filter 5 Name: IRC
18:45:27.031 Names Get INFO Filter 6 Name: HA
18:45:27.031 Names Get INFO Filter 7 Name: P
18:45:27.031 Names Get OK Number of filter offsets and number of names are the same: 8
18:45:27.046 Position Get OK Currently at position: 0
[/quote]
La Funcion Names
Código: Seleccionar todo
function TFilterWheel.Get_Names: PSafeArray;
begin
result:=filterw.SafeArrayNames;
end;
Y como relleno las tablas de offsets y nombres para los SafeArray.(que es el formato cuando el interfaz es COM;
Código: Seleccionar todo
SafeArray,SafeArrayNames: PSafeArray;
...
....
i := 0;
bounds[0].lLbound := 0;
bounds[0].cElements := 8;
SafeArray := SafeArrayCreate(VT_I4, 1, bounds);
v := VarArrayCreate ([0, 7], varOleStr);
For i := 1 to 8 do
begin
safeArrayputElement(SafeArray, i, slot_off[i+1]);
v[i-1]:=slotnames[i]
end;
SafeArrayNames := PSafeArray(TVarData(v).VArray);
La estructura que envio es un array de cadenas ,que es el tipo datos que se indica para esta función en lenguajes que no son .net.