/// <summary> /// возврат клиенту статуса /// выполнения команды /// </summary> /// <param name="ACommandID"></param> /// <returns></returns> public EnumerationCommandStates CommandStateCheck(string ACommandID) { try { lock (lockObjectForCommands) { IWcfDataServer iwds = dWCFClientsList[DS4CurrtntCMD].wcfDataServer; DSServiceReference.EnumerationCommandStates ecs = iwds.CommandStateCheck(); CurrentCMDState = (EnumerationCommandStates)ecs; } } catch (Exception ex) { TraceSourceLib.TraceSourceDiagMes.WriteDiagnosticMSG(ex); CurrentCMDState = EnumerationCommandStates.cmdNotSend_DSR_2_DS; } return CurrentCMDState; }
/// <summary> /// /// Запрос на запуск команды на устройстве /// </summary> /// <param name="ACommandID">ds.dev.cmdid</param> /// <param name="AParameters">массив параметров</param> /// <returns>false - если роутер уже выполняет другую команду</returns> public void CommandRun(string ACommandID, object[] AParameters) { try { CurrentCMDState = EnumerationCommandStates.sentFromClientToRouter; string[] arrcmdid = ACommandID.Split(new char[] { '.' }); DS4CurrtntCMD = UInt16.Parse(arrcmdid[0]); uint dev = UInt32.Parse(arrcmdid[1]); uint tagguid = UInt32.Parse(arrcmdid[2]); TraceSourceLib.TraceSourceDiagMes.WriteDiagnosticMSG(TraceEventType.Error, 1385, string.Format("{0} : Получен запрос на команду от HMI-клиента для {1}.", DateTime.Now.ToString(), ACommandID)); IWcfDataServer iwds = dWCFClientsList[DS4CurrtntCMD].wcfDataServer; //bool rez = iwds.RunCMD(DS4CurrtntCMD, dev, tagguid, null /*byte[] pq*/); // нужно поправить контракт на DS на массив объектов iwds.BeginCommandRun(ACommandID, null, GetCMDStateCallback, iwds); CurrentCMDState = EnumerationCommandStates.sentFromRouterToDataServer; } catch (Exception ex) { Log.WriteErrorMessage("DSRouterService.CommandRun() : Исключение : " + ex.Message); TraceSourceLib.TraceSourceDiagMes.WriteDiagnosticMSG(ex); } }