今天在使用wifi模块连接路由器的时候得出wifi的信号强度,由于信号强度正常一般在-30 dbm ~ -85 dbm之间
我获取到的信号强度字符串是-43,我是先在c编辑器上实现可以把字符串转化为整数后再把它放在总的程序上的,在c编译器的代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char temp[10]; //数组转换
int i=0; //次数
int h; //最后得出的信号强度值-43
char *a; //a指针,指向所要的地址
char *p; //p指针,指向字符串
char *delims={","}; //分隔逗号
p=strtok("+CWJAP_DEF:STD,2c:57:31:fb:5d:32,6,-43",delims);
while(p!=NULL){
for(i=0;i<4;i++) //循环四次
{
printf("word: %s\n",p);
p=strtok(NULL,delims);
if(i==2) //第三个刚好是-43,把它提取出来
a=p; //提取-43的值然后赋值给a(还是字符串形式)
}
}
printf("%s\n",a); //打印a字符串
strcpy(temp,a); //temp copy 字符串(取整数的)
//-43的字符串copy到temp,所以temp[0]:负号 temp[1]:4 temp[2]:3
h = ((temp[1]-'0')*10+(temp[2]-'0'))*(-1); //由于转化后变成正整数所以要乘以负一
printf("h = %d\r\n",h); //信号强度 -43
return h;
}
说明:
由于本例程主要是获取wifi信号强度值,而且信号强度值范围在-30至-85,所以程序中那段乘以负一的操作是可行的,具体使用还得根据个人的需要去改动,本例程主要是使用字符串函数进行书写,while程序那部分是引用别人的,具体是那篇博客我忘记,等我找到了再把转载路径贴上来。
主要函数 char *strtok(char s[], const char *delim);
s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。