一组 PId(每个 3 个字节)从保存到原始数组 ( buffer
) 中的硬件返回。该设备准确返回 84 个字节。
然后我需要将这些 PId 复制到一个或多个数组,该数组可由该设备的 API 库读取。
这是我的代码
#pragma pack (1)
typedef unsigned char PId[3];
typedef PId PIDs[28];
int GetList(PId* plist){
unsigned char buffer[84];
//... Reads the data from hardware memory to buffer
if (RunCMD(0xCD, &buffer)){
// buffer has the correct data now 'AAAA...'
memcpy(&plist,buffer, 84);
printf("%02X%02X%02X\n", buffer[0], buffert[1], buffer[2]);
printf("%02X%02X%02X\n", buffer[3], buffer[4], buffer[5]);
return 0;
}
return 1;
}
int main(void) {
...
PId plist_a;
GetList(&plist_a);
printf("%02X%02X%02X\n", plist_a[0][0], plist_a[0][1], plist_a[0][2]);
printf("%02X%02X%02X\n", plist_a[1][0], plist_a[1][1], plist_a[1][2]);
...
}
不知何故,这段代码没有将正确的数据复制到PIDs
数组中。buffer
有正确的数据,但之后memcpy
,pids
没有相同的数据。
我知道我做错了什么,但我找不到。
如果有帮助,我正在用 Windows 编译我的GCC
代码ARM CPU
编辑:我很抱歉让大家感到困惑,实际上代码是有效的,但是我错过了一部分代码。我更正了。 pids
不是类型PIDs
,它是指向它的指针。