示例#1
0
            /// <summary>
            /// 复制
            /// </summary>
            /// <returns></returns>
            public CDataVal Clone()
            {
                CDataVal module = new CDataVal();

                module.ACV = this.ACV;

                module.ACI = this.ACI;

                module.DCV = this.DCV;

                module.DCI = this.DCI;

                module.Status = this.Status;

                return(module);
            }
示例#2
0
        /// <summary>
        /// 读取模块信息
        /// </summary>
        /// <param name="curAddr"></param>
        /// <param name="module"></param>
        /// <param name="er"></param>
        /// <returns></returns>
        public bool ReadModuleData(int curAddr, out CDataVal module, out string er)
        {
            module = new CDataVal();

            er = string.Empty;

            try
            {
                string[] ErrCode = new string[] {
                    "异常报警", "通信存储或逻辑", "温度报警", "输入欠压",
                    "输出过流", "输出过压", "模块无输出", "模块忙碌",
                    "未知错误", "其他错误", "风扇警告", "功率偏低",
                    "制造商信息错误", "输入电流错误", "输出电流错误", "输出错误"
                };

                string status = string.Empty;

                string rData = string.Empty;

                if (!Read(curAddr, 0x800D, 5, out rData, out er))
                {
                    return(false);
                }

                int rLen = rData.Length / 4;

                string[] rDataList = new string[rLen];

                for (int i = 0; i < rLen; i++)
                {
                    rDataList[rLen - i - 1] = rData.Substring(i * 4, 4);
                }

                //状态

                if (rDataList[0] == "FFFF")
                {
                    module.Status = "I2C通信异常";
                    return(true);
                }

                int rVal = System.Convert.ToInt32(rDataList[0], 16);

                for (int i = 0; i < 16; i++)
                {
                    int bit = (rVal & (1 << i));

                    if (bit != 0)
                    {
                        module.Status += ErrCode[i] + ";";
                    }
                }

                if (module.Status == string.Empty)
                {
                    module.Status = "正常";
                }

                //输入电压
                if (rDataList[1] == "FFFF")
                {
                    module.ACV = 0;
                }
                else
                {
                    rVal       = System.Convert.ToInt32(rDataList[1], 16);
                    module.ACV = calLinear11(rVal);
                }

                //输入电流
                if (rDataList[1] == "FFFF")
                {
                    module.ACI = 0;
                }
                else
                {
                    rVal       = System.Convert.ToInt32(rDataList[2], 16);
                    module.ACI = calLinear11(rVal);
                }

                //输出电压
                if (rDataList[1] == "FFFF")
                {
                    module.DCV = 0;
                }
                else
                {
                    rVal       = System.Convert.ToInt32(rDataList[3], 16);
                    module.DCV = calLinear11(rVal);
                }
                //输出电流
                if (rDataList[1] == "FFFF")
                {
                    module.DCI = 0;
                }
                else
                {
                    rVal       = System.Convert.ToInt32(rDataList[4], 16);
                    module.DCI = calLinear11(rVal);
                }

                return(true);
            }
            catch (Exception ex)
            {
                er = ex.ToString();
                return(false);
            }
        }