Example #1
0
        private void btnExport_Click(object sender, EventArgs e)
        {
            // отправка команды экспорта
            int    ctrlCnlNum;
            string cmdDataStr = cbDataSource.Text;

            if (sender == btnExportArcData)
            {
                ctrlCnlNum = ArcDataCtrlCnlNum;
                DateTime dateTime = dtpArcDataDate.Value.Date.Add(dtpArcDataTime.Value.TimeOfDay);
                cmdDataStr += "\n" + ScadaUtils.XmlValToStr(dateTime);
            }
            else if (sender == btnExportEvents)
            {
                ctrlCnlNum = EventsCtrlCnlNum;
                DateTime date = dtpEventsDate.Value.Date;
                cmdDataStr += "\n" + ScadaUtils.XmlValToStr(date);
            }
            else
            {
                ctrlCnlNum = CurDataCtrlCnlNum;
            }

            byte[] cmdData = Encoding.Default.GetBytes(cmdDataStr);

            if (ServerComm.SendBinaryCommand(0, ctrlCnlNum, cmdData, out bool result))
            {
                ScadaUiUtils.ShowInfo(ModPhrases.CmdSentSuccessfully);
            }
            else
            {
                ScadaUiUtils.ShowError(ServerComm.ErrMsg);
            }
        }
Example #2
0
        /// <summary>
        /// Выполнить вход пользователя в систему
        /// </summary>
        /// <remarks>Если пароль равен null, то он не проверяется</remarks>
        public bool Login(string login, string password, out string errMsg)
        {
            login = login == null ? "" : login.Trim();
            int roleID;

            if (AppData.MainData.CheckUser(login, password, password != null, out roleID, out errMsg))
            {
                UserLogin = login;
                Role      = ServerComm.GetRole(roleID);
                RoleID    = roleID;
                RoleName  = AppData.MainData.GetRoleName(RoleID);
                UserID    = AppData.MainData.GetUserID(login);

                LoggedOn  = true;
                LogOnDT   = DateTime.Now;
                rightList = AppData.MainData.GetRightList(roleID);
                InitViewSetRightList(ViewSettings.ViewSetList);

                AppData.Log.WriteAction((password == null ?
                                         (Localization.UseRussian ? "Вход в систему без пароля: " : "Login without a password: "******"Вход в систему: " : "Login: "******" (" + RoleName + ")", Log.ActTypes.Action);
                return(true);
            }
            else
            {
                Logout();

                string err = login == "" ? errMsg : login + " - " + errMsg;
                AppData.Log.WriteAction((Localization.UseRussian ? "Неудачная попытка входа в систему: " :
                                         "Unsuccessful login attempt: ") + err, Log.ActTypes.Error);
                return(false);
            }
        }
Example #3
0
        /// <summary>
        /// Конструктор
        /// </summary>
        public DataCache(ServerComm serverComm, Log log)
        {
            if (serverComm == null)
            {
                throw new ArgumentNullException("serverComm");
            }
            if (log == null)
            {
                throw new ArgumentNullException("log");
            }

            this.serverComm = serverComm;
            this.log        = log;

            baseLock    = new object();
            curDataLock = new object();

            baseRefrDT    = DateTime.MinValue;
            tblCur        = new SrezTableLight();
            curDataRefrDT = DateTime.MinValue;

            BaseTables      = new BaseTables();
            CnlProps        = new InCnlProps[0];
            CtrlCnlProps    = new CtrlCnlProps[0];
            CnlStatProps    = new SortedList <int, CnlStatProps>();
            HourTableCache  = new Cache <DateTime, SrezTableLight>(HourCacheStorePeriod, HourCacheCapacity);
            EventTableCache = new Cache <DateTime, EventTableLight>(EventCacheStorePeriod, EventCacheCapacity);
        }
Example #4
0
        /// <summary>
        /// Initializes the class.
        /// </summary>
        static TrendsController()
        {
            string path   = AppDomain.CurrentDomain.BaseDirectory;
            string LogDir = path + "log" + Path.DirectorySeparatorChar;

            Log = new Log(Log.Formats.Simple)
            {
                Encoding = Encoding.UTF8
            };
            Log.FileName = LogDir + LogFileName;

            AppSettings appSettings = new AppSettings();

            Log = new Log(Log.Formats.Simple)
            {
                Encoding = Encoding.UTF8
            };
            Log.FileName = LogDir + LogFileName;

            if (!appSettings.Load(out string errMsg))
            {
                Log.WriteAction(errMsg, Log.ActTypes.Exception);
            }
            else
            {
                CommSettings settings = new CommSettings(appSettings.ServerHost, appSettings.ServerPort, appSettings.ServerUser,
                                                         appSettings.ServerPwd, appSettings.ServerTimeout);
                serverComm = new ServerComm(settings, Log);
                dataCache  = new DataCache(serverComm, Log);
                dataAccess = new DataAccess(dataCache, Log);
            }
        }
Example #5
0
        /// <summary>
        /// Конструктор
        /// </summary>
        public DataCache(ServerComm serverComm, Log log)
        {
            if (serverComm == null)
            {
                throw new ArgumentNullException("serverComm");
            }
            if (log == null)
            {
                throw new ArgumentNullException("log");
            }

            this.serverComm = serverComm;
            this.log        = log;

            baseLock    = new object();
            curDataLock = new object();

            baseRefrDT = DateTime.MinValue;
            baseAge    = DateTime.MinValue;
            tblCur     = new SrezTableLight();
            curRefrDT  = DateTime.MinValue;

            BaseTables   = new BaseTables();
            CnlProps     = new InCnlProps[0];
            CtrlCnlProps = new CtrlCnlProps[0];
        }
Example #6
0
        /// <summary>
        /// Отобразить форму модально
        /// </summary>
        public static void ShowDialog(AppDirs appDirs, ServerComm serverComm)
        {
            FrmAlarmConfig frmAlarmConfig = new FrmAlarmConfig();

            frmAlarmConfig.appDirs    = appDirs;
            frmAlarmConfig.serverComm = serverComm;
            frmAlarmConfig.ShowDialog();
        }
Example #7
0
        /// <summary>
        /// Создать объекты доступа к данным
        /// </summary>
        private void CreateDataObjects()
        {
            ServerComm = new ServerComm(WebSettings.CommSettings, Log);
            DataCache dataCache = new DataCache(ServerComm, Log);

            DataAccess = new DataAccess(dataCache, Log);
            ViewCache  = new ViewCache(ServerComm, DataAccess, Log);
        }
Example #8
0
        /// <summary>
        /// Constructor
        /// </summary>
        public ViewCache(ServerComm serverComm, DataAccess dataAccess, Log log)
        {
            this.serverComm = serverComm ?? throw new ArgumentNullException(nameof(serverComm));
            this.dataAccess = dataAccess ?? throw new ArgumentNullException(nameof(dataAccess));
            this.log        = log ?? throw new ArgumentNullException(nameof(log));

            Cache = new Cache <int, BaseView>(StorePeriod, Capacity);
        }
Example #9
0
 /// <inheritdoc />
 /// <summary>
 /// Initializes a new instance of the class.
 /// </summary>
 public FrmGenerator(Settings settings, ServerEnvironment environment)
     : this()
 {
     this.settings    = settings ?? throw new ArgumentNullException(nameof(settings));
     this.environment = environment ?? throw new ArgumentNullException(nameof(environment));
     serverComm       = null;
     frmGenCommand    = null;
 }
Example #10
0
        /// <summary>
        /// Display the form modally
        /// </summary>
        public static void ShowDialog(AppDirs appDirs, ServerComm serverComm)
        {
            var frmDBExportConfig = new FrmDBExportConfig {
                appDirs    = appDirs,
                serverComm = serverComm
            };

            frmDBExportConfig.ShowDialog();
        }
Example #11
0
 /// <summary>
 /// Initializes a new instance of the class.
 /// </summary>
 public FrmGenerator(Settings settings, ServerEnvironment environment)
     : this()
 {
     this.settings    = settings ?? throw new ArgumentNullException("settings");
     this.environment = environment ?? throw new ArgumentNullException("environment");
     serverComm       = null;
     frmGenData       = null;
     frmGenEvent      = null;
     frmGenCommand    = null;
 }
Example #12
0
    void Awake()
    {
        s_instance = this;

        NetworkComm.s_connected_callback += OnServerConnectedCallback;
        NetworkComm.s_error_callback     += OnErrorCallbackHandler;
        NetworkComm.s_data_callback      += OnServerDataCallback;

        network_comm.Initialize();
    }
Example #13
0
        /// <summary>
        /// Initializes the object to communicate with Server.
        /// </summary>
        private void InitServerComm()
        {
            serverComm = environment.GetServerComm(settings);

            if (serverComm == null)
            {
                gbGenerator.Enabled = false;
                pnlWarning.Visible  = true;
                lblWarning.Text     = ServerShellPhrases.SetProfile;
            }
        }
Example #14
0
 /// <summary>
 /// Initializes the object to communicate with Server.
 /// </summary>
 private void InitServerComm()
 {
     if (environment.AgentClient == null)
     {
         gbGenerator.Enabled    = false;
         pnlProfileWarn.Visible = true;
     }
     else
     {
         CommSettings commSettings = environment.AgentClient.CreateCommSettings();
         commSettings.ServerPort = settings.TcpPort;
         serverComm = new ServerComm(commSettings, new LogStub());
     }
 }
Example #15
0
        /// <summary>
        /// Receives the configuration database subset from Server.
        /// </summary>
        private bool ReceiveConfigBase(out ConfigBaseSubset configBase)
        {
            configBase = new ConfigBaseSubset();

            if (ServerComm.ReceiveBaseTable("incnl.dat", configBase.InCnlTable) &&
                ServerComm.ReceiveBaseTable("kp.dat", configBase.KPTable))
            {
                return(true);
            }
            else
            {
                configBase = null;
                return(false);
            }
        }
Example #16
0
        /// <summary>
        /// Отправить команду, получив её параметры из элементов управления
        /// </summary>
        private void SendCmd(int ctrlCnlNum, double cmdVal, byte[] cmdData)
        {
            bool       sendOk;
            bool       result;
            ServerComm serverComm = AppData.MainData.ServerComm;
            int        userID     = UserData.GetUserData().UserID;
            View       activeView = mvCommand.Visible ? mvCommand.GetActiveView() : null;

            if (activeView == viewStandCmd1 || activeView == viewStandCmd1Simple || activeView == viewStandCmd2)
            {
                sendOk = serverComm.SendStandardCommand(userID, ctrlCnlNum, cmdVal, out result);
            }
            else if (activeView == viewBinCmd)
            {
                sendOk = serverComm.SendBinaryCommand(userID, ctrlCnlNum, cmdData, out result);
            }
            else
            {
                int kpNum;
                try { kpNum = (int)ViewState["KPNum"]; }
                catch { kpNum = 0; }
                sendOk = serverComm.SendRequestCommand(userID, ctrlCnlNum, kpNum, out result);
            }

            if (sendOk)
            {
                mvMain.SetActiveView(viewResult);

                if (result)
                {
                    // добавление скрипта, чтобы закрыть окно команды при простой отправке
                    if (activeView == viewStandCmd1Simple)
                    {
                        ClientScript.RegisterStartupScript(this.GetType(), "Startup", "window.close();", true);
                    }
                }
                else
                {
                    lblResultSuccessful.Visible = false;
                    lblResultFailed.Visible     = true;
                }
            }
            else
            {
                lblMessage.Text    = string.Format(WebPhrases.ErrorFormat, WebPhrases.ServerUnavailable);
                lblMessage.Visible = true;
            }
        }
Example #17
0
    // Update is called once per frame
    //	void Update () {
    //
    //	}

    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Egg")
        {
            GameObject player = other.GetComponent <EggCarry> ().playerObj;
            player.GetComponent <PlayerMove> ().MoveTo(toX, toY);
            //			Camera.main.transform.position = new Vector3 (toX, toY, Camera.main.transform.position.z);
            if (player.GetComponent <PlayerHealth>().alive)
            {
                ServerComm serverComm = player.GetComponent <ServerComm> ();
                serverComm.RequestMap();
                serverComm.MovePlayers(toX, toY);
            }
            Destroy(other.gameObject);
        }
    }
Example #18
0
        /// <summary>
        /// Принять таблицу входных каналов и таблицу КП от SCADA-Сервера
        /// </summary>
        private bool ReceiveBaseTables(out DataTable tblInCnl, out DataTable tblKP)
        {
            tblInCnl = new DataTable();
            tblKP    = new DataTable();

            if (ServerComm.ReceiveBaseTable("incnl.dat", tblInCnl) &&
                ServerComm.ReceiveBaseTable("kp.dat", tblKP))
            {
                return(true);
            }
            else
            {
                tblInCnl = null;
                tblKP    = null;
                return(false);
            }
        }
Example #19
0
 /// <summary>
 /// Проверить правильность имени и пароля пользователя
 /// </summary>
 public bool CheckUser(string username, string password, bool checkPassword,
                       out int roleID, out string errMsg)
 {
     if (checkPassword && string.IsNullOrEmpty(password))
     {
         roleID = BaseValues.Roles.Err;
         errMsg = WebPhrases.WrongPassword;
         return(false);
     }
     else
     {
         if (ServerComm.CheckUser(username, checkPassword ? password : null, out roleID))
         {
             if (roleID == BaseValues.Roles.Disabled)
             {
                 errMsg = CommonPhrases.NoRights;
                 return(false);
             }
             else if (roleID == BaseValues.Roles.App)
             {
                 errMsg = WebPhrases.IllegalRole;
                 return(false);
             }
             else if (roleID == BaseValues.Roles.Err)
             {
                 errMsg = WebPhrases.WrongPassword;
                 return(false);
             }
             else
             {
                 errMsg = "";
                 return(true);
             }
         }
         else
         {
             errMsg = WebPhrases.ServerUnavailable;
             return(false);
         }
     }
 }
Example #20
0
        /// <summary>
        /// Конструктор
        /// </summary>
        public ViewCache(ServerComm serverComm, DataAccess dataAccess, Log log)
        {
            if (serverComm == null)
            {
                throw new ArgumentNullException("serverComm");
            }
            if (dataAccess == null)
            {
                throw new ArgumentNullException("dataAccess");
            }
            if (log == null)
            {
                throw new ArgumentNullException("log");
            }

            this.serverComm = serverComm;
            this.dataAccess = dataAccess;
            this.log        = log;

            cache = new Cache <int, BaseView>(StorePeriod, Capacity);
        }
Example #21
0
    // Update is called once per frame
//	void Update () {
//
//	}

    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.tag == "Player")
        {
            other.GetComponent <PlayerMove> ().MoveTo(toX, toY);
//			Camera.main.transform.position = new Vector3 (toX, toY, Camera.main.transform.position.z);
            if (isEnd && other.GetComponent <PlayerHealth> ().alive)
            {
                ServerComm serverComm = other.gameObject.GetComponent <ServerComm> ();
                serverComm.RequestMap();
                serverComm.MovePlayers(toX, toY);
            }
            else
            {
                if (mapGen.gameMode == MapGen.GameMode.Steal)
                {
                    notificationText.SetTimedNotice("Steal the egg!", Color.white, 3);
                }
            }
        }
    }
Example #22
0
        /// <summary>
        /// Отобразить форму модально
        /// </summary>
        public static bool ShowDialog(ServerComm serverComm,
                                      List <Config.ExportDestination> expDests, Config.ExportDestination selExpDest,
                                      ref int curDataCtrlCnlNum, ref int arcDataCtrlCnlNum, ref int eventsCtrlCnlNum)
        {
            FrmManualExport frmManualExport = new FrmManualExport();

            frmManualExport.ServerComm = serverComm;

            // заполнение списка источников данных
            foreach (Config.ExportDestination expDest in expDests)
            {
                int ind = frmManualExport.cbDataSource.Items.Add(expDest.DataSource);
                if (expDest == selExpDest)
                {
                    frmManualExport.cbDataSource.SelectedIndex = ind;
                }
            }

            // установка каналов управления
            frmManualExport.CurDataCtrlCnlNum = curDataCtrlCnlNum;
            frmManualExport.ArcDataCtrlCnlNum = arcDataCtrlCnlNum;
            frmManualExport.EventsCtrlCnlNum  = eventsCtrlCnlNum;

            if (frmManualExport.ShowDialog() == DialogResult.OK)
            {
                // возврат каналов управления
                curDataCtrlCnlNum = frmManualExport.CurDataCtrlCnlNum;
                arcDataCtrlCnlNum = frmManualExport.ArcDataCtrlCnlNum;
                eventsCtrlCnlNum  = frmManualExport.EventsCtrlCnlNum;
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #23
0
 /************************************************************************/
 /* server communication module */
 private bool initServerComm()
 {
     sc = new ServerComm(conf.BasePath, conf.BaseUserPath);
     sc.MessageReceived += new MsgHandler(processServerResp);
     return true;
 }
 // Use this for initialization
 void Start()
 {
     serv = GetComponent <ServerComm>();
 }
Example #25
0
        public RGOClientManager()
        {
            InstanceCounter++;
            if (InstanceCounter > 1)
            {
                throw new Exception("Only one instance of the RGOclientManager may be created in this scope");
            }

            SM.FirstAction = () =>
            {
                //run the state machines of all clients
                for (int i = 0; i < RGOClientBase.AllClients.Count; i++)
                {
                    RGOClientBase.AllClients[i].Run();
                }
            };

            SM.AddState(RGOStates.ConnectingToServer, new List <Transition>
            {
                new Transition("ServerConnected", () => ServerComm.ServerConnected, () => RGOClientDownloader.Connect(), RGOStates.DownloadingAllRGO),
                new Transition("ConnectionRejected", () => ServerComm.ConnectionRejected, () => log.Error("The connection was rejected by the server."), RGOStates.ConnectingToServer)
            }, () => ServerCommError = false, StateType.entry);

            SM.AddState(RGOStates.DownloadingAllRGO, new List <Transition>
            {
                new Transition("DownloadDone", () => RGOClientDownloader.RGODownloadDone == true, () => DSCClient.Connect(), RGOStates.DownloadingDSC),
            }, null, StateType.transition);

            SM.AddState(RGOStates.DownloadingDSC, new List <Transition>
            {
                new Transition("DescriptionsReceived", () => DSCClient.DSCsReceived == true, () =>
                {
                    log.Info("All RGO downloads done");
                    foreach (var C in RGOClientBase.AllClients)
                    {
                        C.Connect();
                    }
                }, RGOStates.Running),
            }, null, StateType.transition);

            SM.AddState(RGOStates.Running, new List <Transition>
            {
                new Transition("ServerCommDisconnected", () => ServerComm.ServerConnected == false, null, RGOStates.Disconnecting),
                new Transition("ServerCommErrorReported", () => ServerCommError == true, null, RGOStates.Disconnecting),
            }, null, StateType.idle);

            SM.AddState(RGOStates.Disconnecting, new List <Transition>
            {
                new Transition("AllClientsDisconnected", () => true, null, RGOStates.Disconnected),
            },
                        () =>
            {
                foreach (var C in RGOClientBase.AllClients)
                {
                    C.Disconnect();
                }
            }, StateType.transition);

            SM.AddState(RGOStates.Disconnected, new List <Transition>
            {
                new Transition("Reconnect", () => Reconnect == true, () =>
                {
                    ServerComm.Connect();
                }
                               , RGOStates.ConnectingToServer)
            }, null, StateType.end);

            SM.Finalize();
        }
Example #26
0
 // Use this for initialization
 void Start()
 {
     server = GetComponent<ServerComm>();
 }
Example #27
0
        /// <summary>
        /// Остановить потоки линий связи и поток обмена данными со SCADA-Сервером
        /// </summary>
        private void StopThreads()
        {
            try
            {
                // остановка потока записи информации о работе приложения
                if (infoThread != null)
                {
                    infoThread.Abort();
                    infoThread = null;
                }

                // остановка потока приёма команд
                if (commandReader != null)
                {
                    commandReader.StopThread();
                }

                if (linesStarted)
                {
                    AppLog.WriteAction(Localization.UseRussian ?
                                       "Остановка линий связи" :
                                       "Stop communication lines", Log.ActTypes.Action);
                    linesStarted = false; // далее lock (commLines) не требуется

                    // выполнение команд завершения работы линий связи
                    foreach (CommLine commLine in commLines)
                    {
                        commLine.Terminate();
                    }

                    // ожидание завершения работы линий связи
                    DateTime nowDT = DateTime.Now;
                    DateTime t0    = nowDT;
                    DateTime t1    = nowDT.AddMilliseconds(Settings.Params.WaitForStop);
                    bool     running; // есть линия связи, продолжающая работу

                    do
                    {
                        running = false;
                        foreach (CommLine commLine in commLines)
                        {
                            if (!commLine.Terminated)
                            {
                                running = true;
                                Thread.Sleep(ScadaUtils.ThreadDelay);
                                break;
                            }
                        }
                        nowDT = DateTime.Now;
                    }while (t0 <= nowDT && nowDT <= t1 && running);

                    // прерывание работы линий связи
                    if (running)
                    {
                        foreach (CommLine commLine in commLines)
                        {
                            commLine.Abort();
                        }
                    }
                }

                // завершение работы со SCADA-Сервером
                if (ServerComm != null)
                {
                    ServerComm.Close();
                    ServerComm = null;
                }

                // пауза для повышения вероятности полной остановки потоков
                Thread.Sleep(ScadaUtils.ThreadDelay);

                // запись информации о работе программы
                workState = WorkStateNames.Stopped;
                WriteInfo();
            }
            catch (Exception ex)
            {
                AppLog.WriteAction((Localization.UseRussian ?
                                    "Ошибка при остановке линий связи: " :
                                    "Error stop communication lines: ") + ex.Message, Log.ActTypes.Exception);
            }
        }
Example #28
0
	public void StoreLocalPlayer(ServerComm comm) {
		localPlayerComm = comm;
	} 
Example #29
0
 /// <summary>
 /// Initializes a new instance of the class.
 /// </summary>
 public FrmGenCommand(ServerComm serverComm, Log errLog)
     : this()
 {
     this.serverComm = serverComm ?? throw new ArgumentNullException("serverComm");
     this.errLog     = errLog ?? throw new ArgumentNullException("errLog");
 }
Example #30
0
 public void StoreLocalPlayer(ServerComm comm)
 {
     localPlayerComm = comm;
 }