中级会员
 
- 积分
- 425
- 金钱
- 425
- 注册时间
- 2016-4-17
- 在线时间
- 170 小时
|
发表于 2017-12-18 14:11:42
|
显示全部楼层
#include <stdio.h>
#include <stdlib.h>
unsigned char Data[] = {1,2,3,4,5,8,4,7};
typedef struct {
unsigned char cnt;
unsigned char ValidFlag;
unsigned char buf[250];
} WifiBuf;
typedef struct {
WifiBuf WsnBuf[5];
unsigned char header;
} tagWifiBuf;
tagWifiBuf WsnDataBuf;
unsigned char PutsWsnData2Buf(unsigned char *buf, unsigned char len)
{
unsigned char i;
unsigned char PutCount = 0;
WsnDataBuf.WsnBuf[WsnDataBuf.header].cnt = 0;
for (i = 0; i < len; i++) {
if (WsnDataBuf.WsnBuf[WsnDataBuf.header].cnt < 250) {
WsnDataBuf.WsnBuf[WsnDataBuf.header].buf[i] = buf[i];
WsnDataBuf.WsnBuf[WsnDataBuf.header].cnt++;
if (WsnDataBuf.WsnBuf[WsnDataBuf.header].cnt >= 250) {
WsnDataBuf.WsnBuf[WsnDataBuf.header].cnt = 0;
}
}
else {
break;
}
}
PutCount = WsnDataBuf.WsnBuf[WsnDataBuf.header].cnt;
WsnDataBuf.WsnBuf[WsnDataBuf.header].ValidFlag =1;
WsnDataBuf.header ++;
if (WsnDataBuf.header >=5) {
WsnDataBuf.header = 0;
}
return(PutCount);
}
unsigned char GetsWsnDataFromBuf(unsigned char **Ptr)
{
unsigned char i = 0,j = 0;
for (j = 0; j <5; j++) {
if(WsnDataBuf.WsnBuf[j].ValidFlag == 1){
*Ptr = &(WsnDataBuf.WsnBuf[j].buf[0]);
i= WsnDataBuf.WsnBuf[j].cnt;
WsnDataBuf.WsnBuf[j].ValidFlag = 0;
WsnDataBuf.WsnBuf[j].cnt =0;
break;
}
}
return(i);
}
int main()
{
unsigned char *Ptr ;
int cnt =0;
int i;
PutsWsnData2Buf(Data,sizeof(Data)/sizeof(Data[0]));
/*这里为什么不能使用Ptr 传递出数组的地址
程序运行就崩溃了
*/
cnt = GetsWsnDataFromBuf(&Ptr);
printf("cnt = %d\n",cnt);
for(i =0;i <cnt;i++)
{
printf("i = %d\n",*(Ptr+i));
}
return 0;
}
|
|