#include #include "cJSON.h" #include #include #include #include int fd_param; //float *buffer_param; //float *buffer_param; //float *buffer_param; int *buffer_param; //float *buffer_param1; //float *buffer_param2; float ant1_rssi1; void init_share_param(){ fd_param = shm_open("/param.txt",O_RDWR|O_CREAT|O_EXCL,0777); if(fd_param < 0){ fd_param = shm_open("/param.txt",O_RDWR,0777); }else ftruncate(fd_param,4096); buffer_param= mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd_param,0); //buffer_param1= mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd_param,0); //buffer_param2= mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_SHARED,fd_param,0); } int main(int argc,char **argv){ FILE *fp; FILE *fp_bit; char buffer[1024*4]; int buffer_rssi1_1[1024]; int buffer_rssi1_2[1024]; int buffer_rssi2_1[1024]; int buffer_rssi2_2[1024]; //int buffer1[1024*4]; //int buffer1[1024*4]; //float buffer1[1024*4]; //float buffer2[1024*4]; init_share_param(); int i=0; char *ip; char *stat; char str_buf[128]; float bw; float rssi1_1_pre=-40.0f; float rssi1_2_pre=-40.0f; float rssi2_1_pre=-40.0f; float rssi2_2_pre=-40.0f; float ant1rss1_1; float ant1rss2_1; float ant2rss1_1; float ant2rss2_1; //float ant1rss2; //float ant2rss2; int rssi1_1; int rssi1_2; int rssi2_1; int rssi2_2; int lq1_param_count; system("rm -rf status*"); system("rm -rf wget-log*"); //system("rm -rf statusadvanced*"); while(1) { //system("wget http://192.168.10.42/status"); //ip = argv[1]; //stat = argv[2]; sprintf(str_buf,"wget http://%s/status",argv[1]); system(str_buf); fp = fopen("status","r"); if(fp==NULL){ printf("open error\n"); break; } fgets(buffer,1024*4,fp); cJSON *root_json = cJSON_Parse(buffer); //将字符串解析成json结构体 if (NULL == root_json) { printf("error:%s\n", cJSON_GetErrorPtr()); cJSON_Delete(root_json); break; } //buffer_param[0]=0x11; char *out = cJSON_Print(root_json); //printf("%s\n", out); cJSON *linkQ_json = cJSON_GetObjectItem(root_json, "linkQuality"); if(linkQ_json){ cJSON *lq1 = cJSON_GetArrayItem(linkQ_json,0); cJSON *lq2 = cJSON_GetArrayItem(linkQ_json,1); char *out2 = cJSON_Print(lq1); printf("%s\n", out2); lq1_param_count = cJSON_GetArraySize(lq1); //printf("第一个[]里的参数个数:%d\n", lq1_param_count); } cJSON *nodesRssi_json = cJSON_GetObjectItem(root_json, "nodesRssi"); if(nodesRssi_json){ int size2 = cJSON_GetArraySize(nodesRssi_json); if(size2 >=1){ cJSON *psub2 = cJSON_GetArrayItem(nodesRssi_json,0); cJSON *psub3 = cJSON_GetArrayItem(nodesRssi_json,1); //cJSON *psub_3 = cJSON_GetArrayItem(nodesRssi_json,1); char *out1 = cJSON_Print(psub2); // char *out2 = cJSON_Print(psub3); // printf("%s\n", out1); // printf("%s\n", out2); if(psub2){ cJSON *id_json = cJSON_GetObjectItem(psub2,"id"); if(id_json) printf("id %d %d\n",id_json->type,id_json->valueint); buffer_param[3]=id_json->valueint; cJSON *xh_ant1Rssi_json = cJSON_GetObjectItem(psub2,"ant1Rssi"); //xinhaoqiangdu if(xh_ant1Rssi_json){ printf("xh ant1Rssi type %d value %f\n",xh_ant1Rssi_json->type,xh_ant1Rssi_json->valuedouble); // buffer_param[1] = xh_ant1Rssi_json->valuedouble; ant1rss1_1= xh_ant1Rssi_json->valuedouble; rssi1_1=(int)ant1rss1_1; } cJSON *xh_ant2Rssi_json = cJSON_GetObjectItem(psub2,"ant2Rssi"); if(xh_ant2Rssi_json){ printf("xh ant2Rssi type %d value %f\n",xh_ant2Rssi_json->type,xh_ant2Rssi_json->valuedouble); // buffer_param[2] = xh_ant2Rssi_json->valuedouble; ant2rss1_1 = xh_ant2Rssi_json->valuedouble; //buffer_param[2]= rssi1_2=(int)ant2rss1_1; //printf("---rssi %d\n--",rssi1); } i++; buffer_rssi1_1[i] = rssi1_1; buffer_rssi1_2[i] = rssi1_2; buffer_param[1]=rssi1_1; buffer_param[2]=rssi1_2; printf("rssi %d %d \n--",rssi1_1,rssi1_2); printf("s %d %d\n",buffer_param[1],buffer_param[2]); //printf(" 1 %f 2 %f ",buffer1[i],buffer2[i]); #if 1 if((abs(buffer_rssi1_1[i]-buffer_rssi1_1[i-1])>20)||(abs(buffer_rssi1_1[i-2]-buffer_rssi1_1[i-1])>20)) { if(abs(buffer_rssi1_1[i-1])type,id_json1->valueint); buffer_param[6]=id_json1->valueint; cJSON *xh_ant1Rssi_json1 = cJSON_GetObjectItem(psub3,"ant1Rssi"); //xinhaoqiangdu if(xh_ant1Rssi_json1){ printf("xh ant1Rssi type %d value %f\n",xh_ant1Rssi_json1->type,xh_ant1Rssi_json1->valuedouble); // buffer_param[1] = xh_ant1Rssi_json->valuedouble; ant1rss2_1= xh_ant1Rssi_json1->valuedouble; rssi2_1=(int)ant1rss2_1; } cJSON *xh_ant2Rssi_json1 = cJSON_GetObjectItem(psub3,"ant2Rssi"); if(xh_ant2Rssi_json1){ printf("xh ant2Rssi type %d value %f\n",xh_ant2Rssi_json1->type,xh_ant2Rssi_json1->valuedouble); //buffer_param[2] = xh_ant2Rssi_json->valuedouble; ant2rss2_1 = xh_ant2Rssi_json1->valuedouble; rssi2_2=(int)ant2rss2_1; //printf("---rssi %d\n--",rssi1); } i++; buffer_rssi2_1[i] = abs(rssi2_1); buffer_rssi2_2[i] = abs(rssi2_2); buffer_param[7]=rssi2_1; buffer_param[8]=rssi2_2; printf("---rssi %d %d \n--",rssi2_1,rssi2_2); if(lq1_param_count==2){ buffer_param[7]= 0x00; buffer_param[8]= 0x00; } //printf(" 1 %f 2 %f ",buffer1[i],buffer2[i]); #if 0 if((abs(buffer_rssi2_1[i]-buffer_rssi2_1[i-1])>20)||(abs(buffer_rssi2_1[i-2]-buffer_rssi2_1[i-1])>20)) { #if 1 if(abs(buffer_rssi2_1[i-1])=1){ cJSON *psub = cJSON_GetArrayItem(noiseRssi_json,0); // char *out1 = cJSON_Print(psub); // printf("%s\n", out1); if(psub){ cJSON *freq_json = cJSON_GetObjectItem(psub,"freq"); //printf(""); #if 1 if(freq_json){ printf("freq type %d value %d\n",freq_json->type,freq_json->valueint); buffer_param[4] = freq_json->valueint/100000; } #if 0 cJSON *dizhao_ant1Rssi_json = cJSON_GetObjectItem(psub,"ant1Rssi"); if(dizhao_ant1Rssi_json){ printf("dizhao ant1Rssi type %d value %f\n",dizhao_ant1Rssi_json->type,dizhao_ant1Rssi_json->valuedouble); //buffer_param[1] = dizhao_ant1Rssi_json->valuedouble; } cJSON *dizhao_ant2Rssi_json = cJSON_GetObjectItem(psub,"ant2Rssi"); if(dizhao_ant2Rssi_json){ printf("dizhao ant2Rssi type %d value %f\n",dizhao_ant2Rssi_json->type,dizhao_ant2Rssi_json->valuedouble); //buffer_param[2] = dizhao_ant2Rssi_json->valuedouble; } #endif #endif //} } } } #endif #if 0 sprintf(str_buf,"wget http://%s/statusadvanced",argv[1]); system(str_buf); fp_bit = fopen("statusadvanced","r"); if(fp_bit==NULL){ printf("open error\n"); break; } fgets(buffer,1024*4,fp_bit); cJSON *root_json1 = cJSON_Parse(buffer); //将字符串解析成json结构体 if (NULL == root_json1) { printf("error:%s\n", cJSON_GetErrorPtr()); cJSON_Delete(root_json1); break; } char *out1 = cJSON_Print(root_json1); // //printf("%s\n", out1); cJSON *phyrx_json = cJSON_GetObjectItem(root_json1, "phyRxBytes"); if(phyrx_json){ printf(" phyrx %d\n",phyrx_json->valueint); buffer_param[3] = phyrx_json->valueint; //码流 } //ip = argv[1]; #endif fclose(fp); //fclose(fp_bit); system("rm -rf status*"); system("rm -rf wget-log*"); //system("rm -rf config"); //system("rm -rf statusadvanced*"); sleep(2); } return 0; }