Problema C# con funzione in OCX

martedì 27 gennaio 2009 - 19.20

klaus78 Profilo | Newbie

ho importato un oggetto ocx in un progetto C# dichiarandolo in una classe

----
private AxCOMMLib.AxComm oggetto_ocx = new AxCOMMLib.AxComm();
----

Da C# voglio usare una funzione dell'oggetto ocx che è così definita nel codice
di creazione dell'oggetto OCX stesso (in C);
----
afx_msg long ReadMap(long begin, long end, short FAR* pdata);
----
dove pdata è un puntatore a funzione in cui ritornano i valori letti nella locazione di memoria compresa
tra (begin - end)


Il codice in C# è
----
int inizio = 0;
int fine = 20;
short[] value = new short[fine-inizio+1];
oggetto_ocx.ReadMap(inizio, fine, ref value[0])
-----


Così facendo il problema è che in C# mi ritorna solo il primo valore, mentre gli altri sono vuoti.

Insomma come posso fare interagire array?

Da notare che in C# 'short FAR* pdata' viene tradotto come 'ref short pdata'

Qualche idea? Grazie

klaus78 Profilo | Newbie

Volevo solo dire che sono riuscito a risolvere il problema:

ho esaminato il codice dell'ocx il quale è basato sull'utilizzo di una comm.dll

Io nel mio codice in C# chiamo direttamente i metodi importati dalla comm.dll tramite dllimport.
Il metodo ReadMap della OCX contiene una chiamata al metodo CommReadMap definito in comm.dll

Nel mio codice C# chiamo direttamente CommReadMap senza passare attraverso ReadMap
[DllImport("imalcomm.dll")]
extern static int CommReadMap(int node, int begin, int end,
short[] pdata);
In questo modo riesco a passare array

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5