/// <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); }
//参数信息 - 加载 private void ButtonSParaOpen_Click(object sender, EventArgs e) { try { OpenFileDialog OpenDialogFile = new OpenFileDialog(); OpenDialogFile.DefaultExt = "*." + ConstPreDefine.FILE_NAME_PARA; OpenDialogFile.Filter = ConstPreDefine.FILE_NAME_PARA + " Files (*." + ConstPreDefine.FILE_NAME_PARA + ")|*." + ConstPreDefine.FILE_NAME_PARA + "|All Files (*.*)|*.*"; OpenDialogFile.Title = "内部品质参数文件打开"; if (OpenDialogFile.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } if (!System.IO.File.Exists(OpenDialogFile.FileName)) { return; } if (System.IO.Path.GetExtension(OpenDialogFile.FileName) != "." + ConstPreDefine.FILE_NAME_PARA) { return; } System.IO.FileInfo fileInfo = new System.IO.FileInfo(OpenDialogFile.FileName); int readFileSize = Convert.ToInt32(fileInfo.Length); int sumStructLen = 0; int structLen = Marshal.SizeOf(typeof(TSYS_DEV_PARAMETER)); sumStructLen += structLen; if (structLen < Marshal.SizeOf(typeof(TSYS_DEV_INFORMATION))) { structLen = Marshal.SizeOf(typeof(TSYS_DEV_INFORMATION)); } sumStructLen += Marshal.SizeOf(typeof(TSYS_DEV_INFORMATION)) * (ConstPreDefine.MAX_SUBSYS_NUM * ConstPreDefine.MAX_CHANNEL_NUM); if (sumStructLen != readFileSize) { MessageBox.Show("文件读取错误(" + structLen + "," + readFileSize + ")", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } using (System.IO.FileStream fileStream = System.IO.File.OpenRead(OpenDialogFile.FileName)) { byte[] FileData = new byte[structLen]; fileStream.Seek(0, SeekOrigin.Begin); fileStream.Read(FileData, 0, Marshal.SizeOf(typeof(TSYS_DEV_PARAMETER))); temp_SysDevParaData = (TSYS_DEV_PARAMETER)Commonfunction.BytesToStruct(FileData, typeof(TSYS_DEV_PARAMETER)); for (int i = 0; i < ConstPreDefine.MAX_SUBSYS_NUM * ConstPreDefine.MAX_CHANNEL_NUM; i++) { fileStream.Read(FileData, 0, Marshal.SizeOf(typeof(TSYS_DEV_INFORMATION))); temp_SysDevInfoData[i] = (TSYS_DEV_INFORMATION)Commonfunction.BytesToStruct(FileData, typeof(TSYS_DEV_INFORMATION)); } } SetFormParaDisplay(); SetFormInfoDisplay(); } catch (Exception ex) { Trace.WriteLine("ProjectSetForm-InnerQuality中函数ButtonSParaOpen_Click出错" + ex); #if REALEASE GlobalDataInterface.WriteErrorInfo("ProjectSetForm-InnerQuality中函数ButtonSParaOpen_Click出错" + ex); #endif } }