Example #1
0
 /// <summary>
 /// 产品加工完成消息
 /// 未提供JustRealTimeUI的工站通过此函数刷新界面
 /// 以提供JustRealTimeUI的工站 只是通过此函数向MainStation发送消息,相关界面更新功能由工站自身维护
 /// </summary>
 /// <param name="station">消息发送者</param>
 /// <param name="PassCount">本次生产完成的成品数量</param>
 /// <param name="NGCount">本次生产的次品数量</param>
 /// <param name="NGInfo">次品信息</param>
 void _StationProductFinished(IJFStation station, int passCount, string[] passIDs, int ngCount, string[] ngIDs, string[] ngInfo, bool isSynchMode = true)//异步模式有问题(异步线程未运行'),待日后改进
 {
     if (isSynchMode)
     {
         if (_StationMsgReciever.ContainsKey(station))
         {
             List <IJFStationMsgReceiver> uis = _StationMsgReciever[station];
             foreach (IJFStationMsgReceiver ui in uis)
             {
                 ui.OnProductFinished(passCount, passIDs, ngCount, ngIDs, ngInfo);
             }
         }
         MainStation.OnStationProductFinished(station, passCount, passIDs, ngCount, ngIDs, ngInfo);
         EventStationProductFinished?.Invoke(station, passCount, passIDs, ngCount, ngIDs, ngInfo);
     }
     else
     {
         Task t = new Task(() =>
         {
             if (_StationMsgReciever.ContainsKey(station))
             {
                 List <IJFStationMsgReceiver> uis = _StationMsgReciever[station];
                 foreach (IJFStationMsgReceiver ui in uis)
                 {
                     ui.OnProductFinished(passCount, passIDs, ngCount, ngIDs, ngInfo);
                 }
             }
             MainStation.OnStationProductFinished(station, passCount, passIDs, ngCount, ngIDs, ngInfo);
             EventStationProductFinished?.Invoke(station, passCount, passIDs, ngCount, ngIDs, ngInfo);
         });
     }
 }
Example #2
0
 /// <summary>
 /// 处理工站状态改变
 /// 未提供JustRealTimeUI的工站通过此函数刷新界面
 /// 以提供JustRealTimeUI的工站 只是通过此函数向MainStation发送消息,相关界面更新功能由工站自身维护
 /// </summary>
 /// <param name="station"></param>
 /// <param name="currWorkStatus"></param>
 void _StationWorkStatusChanged(IJFStation station, JFWorkStatus currWorkStatus, bool isSynchMode = true) //异步模式有问题(异步线程未运行'),待日后改进
 {
     if (isSynchMode)
     {
         if (_StationMsgReciever.ContainsKey(station))
         {
             List <IJFStationMsgReceiver> uis = _StationMsgReciever[station];
             foreach (IJFStationMsgReceiver ui in uis)
             {
                 ui.OnWorkStatusChanged(currWorkStatus);
             }
         }
         ///将消息发送到MainStaion处理
         MainStation.OnStationWorkStatusChanged(station, currWorkStatus);
         EventStationWorkStatusChanged?.Invoke(station, currWorkStatus);
     }
     else
     {
         Task t = new Task(() => /*日后可能改成固定线程,性能是否可优化存疑*/
         {
             if (_StationMsgReciever.ContainsKey(station))
             {
                 List <IJFStationMsgReceiver> uis = _StationMsgReciever[station];
                 foreach (IJFStationMsgReceiver ui in uis)
                 {
                     ui.OnWorkStatusChanged(currWorkStatus);
                 }
             }
             ///将消息发送到MainStaion处理
             MainStation.OnStationWorkStatusChanged(station, currWorkStatus);
             EventStationWorkStatusChanged?.Invoke(station, currWorkStatus);
         });
     }
 }
Example #3
0
 /// <summary>
 ///  处理工站的业务状态发生改变
 /// 未提供JustRealTimeUI的工站通过此函数刷新界面
 /// 以提供JustRealTimeUI的工站 只是通过此函数向MainStation发送消息,相关界面更新功能由工站自身维护
 /// </summary>
 /// <param name="station"></param>
 /// <param name="currCustomStatus"></param>
 void _StationCustomStatusChanged(IJFStation station, int currCustomStatus, bool isSynchMode = true)//异步模式有问题(异步线程未运行'),待日后改进
 {
     if (isSynchMode)
     {
         if (_StationMsgReciever.ContainsKey(station))
         {
             List <IJFStationMsgReceiver> uis = _StationMsgReciever[station];
             foreach (IJFStationMsgReceiver ui in uis)
             {
                 ui.OnCustomStatusChanged(currCustomStatus);
             }
         }
         MainStation.OnStationCustomStatusChanged(station, currCustomStatus);
         EventStationCustomStatusChanged?.Invoke(station, currCustomStatus);
     }
     else
     {
         Task t = new Task(() =>
         {
             ///添加代码,界面显示
             if (_StationMsgReciever.ContainsKey(station))
             {
                 List <IJFStationMsgReceiver> uis = _StationMsgReciever[station];
                 foreach (IJFStationMsgReceiver ui in uis)
                 {
                     ui.OnCustomStatusChanged(currCustomStatus);
                 }
             }
             MainStation.OnStationCustomStatusChanged(station, currCustomStatus);
             EventStationCustomStatusChanged?.Invoke(station, currCustomStatus);
         });
     }
 }
Example #4
0
    void Start()
    {
        cl_MainStation = this;

        go_MainStation       = GameObject.Find("MainStation");
        MainStationTransform = go_MainStation.GetComponent <Transform>();

        go_MainStationLevel2.SetActive(false);
        go_MainStationLevel3.SetActive(false);
        go_cursor.SetActive(false);
    }
Example #5
0
        /// <summary>
        /// 停止工站日志记录/显示
        /// 在程序退出前调用
        /// </summary>
        public void Stop()
        {
            string errorInfo;

            MainStation.Stop(out errorInfo);
            string[] stationNames = AllStationNames();
            if (null != stationNames)
            {
                foreach (string stationName in stationNames)
                {
                    IJFStation station = GetStation(stationName);
                    if (IsStationRunning(station))
                    {
                        JFWorkCmdResult ret = station.Stop(1000);
                        if (ret != JFWorkCmdResult.Success)
                        {
                            //日后可能添加强制关闭的系统日志...
                            station.Abort();
                        }
                    }
                }
            }
            JFLoggerManager.Instance.Stop();
            StopShowStationLog();
            if (null != stationNames)
            {
                foreach (string stationName in stationNames)
                {
                    IJFStation station = GetStation(stationName);
                    station.WorkStatusChanged   -= StationWorkStatusChanged;
                    station.CustomStatusChanged -= StationCustomStatusChanged;
                    if (station is JFCmdWorkBase)
                    {
                        (station as JFCmdWorkBase).WorkMsg2Outter -= StationTxtMsg;
                    }

                    if (station is JFStationBase)
                    {
                        (station as JFStationBase).EventCustomizeMsg    -= StationCustomizeMsg;
                        (station as JFStationBase).EventProductFinished -= StationProductFinished;
                    }
                }
            }

            Thread.Sleep(2000);
        }
Example #6
0
        public void StationTxtMsg(object sender, string msgInfo)
        {
            IJFStation station = sender as IJFStation;

            if (_StationMsgReciever.ContainsKey(station))
            {
                List <IJFStationMsgReceiver> uis = _StationMsgReciever[station];
                foreach (IJFStationMsgReceiver ui in uis)
                {
                    ui.OnTxtMsg(msgInfo);
                }
            }

            //Task t = new Task(() => /*日后可能改成固定线程,性能是否可优化存疑*/
            //{

            ///将消息发送到MainStaion处理
            MainStation.OnStationTxtMsg(sender as IJFStation, msgInfo);
            EventStationTxtMsg?.Invoke(sender, msgInfo);
            //});
        }
        private void TimerOnElapsed(object sender, ElapsedEventArgs e)
        {
            lock (myLockObject)
            {
                try
                {
                    // TODO: have to inject somehow main station....
                    var station = new MainStation();
                    SendMesage(MessageBus, (IAirModule)station, myResendAll);
                    foreach (var module in station.GetModules())
                    {
                        SendMesage(MessageBus, module, myResendAll);
                    }

                    myResendAll = false;
                }
                catch (Exception exception)
                {
                    Console.WriteLine("Something went wrong when accessing weather data!");
                    Console.WriteLine(exception);
                }
            }
        }
Example #8
0
        /// <summary>
        /// 处理工站发来的其他定制化的消息
        /// 只是向MainStation发送消息,定制化的界面显示由工站通过自身提供的JustRealTimeUI完成
        /// </summary>
        /// <param name="station"></param>
        /// <param name="msg"></param>
        void _StationCustomizeMsg(IJFStation station, string msgCategory, object[] msgParams, bool isSynchMode = true)//异步模式有问题(异步线程未运行'),待日后改进
        {
            if (isSynchMode)
            {
                if (_StationMsgReciever.ContainsKey(station))
                {
                    List <IJFStationMsgReceiver> uis = _StationMsgReciever[station];
                    foreach (IJFStationMsgReceiver ui in uis)
                    {
                        ui.OnCustomizeMsg(msgCategory, msgParams);
                    }
                }


                MainStation.OnStationCustomizeMsg(station, msgCategory, msgParams);
                EventStationCustomizeMsg?.Invoke(station, msgCategory, msgParams);
            }
            else
            {
                Task t = new Task(() =>
                {
                    if (_StationMsgReciever.ContainsKey(station))
                    {
                        List <IJFStationMsgReceiver> uis = _StationMsgReciever[station];
                        foreach (IJFStationMsgReceiver ui in uis)
                        {
                            ui.OnCustomizeMsg(msgCategory, msgParams);
                        }
                    }


                    MainStation.OnStationCustomizeMsg(station, msgCategory, msgParams);
                    EventStationCustomizeMsg?.Invoke(station, msgCategory, msgParams);
                });
            }
        }
Example #9
0
 public StationsListWindow(Window previousWindow, MainStation data)
 {
 }
Example #10
0
 void PollDevice(MainStation.MainStationDevice _Device)
 {
     bool found = !MainStation.MainStation.Poll(_Device.ID);
     if (_Device.Found != found)
     {
         _Device.Found = found;
         UpdateTree();
         //Utilities.Utilities.Log("Device {0} {1}", _Device.ID, found ? "located" : "is missing");
     }
 }