Eine Reihe von StrukturenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Eine Reihe von Strukturen

Post by Anonymous »

Ich arbeite mit einer nicht verwalteten C ++ - DLL in C#, die ein Messgerät über USB steuert. Ich habe eine Messung von Einzelwertemessungen erhalten, aber ich habe Schwierigkeiten, aufgezeichnete Daten wiederherzustellen ... Ich denke, ich kann den Weg nicht richtig finden, um die Auswahl der Struktur richtig zu marschieren. < /P>

Code: Select all

int OutNo = 1; //Measurement head #1 selected
int NumOfBuffer = 10; //Number of datapoints recorded
LKIF_FLOATVALUE[] OutBuffer = new LKIF_FLOATVALUE[10]; //data buffer
int NumReceived = 0; //number of valid points

RC ReturnCode = LKIF2_DataStorageGetData(OutNo, NumOfBuffer, out OutBuffer, ref NumRecieved); //returns a Null pointer for OutBuffer and an error return code "Response receiving error"

[DllImport("LkIF2.dll")]
public static extern RC LKIF2_DataStorageGetData(int OutNo, int NumOfBuffer, out LKIF_FLOATVALUE[] OutBuffer, ref int NumReceived);

public struct LKIF_FLOATVALUE
{
public LKIF_FLOATRESULT FloatResult;
public float Value;
}
public enum LKIF_FLOATRESULT
{
LKIF_FLOATRESULT_VALID,         // valid data
LKIF_FLOATRESULT_ALARM,         // alarm
LKIF_FLOATRESULT_INVALID,       // Invalid (error, etc.)
}
< /code>
Und hier ist der Abschnitt der Header -Datei mit dem Funktionsprototyp: < /p>
// Outputting the Data Storage
EXP RC WINAPI LKIF2_DataStorageGetData(IN int OutNo,IN int NumOfBuffer,OUT LKIF_FLOATVALUE * OutBuffer,OUT int *NumReceived);
< /code>
Ich habe versucht, mit verschiedenen Marschalloptionen für die Struktur zu spielen, aber im Wesentlichen kein Glück. Zu diesem Zeitpunkt wäre ich glücklich, auch wenn der Puffer nicht dynamisch zugewiesen werden könnte. Ich habe Angst, dass ich für Lösungen verletzt bin. Das [url=viewtopic.php?t=20324]Problem[/url] liegt im Marsching des Arrays von lkif_floatValue [].// Measurement value structures
typedef enum {
LKIF_FLOATRESULT_VALID,         // valid data
LKIF_FLOATRESULT_INVALID,       // Invalid (error, etc.)
} LKIF_FLOATRESULT;
// Measurement value
typedef struct {
int                 OutNo;          // OUT No(0-11)
LKIF_FLOATRESULT    FloatResult;    // valid or invalid data
float               Value;          // Measurement value
} LKIF_FLOATVALUE_OUT;
typedef struct {
LKIF_FLOATRESULT    FloatResult;    // valid or invalid data
float               Value;          // Measurement value
} LKIF_FLOATVALUE;

// Measured value output (single)
EXP RC WINAPI LKIF2_GetCalcDataSingle(IN int OutNo,OUT LKIF_FLOATVALUE_OUT * CalcData);
// Outputting the Data Storage
EXP RC WINAPI LKIF2_DataStorageGetData(IN int OutNo,IN int NumOfBuffer,OUT LKIF_FLOATVALUE * OutBuffer,OUT int *NumReceived);

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post