' schrieb:Haste mal ein Muster?
Moin,
genaue Konvention verbirgt sich in einem PDF das in obigem Link enthalten ist. Ein Beispiel daraus wäre z.B.
XLstatus xlGetDriverConfig(XLdriverConfig *pDriverConfig)
typedef struct s_xl_driver_config {
unsigned int dllVersion;
unsigned int channelCount;
unsigned int reserved[10];
XLchannelConfig channel[XL_CONFIG_MAX_CHANNELS];
} XLdriverConfig;
typedef struct s_xl_channel_config {
char name [XL_MAX_LENGTH + 1];
unsigned char hwType;
unsigned char hwIndex;
unsigned char hwChannel;
unsigned short transceiverType;
unsigned int transceiverState;
unsigned char channelIndex;
User manual
XLuint64 channelMask;
unsigned int channelCapabilities;
unsigned int channelBusCapabilities;
unsigned char isOnBus;
unsigned int connectedBusType;
XLbusParams busParams;
unsigned int driverVersion;
unsigned int interfaceVersion;
unsigned int raw_data[10];
unsigned int serialNumber;
unsigned int articleNumber;
char transceiverName [XL_MAX_LENGTH + 1];
unsigned int specialCabFlags;
unsigned int dominantTimeout;
unsigned int reserved[8];
}
XLchannelConfig;
typedef struct {
unsigned int busType;
union {
struct {
unsigned int bitRate;
unsigned char sjw;
unsigned char tseg1;
unsigned char tseg2;
unsigned char sam;
unsigned char outputMode;
}
can;
unsigned char raw[32];
}
data;
}
XLbusParams;
Da man aber die Gesamtanzahl an Bytes kennt, hole ich mir nun ein Byte Array (vgl. letztes Bild) und fummel dann z.B. jeweils 4Bytes zu einem int zusammen. Diese Datentypen verpacke ich dann in einem Cluster und gebe sie zurück.
Das obige Beispiel geht auch noch tiefer verschachtelt und mit Pointer dazwischen ;=) Da muss ich aber erst mal schauen ob das noch mit LV geht...
Gruß,
Robert