/// <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); }