Esempio n. 1
0
        /// <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;
        }
Esempio n. 2
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;
        }