Imam file.h datoteku u kojoj je izmedju ostalog i sledeca funkcija:
Code:
int DllExport DataqVReadAIMultiChannelCSharp(int iCardNo, int (*iChannelNumberArray)[4], int iNumberofChannels, int iAIMode, float (*fVoltageArray)[4]);
int DllExport DataqVReadAIMultiChannelCSharp(int iCardNo, int (*iChannelNumberArray)[4], int iNumberofChannels, int iAIMode, float (*fVoltageArray)[4]);
Prvi array je input a drugi bi trebao vratiti neke vrijednosti.
Nigdje na netu ne mogu da nadjem neki normalno napisani dokument kaji objasnjava kako bih trebao da postavim parametre u C# deklaraciji.
Probao sam na sledeci nacin da definisem funkciju u C#-u:
Code:
[DllImport("DataqCF2.dll", SetLastError = true)]
public static extern unsafe int DataqVReadAIMultiChannelCSharp(int iCardNo, int[] iChannelNumberArray, int iNumberofChannels, int iAIMode, float[] fVoltageArray);
[DllImport("DataqCF2.dll", SetLastError = true)]
public static extern unsafe int DataqVReadAIMultiChannelCSharp(int iCardNo, int[] iChannelNumberArray, int iNumberofChannels, int iAIMode, float[] fVoltageArray);
Pozivao sam je na sledeci nacin:
Code:
float[] values = new float[4];
int[] channels = new int[4];
channels[0] = 0;
channels[1] = 1;
channels[2] = 2;
channels[3] = 3;
DataqCF2.DataqVReadAIMultiChannelCSharp(Program.cardCount - 1, channels, 4, 0, values);
float[] values = new float[4];
int[] channels = new int[4];
channels[0] = 0;
channels[1] = 1;
channels[2] = 2;
channels[3] = 3;
DataqCF2.DataqVReadAIMultiChannelCSharp(Program.cardCount - 1, channels, 4, 0, values);
nakon izvrsenja vrijednosti values-a su 0-e. Ako dodam 'out' ispred values onda program napravi exception.
Pomoglo bi mi konkretno rjesenje, a jos vise neki dobar dokument u kojem je napisano sve o tome sa primjerima.
Unaprijed hvala!
Pozdrav!