在我使用封闭库的C应用程序中,当接收操作完成时,我得到一个回调,在这个回调中,我使用的框架执行此操作
void callbackRX(event_t ID, callbackData_t *callbackData_p){
rxData_t *dataPacket = (rxData_t *)(callbackData_p->params.rxInfo.dataInfo);
//...
}
callbackData_t type
看起来像这样:
typedef struct
{
status_t status; // callback status
union
{
sync_t rxSync;
rxInfo_t rxData;
}params;
}callbackData_t;
rxInfo_t
是这样的:
typedef struct
{
UINT32 dataInfo;
}rxInfo_t;
和rxData_t
这样的结构:
typedef struct
{
UINT16 *data_p; // pointer to data
}rxData_t;
现在,在我的库提供的回调中,我需要在data_p
内读出dataPacket
中的数据,所以我尝试了
void callbackRX(event_t ID, callbackData_t *callbackData_p){
rxData_t *dataPacket = (rxData_t *)(callbackData_p->params.rxInfo.dataInfo);
// Read first byte of data from the data pointer
int test;
test = dataPacket->data_p[0];
}
但我获得的数字只是一个非常大的整数,例如14236,我应该读出256,因为收到的数据应该是73字节的大数组,从256
开始计数到512
,1024
等。
我做错了什么?
答案 0 :(得分:1)
您需要指定指向实际数据的指针。
例如:
typedef struct
{
UINT16 *data_p; // pointer to data
}rxData_t
...
UINT16 buff[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
rxData_t my_data;
my_data.data_p = buff;
printf ("data[0]= %d\n", my_data.data_p[0]);