Network programming Wifi质量百分比

Network programming Wifi质量百分比,network-programming,wifi,formula,Network Programming,Wifi,Formula,我想知道如何根据以下两个值确定Wifi质量: Signal strength measured in dBm: e.g.: -51 dBm Signal To Noise Ratio e.g. 70/70 我从系统中获取这些值,但希望在用户界面中显示wifi质量图标,因此我应该使用某种公式将这些值转换为百分比。好的,所以我现在就知道了。对于那些有同样问题的人,我会这样做 guint32 nm_ap_utils_level_to_quality (gint val) { if (val &l

我想知道如何根据以下两个值确定Wifi质量:

Signal strength measured in dBm: e.g.: -51 dBm
Signal To Noise Ratio e.g. 70/70

我从系统中获取这些值,但希望在用户界面中显示wifi质量图标,因此我应该使用某种公式将这些值转换为百分比。

好的,所以我现在就知道了。对于那些有同样问题的人,我会这样做

guint32
nm_ap_utils_level_to_quality (gint val)
{
  if (val < 0) {
    /* Assume dBm already; rough conversion: best = -40, worst = -100 */
    val = abs (CLAMP (val, -100, -40) + 40); /* normalize to 0 */
    val = 100 - (int) ((100.0 * (double) val) / 60.0);
  } else if (val > 110 && val < 256) {
    /* assume old-style WEXT 8-bit unsigned signal level */
    val -= 256; /* subtract 256 to convert to dBm */
    val = abs (CLAMP (val, -100, -40) + 40); /* normalize to 0 */
    val = 100 - (int) ((100.0 * (double) val) / 60.0);
  } else {
    /* Assume signal is a "quality" percentage */
    val = CLAMP (val, 0, 100);
  }
  g_assert (val >= 0);
  return (guint32) val;
}
guint32
nm_ap_utils_level_to_quality(gint val)
{
if(val<0){
/*假设dBm已经存在;粗略转换:最佳=-40,最差=-100*/
val=abs(钳位(val,-100,-40)+40);/*标准化为0*/
val=100-(int)(100.0*(双)val)/60.0);
}否则如果(val>110&&val<256){
/*假设旧式WEXT 8位无符号信号电平*/
val-=256;/*减去256可转换为dBm*/
val=abs(钳位(val,-100,-40)+40);/*标准化为0*/
val=100-(int)(100.0*(双)val)/60.0);
}否则{
/*假设信号为“质量”百分比*/
val=夹具(val,0,100);
}
g_断言(val>=0);
返回(guint32)val;
}