Beispiel #1
0
 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;
     }
 }
Beispiel #2
0
 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);
 }
Beispiel #3
0
        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);
                }
            }
        }
Beispiel #4
0
 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);
     }
 }
Beispiel #5
0
        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);
            }
        }