How to convert Wifi signal strength from Quality (percent) to RSSI (dBm)?

后端 未结 11 951
故里飘歌
故里飘歌 2020-12-04 12:42

How should I convert Wifi signal strength from a Quality in percentage, usually 0% to 100% into an RSSI value, usually a negative dBm number (i.e. -96db)?

11条回答
  •  渐次进展
    2020-12-04 13:24

    Mentioned pseudocode will not work all the ranges, the ranges example (-80dBm to 0, and -40dBm to 100).

    Generic simple logic to map any range to 0 to 100. Usage example, for below code ConvertRangeToPercentage(-80,-40,-50)

    int ConvertRangeToPercentage (int a_value_map_to_zero, int a_value_map_to_100, int a_value_to_convert)
    {
    
       int percentage = 0;
    
       if (a_value_map_to_zero < a_value_map_to_100)
       {
          if (a_value_to_convert <= a_value_map_to_zero)
          {
             percentage = 0;
          }
          else if (a_value_to_convert >= a_value_map_to_100)
          {
             percentage = 100;
          }
          else
          {
             percentage = (a_value_to_convert - a_value_map_to_zero) * 100 / (a_value_map_to_100 - a_value_map_to_zero);
          }
       }
       else if (a_value_map_to_zero > a_value_map_to_100)
       {
          if (a_value_to_convert >= a_value_map_to_zero)
          {
             percentage = 0;
          }
          else if (a_value_to_convert <= a_value_map_to_100)
          {
             percentage = 100;
          }
          else
          {
             percentage = (a_value_to_convert - a_value_map_to_zero) * 100 / (a_value_map_to_100 - a_value_map_to_zero);
          }
       }
       else
       {
          percentage = 0;
       }
    
       return percentage;
    }
    

提交回复
热议问题