/// <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); }
/// <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); }