/// <summary> /// 利用RSSI得到设备距AP的水平距离 /// </summary> /// <param name="ap_info">参与运算的AP实例</param> /// <returns>单位:m</returns> private static double GetDisFromRSSI(APInfo ap_info) { double rawDis = 0.0; double power = (ap_info.A - ap_info.rssi) / (10 * ap_info.n); rawDis = Math.Pow(10, power); //返回AP到UE的水平距离 return(Math.Sqrt(Math.Pow(rawDis, 2) - Math.Pow(ap_info.height, 2))); }
internal AccessPoint(APInfo apInfo) { _ssid = apInfo._ssid; _mac = apInfo._mac; _rssi = apInfo._rssi; _wepStatus = apInfo._wepStatus; _networkInfrastructure = apInfo._networkInfrastructure; _networkType = apInfo._networkType; BeaconPeriod = apInfo.BeaconPeriod; DSConfig = apInfo.DSConfig; _rates = apInfo._rates; }
/// <summary> /// 根据AP的ID在数据库中查找配置信息 /// </summary> /// <param name="ap_id"></param> /// <returns>返回AP的配置信息</returns> private static APInfo GetAPInfo(string ap_uuid) { ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); CAPInfoProvider apPro = new CAPInfoProvider(); AP_Info_table entity = apPro.GetEntityByUUID(ap_uuid); APInfo apInfo = new APInfo(); try { apInfo.location = new CPoint(entity.x.Value, entity.y.Value); apInfo.A = entity.A.Value; apInfo.n = entity.n.Value; apInfo.height = entity.height.Value; } catch (Exception ex) { log.Error(string.Format("get AP entity from {0} error! please check AP UUID!", ap_uuid)); } return(apInfo); }