private void SyncOSDConfig(DeviceModel deviceModel) { this.MainGridEnabled = false; try { OSDConfig osd = NetworkDeviceHelper.GetOSDConfig(deviceModel); int currentCount = 0; int maxCount = 100; DeviceModel[] selectedDevices = this.Devices.Where(x => x.IsSelected == true).ToArray(); foreach (var item in selectedDevices) { do { if (currentCount < maxCount) { Interlocked.Increment(ref currentCount); Task task = Task.Run(() => { CopyOSDConfig(item, osd); }) .ContinueWith(x => { Interlocked.Decrement(ref currentCount); }); break; } System.Threading.Thread.Sleep(100); } while (true); } while (currentCount > 0) { System.Threading.Thread.Sleep(100); } this.ShowMessageAsync("同步OSD参数完成", null); } catch (Exception ex) { this.ShowMessageAsync("同步OSD参数失败", ex.Message.ToString()); Helper.Logger.Error(String.Format("SyncOSDConfig {0} error.", deviceModel?.IPAddress), ex); } finally { this.MainGridEnabled = true; } }
private void CopyOSDConfig(DeviceModel deviceModel, OSDConfig osd) { //Object[] data = state as Object[]; //DeviceModel deviceModel = data[0] as DeviceModel; //OSDConfig osd = data[1] as OSDConfig; try { NetworkDeviceHelper.CopyOSDConfig(deviceModel, osd); deviceModel.SettingSucceed = true; } catch (Exception ex) { deviceModel.SettingSucceed = false; Helper.Logger.Error(String.Format("CopyOSDConfig failed. DeviceIP:{0}", deviceModel.IPAddress), ex); } //DeviceSettingDelegate parameterizedThreadStart = (x,y) => //{ // x.SettingSucceed = y; //}; //Application.Current.Dispatcher.BeginInvoke(parameterizedThreadStart, deviceModel,succeed); }
private void ReadOSDName(Object state) { DeviceModel model = state as DeviceModel; Int32 retryTimes = 0; while (retryTimes++ < 3) { try { if (model == null) { return; } model.Name = NetworkDeviceHelper.GetOSDConfig(model).Name; break; } catch (Exception ex) { System.Threading.Thread.Sleep(2000); Helper.Logger.Error(String.Format("ReadOSDName failed, IPAddress:{0}.", model?.IPAddress), ex); } } }
private void ImportExcelData() { try { OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Excel Files | *.xlsx";; if (openFileDialog.ShowDialog() == true) { IList <DeviceExcelData> deviceExcelDatas = ExcelPackageExporter.ImportDeviceExcelStream(openFileDialog.FileName); int currentCount = 0; int maxCount = 100; foreach (var excelData in deviceExcelDatas) { DeviceModel item = this.Devices.Where(x => x.PhysicalAddress.ToUpper() == excelData.PhysicalAddress.ToUpper()).SingleOrDefault(); if (item == null) { continue; } NetworkAddress networkAddress = new NetworkAddress() { AddressingType = Boolean2ChineseConverter.GetBoolean(excelData.DHCP) ? Howell.Industry.NetworkAddressingType.Dynamic : Howell.Industry.NetworkAddressingType.Static, HttpPort = item.NetworkDeviceInformation.HttpPort, IPAddress = item.NetworkDeviceInformation.NetworkInterface.IPAddress, Port = item.NetworkDeviceInformation.Port, }; if (excelData.Port > 0 && excelData.Port <= 65535) { networkAddress.Port = excelData.Port; } if (String.IsNullOrEmpty(excelData.IPAddress) == false && excelData.IPAddress != "0.0.0.0") { networkAddress.IPAddress.IPv4Address.Address = excelData.IPAddress; } if (String.IsNullOrEmpty(excelData.SubnetMask) == false && excelData.SubnetMask != "0.0.0.0") { networkAddress.IPAddress.IPv4Address.Subnetmask = excelData.SubnetMask; } if (String.IsNullOrEmpty(excelData.Gateway) == false && excelData.Gateway != "0.0.0.0") { networkAddress.IPAddress.IPv4Address.DefaultGateway = excelData.Gateway; } if (String.IsNullOrEmpty(excelData.Password) == false) { item.Password = excelData.Password; } if (String.IsNullOrEmpty(excelData.Username) == false) { item.Username = excelData.Username; } if (FactoryType == "Howell8000") { //必须使用原始的MAC地址,区分大小写 DeviceSearcher.SetNetworkAddress(item.NetworkDeviceInformation.NetworkInterface.PhyscialAddress, excelData.Password, networkAddress); } else { DeviceSearcher.SetNetworkAddress(networkAddress.IPAddress.IPv4Address.Address, networkAddress.IPAddress.IPv4Address.Subnetmask, networkAddress.IPAddress.IPv4Address.DefaultGateway, networkAddress.Port, item.NetworkDeviceInformation.NetworkInterface.PhyscialAddress); } item.IPAddress = networkAddress.IPAddress.IPv4Address.Address; item.SubnetMask = networkAddress.IPAddress.IPv4Address.Subnetmask; item.Gateway = networkAddress.IPAddress.IPv4Address.DefaultGateway; item.Port = networkAddress.Port; item.DHCP = (networkAddress.AddressingType == Howell.Industry.NetworkAddressingType.Dynamic); } System.Threading.Thread.Sleep(2000); foreach (var excelData in deviceExcelDatas) { DeviceModel item = this.Devices.Where(x => x.PhysicalAddress.ToUpper() == excelData.PhysicalAddress.ToUpper()).SingleOrDefault(); if (item == null) { continue; } do { if (currentCount < maxCount) { Interlocked.Increment(ref currentCount); Task task = Task.Run(() => { try { NetworkDeviceHelper.SetOSDName(item, excelData.Name); item.Name = excelData.Name; item.SettingSucceed = true; } catch (Exception ex) { item.SettingSucceed = false; Helper.Logger.Error(String.Format("SetOSDName error, DeviceIP:{0}", item.IPAddress), ex); } }) .ContinueWith(x => { Interlocked.Decrement(ref currentCount); }); break; } System.Threading.Thread.Sleep(100); } while (true); } while (currentCount > 0) { System.Threading.Thread.Sleep(100); } this.ShowMessageAsync("导入数据完成", null); } } catch (Exception ex) { Helper.Logger.Error("导入数据失败", ex); this.ShowMessageAsync("导入数据失败", ex.Message); } }
private void SetDeviceIP() { try { //批量修改IP地址 if (DeviceIPSetting.No == "N/A") { ValidationResult result = DeviceIPSetting.Validate(); if (result.IsValid == false) { this.ShowMessageAsync("参数错误", result.ErrorContent.ToString()); return; } UInt32 ipAddress = System.Net.IPAddress.Parse(DeviceIPSetting.IPAddress).ToUInt32(); DeviceModel[] deviceModels = this.Devices.Where(x => x.IsSelected).ToArray(); foreach (var item in deviceModels) { NetworkAddress networkAddress = new NetworkAddress() { AddressingType = DeviceIPSetting.DHCP ? Howell.Industry.NetworkAddressingType.Dynamic : Howell.Industry.NetworkAddressingType.Static, HttpPort = item.NetworkDeviceInformation.HttpPort, IPAddress = item.NetworkDeviceInformation.NetworkInterface.IPAddress, Port = DeviceIPSetting.Port, }; if (ipAddress != 0) { //ipAddress = ipAddress.GetAddressBytes(); networkAddress.IPAddress.IPv4Address.Address = ipAddress.ToIPAddress().ToString(); ++ipAddress; } if (DeviceIPSetting.SubnetMask != "0.0.0.0") { networkAddress.IPAddress.IPv4Address.Subnetmask = DeviceIPSetting.SubnetMask; } if (DeviceIPSetting.Gateway != "0.0.0.0") { networkAddress.IPAddress.IPv4Address.DefaultGateway = DeviceIPSetting.Gateway; } if (FactoryType == "Howell8000") { //必须使用原始的MAC地址,区分大小写 DeviceSearcher.SetNetworkAddress(item.NetworkDeviceInformation.NetworkInterface.PhyscialAddress, DeviceIPSetting.Password, networkAddress); } else { DeviceSearcher.SetNetworkAddress(networkAddress.IPAddress.IPv4Address.Address, networkAddress.IPAddress.IPv4Address.Subnetmask, networkAddress.IPAddress.IPv4Address.DefaultGateway, networkAddress.Port, item.NetworkDeviceInformation.NetworkInterface.PhyscialAddress); } item.IPAddress = networkAddress.IPAddress.IPv4Address.Address; item.SubnetMask = networkAddress.IPAddress.IPv4Address.Subnetmask; item.Gateway = networkAddress.IPAddress.IPv4Address.DefaultGateway; item.Port = networkAddress.Port; item.DHCP = (networkAddress.AddressingType == Howell.Industry.NetworkAddressingType.Dynamic); } this.ShowMessageAsync("修改IP地址成功", null).ContinueWith(x => { //成功后,关闭悬浮窗口 ThreadStart threadStart = () => { ToggleFlyout(0); }; Application.Current.Dispatcher.BeginInvoke(threadStart); }); return; } else { DeviceModel item = this.Devices.Where(x => x.IsSelected).FirstOrDefault(); if (item == null) { this.ShowMessageAsync("没有任何选中项", null); return; } ValidationResult result = DeviceIPSetting.Validate(); if (result.IsValid == false) { this.ShowMessageAsync("参数错误", result.ErrorContent.ToString()); return; } NetworkAddress networkAddress = new NetworkAddress() { AddressingType = DeviceIPSetting.DHCP ? Howell.Industry.NetworkAddressingType.Dynamic : Howell.Industry.NetworkAddressingType.Static, HttpPort = item.NetworkDeviceInformation.HttpPort, IPAddress = item.NetworkDeviceInformation.NetworkInterface.IPAddress, Port = DeviceIPSetting.Port, }; networkAddress.IPAddress.IPv4Address.Address = DeviceIPSetting.IPAddress; networkAddress.IPAddress.IPv4Address.DefaultGateway = DeviceIPSetting.Gateway; networkAddress.IPAddress.IPv4Address.Subnetmask = DeviceIPSetting.SubnetMask; if (FactoryType == "Howell8000") { //必须使用原始的MAC地址,区分大小写 DeviceSearcher.SetNetworkAddress(item.NetworkDeviceInformation.NetworkInterface.PhyscialAddress, DeviceIPSetting.Password, networkAddress); } else { DeviceSearcher.SetNetworkAddress(networkAddress.IPAddress.IPv4Address.Address, networkAddress.IPAddress.IPv4Address.Subnetmask, networkAddress.IPAddress.IPv4Address.DefaultGateway, networkAddress.Port, item.NetworkDeviceInformation.NetworkInterface.PhyscialAddress); } item.IPAddress = networkAddress.IPAddress.IPv4Address.Address; item.SubnetMask = networkAddress.IPAddress.IPv4Address.Subnetmask; item.Gateway = networkAddress.IPAddress.IPv4Address.DefaultGateway; item.Port = networkAddress.Port; item.DHCP = (networkAddress.AddressingType == Howell.Industry.NetworkAddressingType.Dynamic); if (DeviceIPSetting.OSDNameEnabled) { NetworkDeviceHelper.SetOSDName(item, DeviceIPSetting.OSDName); item.Name = DeviceIPSetting.OSDName; } this.ShowMessageAsync("修改IP地址成功", null).ContinueWith(x => { //成功后,关闭悬浮窗口 ThreadStart threadStart = () => { ToggleFlyout(0); }; Application.Current.Dispatcher.BeginInvoke(threadStart); }); } } catch (Exception ex) { Helper.Logger.Error(String.Format("设置IP地址失败, No:{0},IP:{1}", DeviceIPSetting.No, DeviceIPSetting.IPAddress), ex); this.ShowMessageAsync("修改IP失败", ex.Message); } }