/// <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); }); } }
/// <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); }); } }
/// <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); }); } }
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); }
/// <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); }
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); } } }
/// <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); }); } }
public StationsListWindow(Window previousWindow, MainStation data) { }
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"); } }