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);
        }
        //参数信息 - 加载
        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
            }
        }