#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; FILE *fp_config; 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 buffer_rssi3_1[1024]; int buffer_rssi3_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 rssi3_1_pre=-40.0f; float rssi3_2_pre=-40.0f; float antrss1_1; float antrss2_1; float antrss1_2; float antrss2_2; float antrss1_3; float antrss2_3; //float ant1rss2; //float ant2rss2; int rssi1_1; int rssi1_2; int rssi2_1; int rssi2_2; int rssi3_1; int rssi3_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 *psub4 = cJSON_GetArrayItem(nodesRssi_json,2); //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; antrss1_1= xh_ant1Rssi_json->valuedouble; rssi1_1=(int)antrss1_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; antrss2_1 = xh_ant2Rssi_json->valuedouble; //buffer_param[2]= rssi1_2=(int)antrss2_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 0 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 0 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; antrss1_2= xh_ant1Rssi_json1->valuedouble; rssi2_1=(int)antrss1_2; } 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; antrss2_2 = xh_ant2Rssi_json1->valuedouble; rssi2_2=(int)antrss2_2; //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])type,id_json2->valueint); buffer_param[10]=id_json2->valueint; cJSON *xh_ant1Rssi_json2 = cJSON_GetObjectItem(psub4,"ant1Rssi"); //xinhaoqiangdu if(xh_ant1Rssi_json2){ printf("xh ant1Rssi type %d value %f\n",xh_ant1Rssi_json2->type,xh_ant1Rssi_json2->valuedouble); // buffer_param[1] = xh_ant1Rssi_json->valuedouble; antrss1_3= xh_ant1Rssi_json2->valuedouble; rssi3_1=(int)antrss1_3; } cJSON *xh_ant2Rssi_json2 = cJSON_GetObjectItem(psub4,"ant2Rssi"); if(xh_ant2Rssi_json2){ printf("xh ant2Rssi type %d value %f\n",xh_ant2Rssi_json2->type,xh_ant2Rssi_json2->valuedouble); //buffer_param[2] = xh_ant2Rssi_json->valuedouble; antrss2_3 = xh_ant2Rssi_json2->valuedouble; rssi3_2=(int)antrss2_3; //printf("---rssi %d\n--",rssi1); } i++; buffer_rssi3_1[i] = abs(rssi3_1); buffer_rssi3_2[i] = abs(rssi3_2); buffer_param[11]=rssi3_1; buffer_param[12]=rssi3_2; printf("---rssi %d %d \n--",rssi3_1,rssi3_2); if(lq1_param_count==2){ buffer_param[11]= 0x00; buffer_param[12]= 0x00; } }else { printf("=====\n"); buffer_param[11]=0x00; buffer_param[12]=0x00; } #endif #endif } } #if 0 cJSON *noiseRssi_json = cJSON_GetObjectItem(root_json, "noiseRssi"); if(noiseRssi_json){ int size1 = cJSON_GetArraySize(noiseRssi_json); if(size1 >=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 sprintf(str_buf,"wget http://%s/config",argv[1]); system(str_buf); fp_config = fopen("config","r"); if(fp_config==NULL){ printf("open error\n"); break; } fgets(buffer,1024*4,fp_config); cJSON *root_json_c = cJSON_Parse(buffer); //将字符串解析成json结构体 if (NULL == root_json_c) { printf("error:%s\n", cJSON_GetErrorPtr()); cJSON_Delete(root_json_c); break; } char *out1 = cJSON_Print(root_json_c); //printf("%s\n", out1); cJSON *id_config = cJSON_GetObjectItem(root_json_c, "id"); cJSON *pwAtten2 = cJSON_GetObjectItem(root_json_c, "pwAtten2"); cJSON *pwAtten1 = cJSON_GetObjectItem(root_json_c, "pwAtten1"); printf(" pwAtten2 %d\n",pwAtten2->valueint); printf(" pwAtten1 %d\n",pwAtten1->valueint); //printf("id_config %s \n",id_config); //if(id_config){ // printf(" phyrx %d\n",id_config->valueint); //buffer_param[3] = phyrx_json->valueint; //码流 //} #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); fclose(fp_config); system("rm -rf status*"); system("rm -rf wget-log*"); system("rm -rf config"); //system("rm -rf statusadvanced*"); sleep(2); } return 0; }