/// <summary> /// 컨트롤 재설정에 따른 업데이트 /// </summary> /// <param name="com"></param> /// <param name="lineName"></param> /// <param name="baud"></param> /// <param name="interval"></param> public void resetTabPageControls(string com, string lineName, string baud, string interval) { // COM 포트 셋 this.mCom = com; // 탭 이름 셋 this.mLineName = lineName; // 통신주기를 설정 하지 않으면 기본값으로 설정 if (interval == "") { this.mInterval = "1000"; } else { this.mInterval = interval; } // 컨트롤 초기값 설정 initControls(); // BMS 리스트 테이블에 저장 xmlBMSDoc list = new xmlBMSDoc(); mDataTable = list.ReadBMSInfoXMLFile(this.mCom); // 실시간 데이터 저장 테이블 mCommTable = new DataTable(); mCommTable = initCommDataTable(); // 실시간 에러 데이터 저장 테이블 mErrorTable = new DataTable(); mErrorTable = initCommDataTable(); // ID별 에러 테이블 생성 //mErrorSetTable = new DataTable[mDataTable.Rows.Count]; mErrorSetTable.Clear(); // 그리드 뷰, 테이블 초기값 int idx = 0; foreach (DataRow row in mDataTable.Rows) { dataGridViewBMSStatus.Rows.Add(row["Name"], "null", "null", "null", "null", "null", "null", "null", "null", row["Contact1"], row["Contact2"], row["Contact3"], row["Contact4"]); mCommTable.Rows.Add(row["ID"], row["Name"], "null", "null", "null", "null", "null", "null", "null", "null", row["Contact1"], row["Contact2"], row["Contact3"], row["Contact4"], idx); mErrorTable.Rows.Add(row["ID"], row["Name"], "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", idx); DataTable errorSetTable = initDataTableErrorSet(com, row["ID"].ToString()); mErrorSetTable.Add(row["ID"].ToString(), errorSetTable); idx++; } // 통신 컨트롤 mComm = new ModbusSerialAscii(this, mDataTable, mCommTable, mErrorTable, mErrorSetTable); mComm.DataRowErrorInfo += HandleErrorInfoChanged; mComm.LineName = this.mLineName; // 에러카운트 초기화(에러 발생시 탭이 점멸시 확인하는 에러 갯수 - 하나의 에러가 취소 되더라도 다른 애러가 있다면 점멸을 계속 유지하기) mErrorCount = 0; }
public tabPageControl(IWin32Window parent, string com, string lineName, string baud, string interval) { InitializeComponent(); // COM 포트 셋 this.mCom = com; // 탭 이름 셋 this.mLineName = lineName; // 통신주기를 설정 하지 않으면 기본값으로 설정 if (interval == "") { this.mInterval = "1000"; } else { this.mInterval = interval; } // 컨트롤 초기값 설정 initControls(); // BMS xml 파싱 클래스 선언 xmlBMSDoc list = new xmlBMSDoc(); // BMS 리스트 테이블에 읽기 mDataTable = list.ReadBMSInfoXMLFile(this.mCom); // 실시간 데이터 저장 테이블 mCommTable = new DataTable(); mCommTable = initCommDataTable(); // 실시간 에러 데이터 저장 테이블 mErrorTable = new DataTable(); mErrorTable = initCommDataTable(); // ID별 에러 테이블 생성 //mErrorSetTable = new DataTable[mDataTable.Rows.Count]; mErrorSetTable.Clear(); // 그리드 뷰, 테이블 초기값 int idx = 0; foreach (DataRow row in mDataTable.Rows) { dataGridViewBMSStatus.Rows.Add(row["Name"], "null", "null", "null", "null", "null", "null", "null", "null", row["Contact1"], row["Contact2"], row["Contact3"], row["Contact4"]); mCommTable.Rows.Add(row["ID"], row["Name"], "null", "null", "null", "null", "null", "null", "null", "null", row["Contact1"], row["Contact2"], row["Contact3"], row["Contact4"], idx); mErrorTable.Rows.Add(row["ID"], row["Name"], "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", idx); // ID별 에러 테이블 초기화 DataTable errorSetTable = initDataTableErrorSet(com, row["ID"].ToString()); mErrorSetTable.Add(row["ID"].ToString(), errorSetTable); idx++; } // 그리드 메뉴 dataGridViewBMSStatus.ContextMenu = new ContextMenu( new MenuItem[] { new MenuItem("그래프", realTimeGraphEventHandler), new MenuItem("설정", GridClickEventHandler) }); // 마우스 이벤트 dataGridViewBMSStatus.MouseUp += new MouseEventHandler(dataGridView1_MouseUp); // 모드버스 인터페이스 스레드 workerThread = new Thread(new ParameterizedThreadStart(DoWork)); // 통신 컨트롤 mComm = new ModbusSerialAscii(this, mDataTable, mCommTable, mErrorTable, mErrorSetTable); // 통신 컨트롤(에러 발생 이벤트 넘어옴) mComm.DataRowErrorInfo += HandleErrorInfoChanged; mComm.TimeoutPort += HandleTimeoutChanged; mComm.LineName = this.mLineName; mParent = parent; // 실시간 그래프 출력 처리 timer2.Interval = 500; timer2.Tick += new EventHandler(realTimeGraphIntervalTimer_Tick); // 에러카운트 초기화(에러 발생시 탭이 점멸시 확인하는 에러 갯수 - 하나의 에러가 취소 되더라도 다른 애러가 있다면 점멸을 계속 유지하기) mErrorCount = 0; }