/// <summary>
        /// ��ȡ���߹��Ϻ͸澯��ɫ��Ϣ
        /// </summary>
        /// <param name="scanBordAddr"></param>
        /// <param name="clr"></param>
        public static void GetRowLineCorAndStr(ScannerMonitorData monitorData,
                                               ScanBoardRowLineStatus rowLineStatus,
                                               ref Color clr)
        {
            clr = Color.Gray;
            if (monitorData == null || !monitorData.IsConnectMC)
            {
                return;
            }

            if (rowLineStatus != null
                && rowLineStatus.SoketRowLineStatusList != null
                && rowLineStatus.SoketRowLineStatusList.Count > 0)
            {
                clr = Color.Green;
                SoketRowLineInfo soketInfo = null;
                for (int i = 0; i < rowLineStatus.SoketRowLineStatusList.Count; i++)
                {
                    soketInfo = rowLineStatus.SoketRowLineStatusList[i];
                    if (!soketInfo.IsABCDOk
                        || !soketInfo.IsCtrlOk
                        || !soketInfo.IsDCLKOk
                        || !soketInfo.IsLatchOk
                        || !soketInfo.IsOEOk)
                    {
                        clr = Color.Red;
                        return;
                    }
                    if (soketInfo.RGBStatusList != null
                        || soketInfo.RGBStatusList.Count > 0)
                    {
                        for (int j = 0; j < soketInfo.RGBStatusList.Count; j++)
                        {
                            if (!soketInfo.RGBStatusList[j].IsBlueOk
                                || !soketInfo.RGBStatusList[j].IsGreenOk
                                || !soketInfo.RGBStatusList[j].IsRedOk
                                || !soketInfo.RGBStatusList[j].IsVRedOk)
                            {
                                clr = Color.Red;
                                return;
                            }
                        }
                    }
                }
            }
        }
        public static List<string> GetRowLineNoticeStr(ScannerMonitorData monitorData,
                                                       ScanBoardRowLineStatus rowLineStatus)
        {
            List<string> noticeStrList = new List<string>();
            string valueStr = "";
            if (monitorData == null)
            {
                valueStr = CommonStaticValue.DisplayTypeStr[(int)MonitorDisplayType.RowLine] + ":"
                           + CommonStaticValue.StatusNoticeStr[(int)CommonStaticValue.NoticeType.Unkown];
                noticeStrList.Add(valueStr);
                return noticeStrList;
            }

            if (!monitorData.IsConnectMC)
            {
                valueStr = CommonStaticValue.DisplayTypeStr[(int)MonitorDisplayType.RowLine] + ":"
                            + CommonStaticValue.StatusNoticeStr[(int)CommonStaticValue.NoticeType.Unkown]
                            + "(" + CommonStaticValue.NotConnectMC + ")";
                noticeStrList.Add(valueStr);
                return noticeStrList;
            }

            if (rowLineStatus == null)
            {
                valueStr = CommonStaticValue.DisplayTypeStr[(int)MonitorDisplayType.RowLine] + ":"
                            + CommonStaticValue.StatusNoticeStr[(int)CommonStaticValue.NoticeType.Unkown];
                noticeStrList.Add(valueStr);
                return noticeStrList;
            }
            bool bRGBHasFault = false;
            bool bAllHasFault = false;
            bool bIsOneGroupHasFault = false;
            bool bCtrlIsHasFault = false;
            List<string> groupAlarmListStr = null;
            List<string> soketAlarmListStr = null;
            if (rowLineStatus != null && rowLineStatus.SoketRowLineStatusList != null)
            {
                SoketRowLineInfo soketInfo = null;
                soketAlarmListStr = new List<string>();
                for (int i = 0; i < rowLineStatus.SoketRowLineStatusList.Count; i++)
                {
                    valueStr = "";
                    bRGBHasFault = false;
                    bCtrlIsHasFault = false;
                    groupAlarmListStr = new List<string>();
                    soketInfo = rowLineStatus.SoketRowLineStatusList[i];

                    #region ��ȡ�����ź��ַ���
                    if (!soketInfo.IsABCDOk)
                    {
                        bCtrlIsHasFault = true;
                        valueStr = CommonStaticValue.ScanSignalName;
                    }
                    if (!soketInfo.IsCtrlOk)
                    {
                        if (bCtrlIsHasFault)
                        {
                            valueStr += ",";
                        }
                        valueStr += "Ctrl";
                        bCtrlIsHasFault = true;
                    }
                    if (!soketInfo.IsDCLKOk)
                    {
                        if (bCtrlIsHasFault)
                        {
                            valueStr += ",";
                        }
                        valueStr += "DCLK";
                        bCtrlIsHasFault = true;
                    }
                    if (!soketInfo.IsLatchOk)
                    {
                        if (bCtrlIsHasFault)
                        {
                            valueStr += ",";
                        }
                        bCtrlIsHasFault = true;
                        valueStr += "Latch";
                    }
                    if (!soketInfo.IsOEOk)
                    {
                        if (bCtrlIsHasFault)
                        {
                            valueStr += ",";
                        }
                        valueStr += "OE";
                        bCtrlIsHasFault = true;
                    }
                    #endregion

                    if (bCtrlIsHasFault)
                    {
                        bAllHasFault = true;
                        soketAlarmListStr.Add(CommonStaticValue.SoketName + (i + 1).ToString() + ":");
                        soketAlarmListStr.Add("  " + valueStr + CommonStaticValue.SignalName);
                    }

                    #region ��ȡRGB�źŵ��ַ���
                    if (soketInfo.RGBStatusList != null
                        || soketInfo.RGBStatusList.Count > 0)
                    {
                        groupAlarmListStr = new List<string>();
                        for (int j = 0; j < soketInfo.RGBStatusList.Count; j++)
                        {
                            valueStr = "";
                            bIsOneGroupHasFault = false;
                            if (!soketInfo.RGBStatusList[j].IsRedOk)
                            {
                                bIsOneGroupHasFault = true;
                                valueStr = "R";
                            }
                            if (!soketInfo.RGBStatusList[j].IsGreenOk)
                            {
                                if (bIsOneGroupHasFault)
                                {
                                    valueStr += ",";
                                }
                                valueStr += "G";
                                bIsOneGroupHasFault = true;
                            }
                            if (!soketInfo.RGBStatusList[j].IsBlueOk)
                            {
                                if (bIsOneGroupHasFault)
                                {
                                    valueStr += ",";
                                }
                                valueStr += "B";
                                bIsOneGroupHasFault = true;
                            }
                            if (!soketInfo.RGBStatusList[j].IsVRedOk)
                            {
                                if (bIsOneGroupHasFault)
                                {
                                    valueStr += ",";
                                }
                                valueStr += "VR";
                                bIsOneGroupHasFault = true;
                            }
                            if (bIsOneGroupHasFault)
                            {
                                bRGBHasFault = true;
                                groupAlarmListStr.Add("  " + CommonStaticValue.GroupName + (j + 1).ToString()
                                                      + ":" + valueStr + CommonStaticValue.SignalName);
                            }
                        }

                        if (bRGBHasFault)
                        {
                            bAllHasFault = true;
                            if (!bCtrlIsHasFault)
                            {
                                soketAlarmListStr.Add(CommonStaticValue.SoketName + (i + 1).ToString() + ":");
                            }
                            soketAlarmListStr.AddRange(groupAlarmListStr);
                        }
                    }
                    #endregion
                }
            }
            if (bAllHasFault)
            {
                noticeStrList.Add(CommonStaticValue.FaultInformation + ":");
                noticeStrList.AddRange(soketAlarmListStr);
            }
            else
            {
                noticeStrList.Add(CommonStaticValue.DisplayTypeStr[(int)MonitorDisplayType.RowLine] + ":"
                                  + CommonStaticValue.StatusNoticeStr[(int)CommonStaticValue.NoticeType.OK]);
            }
            return noticeStrList;
        }
 /// <summary>
 /// ��ȡ���߸澯����
 /// </summary>
 /// <param name="scanBordAddr"></param>
 /// <param name="clr"></param>
 public static void GetRowLineFaultInfo(ScannerMonitorData monitorData,
                                        ScanBoardRowLineStatus rowLineStatus,
                                        out MonitorInfoResult resType)
 {
     resType = MonitorInfoResult.Unknown;
     if (monitorData == null || !monitorData.IsConnectMC)
     {
         return;
     }
     if (rowLineStatus != null && rowLineStatus.SoketRowLineStatusList != null)
     {
         SoketRowLineInfo soketInfo = null;
         resType = MonitorInfoResult.Ok;
         for (int i = 0; i < rowLineStatus.SoketRowLineStatusList.Count; i++)
         {
             soketInfo = rowLineStatus.SoketRowLineStatusList[i];
             if (!soketInfo.IsABCDOk
                 || !soketInfo.IsCtrlOk
                 || !soketInfo.IsDCLKOk
                 || !soketInfo.IsLatchOk
                 || !soketInfo.IsOEOk)
             {
                 resType = MonitorInfoResult.Fault;
                 return;
             }
             if (soketInfo.RGBStatusList != null
                 || soketInfo.RGBStatusList.Count > 0)
             {
                 for (int j = 0; j < soketInfo.RGBStatusList.Count; j++)
                 {
                     if (!soketInfo.RGBStatusList[j].IsBlueOk
                         || !soketInfo.RGBStatusList[j].IsGreenOk
                         || !soketInfo.RGBStatusList[j].IsRedOk
                         || !soketInfo.RGBStatusList[j].IsVRedOk)
                     {
                         resType = MonitorInfoResult.Fault;
                         return;
                     }
                 }
             }
         }
     }
 }