コード例 #1
0
        private int SendConfigC2000Ethernet(C2000Ethernet device)
        {
            if (device.AddressRS232 == null)
            {
                return((int)resultCode.addressFieldNotValid);
            }

            string deviceModel = _serialSender.GetDeviceModel(_comPort, _rsAddress);

            if (deviceModel.Length == 0)
            {
                return((int)resultCode.deviceNotRespond);
            }

            if (!device.Model.Contains(deviceModel))
            {
                return((int)resultCode.deviceTypeMismatch);
            }

            if (_serialSender.SetC2000EthernetConfig(_comPort, _rsAddress, device))
            {
                return((int)resultCode.ok);
            }

            return((int)resultCode.undefinedError);
        }
コード例 #2
0
        public bool SetC2000EthernetConfig(string ComPortName, byte deviceAddress, C2000Ethernet device)
        {
            bool result = false;

            if (!_serialPort.IsOpen)
            {
                _serialPort.PortName = ComPortName;
                receiveBuffer        = null;
                _serialPort.Open();
                // make DataReceived event handler
                _serialPort.DataReceived += sp_DataReceived;


                result = SendPromoter();
                result = SendGatewayAndUDP(device.DefaultGateway);
                result = SendPromoter2();
                result = SendOtherDevicesIP(device.RemoteIpList, device.AddressIP);
                result = SendPromoter3();
                result = SendNetmaskAndOtherDevicesUDP(device.Netmask, device.RemoteUDPList, device.UDPSender, device.UDPRemote);

                _serialPort.Close();
            }
            return(result);
        }
コード例 #3
0
 public C2000EthernetDeviceViewModel(C2000Ethernet device, CabinetViewModel cabinetParent, IEventAggregator ea)
     : base(cabinetParent, false)
 {
     _device = device;
     _ea     = ea;
 }
コード例 #4
0
        private void DownloadLoop()
        {
            if (DeviceCounter < DevicesForProgramming.Count)
            {
                var device = DevicesForProgramming[DeviceCounter];

                string devSerial = "";

                if (device is Device device1)
                {
                    devSerial = device1.Serial;

                    if (devSerial == null)//исключаем приборы уже имеющие серийник (они уже были сконфигурированны)
                    {
                        _dispatcher.BeginInvoke(new Action(() =>
                        {
                            CurrentDeviceModel = device1.Model;
                        }));
                        if (DevicesForProgramming[DeviceCounter].GetType() == typeof(RS485device))
                        {
                            if (_serialTasks.SendConfig(DevicesForProgramming[DeviceCounter],
                                                        CurrentRS485Port,
                                                        DefaultRS485Address) == 1)
                            {
                                device1.Serial = SerialTextBox;
                                _dataRepositoryService.SaveSerialNumber(device1.Id, device1.Serial);
                                SerialTextBox = "";// Очищаем строку ввода серийника для ввода следующего
                                DeviceCounter++;
                            }
                            else
                            {
                                MessageBox.Show("Устройство с адресом 127 не отвечает!");
                            }
                        }
                        else if (DevicesForProgramming[DeviceCounter].GetType() == typeof(C2000Ethernet))
                        {
                            C2000Ethernet c2000Ethernet = (C2000Ethernet)DevicesForProgramming[DeviceCounter];
                            c2000Ethernet.Netmask      = IPMask;
                            c2000Ethernet.RemoteIpList = GetRemoteDefaultFirstIpList();

                            if (_serialTasks.SendConfig(c2000Ethernet,
                                                        CurrentRS232Port,
                                                        DefaultRS485Address) == 1)
                            {
                                device1.Serial = SerialTextBox;
                                _dataRepositoryService.SaveSerialNumber(device1.Id, device1.Serial);
                                SerialTextBox = "";// Очищаем строку ввода серийника для ввода следующего
                                DeviceCounter++;
                            }
                            else
                            {
                                MessageBox.Show("Устройство с адресом 127 не отвечает!");
                            }
                        }
                        // Обновляем всю коллекцию в UI целиком
                        _dispatcher.BeginInvoke(new Action(() =>
                        {
                            CollectionViewSource.GetDefaultView(DevicesForProgramming).Refresh();
                        }));
                        if (DeviceCounter >= DevicesForProgramming.Count)
                        {
                            DeviceCounter = 0;
                            MessageBox.Show("Alles!");
                        }
                    }
                    else //Переходим к следующему прибру из списка
                    {
                        DeviceCounter++;
                    }
                }
            }
        }