Пример #1
0
        /// <summary>
        /// Performs a scan of the WLAN interfaces and returns a list of <see cref="AccessPoint"/> elements.
        /// </summary>
        /// <returns></returns>
        public List <ScanSignal> GetScanSignals()
        {
            var scanSignals = new List <ScanSignal>();

            lock (_scannerLock)
            {
                foreach (WlanClient.WlanInterface wlanIface in _wlanClient.Interfaces)
                {
                    Wlan.WlanBssEntry[] wlanBssEntries = null;
                    for (var attempts = this.Retries + 1; attempts > 0; attempts--)
                    {
                        // scan for new bss and wait for notification
                        wlanIface.Scan();
                        _wlanEventScanComplete[wlanIface.InterfaceGuid].WaitOne();
                        wlanBssEntries = wlanIface.GetNetworkBssList();

                        if (wlanBssEntries.Count() > 0)
                        {
                            break;
                        }
                    }

                    foreach (Wlan.WlanBssEntry bss in wlanBssEntries)
                    {
                        byte[] macAddr = bss.dot11Bssid;
                        string tMac    = "";
                        for (int i = 0; i < macAddr.Length; i++)
                        {
                            tMac += macAddr[i].ToString("x2").PadLeft(2, '0').ToUpper();
                        }
                        string ssid = Encoding.ASCII.GetString(
                            bss.dot11Ssid.SSID,
                            0, (int)bss.dot11Ssid.SSIDLength);

                        var signal = new ScanSignal
                        {
                            AP = new AccessPoint
                            {
                                MAC  = tMac,
                                SSID = ssid
                            },
                            RSSI = bss.rssi,
                        };

                        scanSignals.Add(signal);
                    }
                }
            }
            return(scanSignals);
        }
Пример #2
0
        /// <summary>
        /// 两个问题有QuartzModel 有了对象还要这个做什么?二考虑把 QuartzModelList 这个分出去
        /// </summary>
        public bool Update(string jobName)
        {
            if (this.QuartzSchedule == null || string.IsNullOrEmpty(jobName))
            {
                return(false);
            }

            string dllName = jobName + "QuartzTask.dll";
            string path    = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, jobName, dllName);

            byte[]   assemblyBuf = File.ReadAllBytes(path);
            Assembly assembly    = Assembly.Load(assemblyBuf);

            Type type = assembly.GetType(dllName + "." + jobName);

            if (type == null)
            {
                return(false);
            }
            object[] objs = type.GetCustomAttributes(typeof(ScanSignal), true);
            if (objs != null && objs.Length > 0)
            {
                JobBase     job1             = Activator.CreateInstance(type) as JobBase;
                QuartzModel model            = null;
                ScanSignal  customScanSignal = objs[0] as ScanSignal;
                if (customScanSignal != null)
                {
                    IJobDetail job = JobBuilder.Create(type)
                                     .WithIdentity(customScanSignal.JobName, QuartzGroupLevel.GetGroupLevelName(customScanSignal.GroupLevel))
                                     .UsingJobData(new JobDataMap(job1.map))
                                     .Build();
                    TriggerBuilder triggerBuilder = TriggerBuilder.Create()
                                                    .WithIdentity(customScanSignal.JobName + "trigger", QuartzGroupLevel.GetGroupLevelName(customScanSignal.GroupLevel))
                                                    .StartNow();
                    if (String.IsNullOrEmpty(customScanSignal.CronExpression))
                    {
                        triggerBuilder.WithSimpleSchedule(x => x.WithInterval(customScanSignal.TimeSpan).RepeatForever());
                    }
                    else
                    {
                        triggerBuilder.WithCronSchedule(customScanSignal.CronExpression);
                    }
                    ITrigger trigger = triggerBuilder.Build();
                    model = new QuartzModel(customScanSignal.JobName, job, trigger);
                    return(this.QuartzSchedule.UpdateJob(model, model) != null);
                }
            }
            return(false);
        }