Beispiel #1
0
        /// <summary>
        /// 所有下位机命令/数据发送
        /// </summary>
        /// <param name="nCmd"></param> 命令
        /// <param name="Data"></param> 数据
        /// <param name="bChannelInfo"></param> 子系统通道是否有效 stSysConfig.nChannelInfo
        /// <returns></returns>是否执行成功 0成功 不成功返回相应子系统ID
        public int AllSysSyncRequest(int nCmd, byte[] Data, byte[] bChannelInfo)
        {
            List <int> arrayID = new List <int>();
            int        result  = 0;//成功

            if (nCmd != (int)HC_FSM_COMMAND_TYPE.HC_CMD_SYS_CONFIG)
            {
                Commonfunction.GetAllSysID(bChannelInfo, ref arrayID);
            }
            else
            {
                for (int i = 0; i < ConstPreDefine.MAX_SUBSYS_NUM; i++)
                {
                    for (int j = 0; j < ConstPreDefine.MAX_CHANNEL_NUM; j++)
                    {
                        //if (bChannelInfo[i * ConstPreDefine.MAX_CHANNEL_NUM + j] == 1)
                        if (bChannelInfo[i] > j)  //Modify by ChengSk - 20190521
                        {
                            int id = Commonfunction.EncodeSubsys(i);
                            arrayID.Add(id);
                            break;
                        }
                        stSysConfig sys = new stSysConfig(true);
                        sys = (stSysConfig)Commonfunction.BytesToStruct(Data, typeof(stSysConfig));
                        //if (sys.nChannelInfo[i * ConstPreDefine.MAX_CHANNEL_NUM + j] == 1)
                        if (sys.nChannelInfo[i] > j)  //Modify by ChengSk - 20190521
                        {
                            int id = Commonfunction.EncodeSubsys(i);
                            arrayID.Add(id);
                            break;
                        }
                    }
                }
            }
            Trace.WriteLine(string.Format("函数 AllSysSyncRequest arrayID.Count:{0}", arrayID.Count));
#if REALEASE
            GlobalDataInterface.WriteErrorInfo(string.Format("函数 AllSysSyncRequest arrayID.Count:{0}", arrayID.Count));
#endif
            for (int i = 0; i < arrayID.Count; i++)
            {
                int nDestId = arrayID[i];
                if (!SubsysIsConnected(Commonfunction.GetSubsysIndex(nDestId)))
                {
                    Trace.WriteLine(string.Format("当前子系统不可用,函数SyncRequest nDestId:{0},nCmd={1}", nDestId, nCmd));
#if REALEASE
                    GlobalDataInterface.WriteErrorInfo(string.Format("当前子系统不可用,函数SyncRequest nDestId:{0},nCmd={1}", nDestId, nCmd));
#endif
                    continue;
                }
                if (!SyncRequest(nDestId, nCmd, Data))
                {
                    result = nDestId;
                }
            }
            return(result);
        }
Beispiel #2
0
        private void ExitInfoSendbutton_Click(object sender, EventArgs e)
        {
            try
            {
                this.Cursor = Cursors.WaitCursor;                                           //等待
                tempGlobalExitInfo.CopyTo(GlobalDataInterface.globalOut_GlobalExitInfo, 0); //add by xcw -20191209
                if (GlobalDataInterface.global_IsTestMode)
                {
                    for (int i = 0; i < GlobalDataInterface.globalOut_SysConfig.nSubsysNum; i++)
                    {
                        GlobalDataInterface.TransmitParam(Commonfunction.EncodeSubsys(i), (int)HC_FSM_COMMAND_TYPE.HC_CMD_GLOBAL_EXIT_INFO, null);
                    }
                }
                this.Cursor = Cursors.Default;//正常状态
            }
            catch (Exception ex)
            {
                Trace.WriteLine("VolveTestForm中函数ExitInfoSendbutton_Click出错" + ex);
#if REALEASE
                GlobalDataInterface.WriteErrorInfo("VolveTestForm中函数ExitInfoSendbutton_Click出错" + ex);
#endif
            }
        }