1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace IControls_FireManager
- {
- public partial class Form_Receiver_Add : Form
- {
- // 클래스 생성
- _RECEIVER RECEIVER = new _RECEIVER();
- private int _RETRY_COUNT = 2;
- private int _DELTA_VOLT = 10;
- private int _COMM_TIMEOUT = 1000;
- private int _COMM_DELAY = 100;
- // 신규추가용 인지 편집용 구분
- private bool EditMode = false; // true : 편집용 , false = 신규추가용
- // 수신기 추가 혹은 수신기 정보를 편집할때 사용되는 클래스이다
- // iIndex : 0 이 들어오는 경우 -> 데이타베이스에 수신기 아이디가 존재한다면 새로운 아이디를 생성하고, 폴더 생성및 데이타베이스를 카피한다
- // iIndex : 수신기 ID 값이 들어오는 경우 -> 수신기 정보를 편집
- private string DEFAULT_MODEL = "IFC3300";
- public Form_Receiver_Add(int iIndex)
- {
- ///
- /// 초기화
- ///
- InitializeComponent();
- // 리시버 데이터 초기화
- // 사용하지 않는 값들은 기본값으로 입력한다.
- // 사용여부 (미사용)
- RECEIVER.ENABLE = true;
- // 타입 (미사용)
- RECEIVER.TYPE = null;
- // 이중화 플래그 (항상 false 설정함. 입력용 화면도 없음.)
- RECEIVER.REDUNDANT_FLAG = false;
- // =============================================
- //// 통신보드 최대개수 // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
- //if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER]).MODEL == "IFC3300")
- // RECEIVER.COM_BOARD_MAX_NUM = 68; // cyim
- //else
- // RECEIVER.COM_BOARD_MAX_NUM = 15;
- // IO보드 최대개수
- RECEIVER.IO_BOARD_MAX_NUM = 15;
- RECEIVER.ID = iIndex.ToString();
- // 프로젝트 새로 만들기 구조 변경
- // -> 프로젝트 폴더는 해쉬테이블에 없다면 곧바로 생성
- // -> 해쉬테이블이 있다면 분명 편집모드로 진입
- // -> 해쉬테이블에 없다면 새로운 수신기 추가 -> Initialize_Defalut 실행
- // -> 해쉬테이블에 없지만 기존의 데이타베이스에 있는경우 (데이타베이스 열기 시도하는 경우) -> Initialize_SubPort_FromDB 실행
- // -> 참고 : 프로젝트 폴더 생성시 중복된 데이타베이스 파일 예외처리되므로 가능함
- // 기존의 ID 가 있는지 체크.
- if (_Data.HASH_RECEIVER.ContainsKey(RECEIVER.ID) == false)
- {
- //
- // 데이타베이스 접근 경로 지정부
- //
- _Data.DataBaseFilePath_Set(null);//RECEIVER.ID);
- // 수신기 폴더 생성
- _File.Create_ReceiverFolder(_Data.Project_Path, _Data.Project_Name, RECEIVER.ID);
- // 수신기 ID 조회 : 0 이면 수신기 ID 가 없다
- if (Initialize_Receiver_FromDB(RECEIVER.ID) == 0)
- {
- // 아이디 생성
- RECEIVER.ID = Convert.ToString(_Data.CREATE_RECEIVER_ID());
- // Initialize_Defalut 함수안에 Initialize_SubPort 함수를 이미 포함하고 있다
- Initialize_Defalut();
- }
- else
- {
- // DB에서 SubPort 값까지 모두 불러온다.
- Initialize_SubPort_FromDB(RECEIVER.ID);
- }
- // 새로운 수신기를 추가함
- EditMode = false;
- }
- else
- {
- // 수신기 아이디를 토대로 해쉬테이블의 있는 정보를 가져온다
- RECEIVER = (_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID];
- // 기존의 수신기 수정함
- EditMode = true;
- }
- // RECEIVER 내용을 화면에 표출한다.
- Fill_ReceiverData();
- ///
- /// 이벤트
- ///
- // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용)
- this.FormClosing += new FormClosingEventHandler(CreateForm_FormClosing);
- // 윈도우 스타일 변경 이벤트 핸들러 등록
- _Event.WindowStyleSet_SendMessage_Event += new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event);
- ///
- /// 스타일 변경
- ///
- UI_Style_Initialize();
- }
- // Receiver 데이터를 DB에 저장하자!
- public void _Event_Project_Receiver_Save_Event()
- {
- try
- {
- int iReceiverID = Util.StrToInt(RECEIVER.ID, 0);
- // TB_BOARD에 쓰기 (통신 보드, I/O 보드, KEYPAD)
- // 기존 데이터는 지운다. (이미 모든 데이터는 RECEIVER에 들어있다!)
- _Db.Execute(_Sql.Delete_Table("TB_BOARD", RECEIVER.ID));
- string sSQL_BOARD = null;
- //
- // 통신보드
- //
- // 강제 쿼리 (특별히 펌프로 인하여 추가되는 보드가 존재한다)
- try
- {
- if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).MODEL == "IFC3300")
- {
- sSQL_BOARD = _Sql.TB_BOARD_table_Insert_BigReceiver(
- iReceiverID, // ReceiverID
- 1, // COMMID (1 고정)
- 0, // BOARDID (0 고정)
- "통신보드 0", // BOARD_NAME
- "Y", // LOOP0 Use Flag
- "N", // LOOP1 Use Flag
- "N", // LOOP2 Use Flag
- "N", // LOOP3 Use Flag
- "Y"); // Use Flag
- }
- else
- {
- sSQL_BOARD = _Sql.TB_BOARD_table_Insert(
- iReceiverID, // ReceiverID
- 1, // COMMID (1 고정)
- 15, // BOARDID (15 고정)
- "통신보드 15", // BOARDID
- "Y", // LOOP0 Use Flag
- "N", // LOOP1 Use Flag
- "Y"); // Use Flag
- }
- _Db.Execute(sSQL_BOARD);
- }
- catch
- {; }
- // cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다
- foreach (string COM_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).List_COM_BOARD_ID)
- {
- // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
- if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).MODEL == "IFC3300")
- {
- sSQL_BOARD = _Sql.TB_BOARD_table_Insert_BigReceiver(
- iReceiverID, // ReceiverID
- 1, // COMMID (1로 고정)
- ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID, // BOARDID
- ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_NAME, // BOARDID
- (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh1_Use_Flag ? "Y" : "N"), // LOOP0 Use Flag
- (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh2_Use_Flag ? "Y" : "N"), // LOOP1 Use Flag
- (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh3_Use_Flag ? "Y" : "N"), // LOOP2 Use Flag
- (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh4_Use_Flag ? "Y" : "N"), // LOOP3 Use Flag
- (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bUse_Flag ? "Y" : "N")); // Use Flag
- }
- else
- {
- sSQL_BOARD = _Sql.TB_BOARD_table_Insert(
- iReceiverID, // ReceiverID
- 1, // COMMID (1로 고정)
- ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_ID, // BOARDID
- ((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).BOARD_NAME, // BOARDID
- (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh1_Use_Flag ? "Y" : "N"), // LOOP0 Use Flag
- (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bCh2_Use_Flag ? "Y" : "N"), // LOOP1 Use Flag
- (((_COM_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_COM_BOARD[COM_BOARD_ID]).bUse_Flag ? "Y" : "N")); // Use Flag
- }
- _Db.Execute(sSQL_BOARD);
- }
- //
- // IO 보드
- //
- // 강제 쿼리 (특별히 IO 보드는 셋팅하지 않아도 기본적으로 사용함으로 셋팅한다. 모델에 상관없이 IO 보드는 15는 무조건 사용하는 보드이다)
- try
- {
- if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).MODEL == "IFC3300")
- {
- // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- sSQL_BOARD = _Sql.TB_BOARD_table_Insert_BigReceiver(
- iReceiverID, // ReceiverID
- 3, // COMMID (3 고정)
- 0, // BOARDID (0 고정) // cyim 2016.01.10 IO 보드 강제쿼리에 코드 버그
- "I/O 보드 0", // BOARD_NAME
- "Y", // LOOP0 Use Flag
- "N", // LOOP1 Use Flag
- "N", // LOOP2 Use Flag
- "N", // LOOP3 Use Flag
- "Y"); // Use Flag
- }
- else
- {
- sSQL_BOARD = _Sql.TB_BOARD_table_Insert(
- iReceiverID, // ReceiverID
- 3, // COMMID (3 고정)
- 15, // BOARDID (15 고정)
- "I/O 보드 15", // BOARDID
- "Y", // LOOP0 Use Flag
- "N", // LOOP1 Use Flag
- "Y"); // Use Flag
- }
- _Db.Execute(sSQL_BOARD);
- }
- catch
- {; }
- // cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다
- foreach (string IO_BOARD_ID in ((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).List_IO_BOARD_ID)
- {
- // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
- if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).MODEL == "IFC3300")
- {
- sSQL_BOARD = _Sql.TB_BOARD_table_Insert_BigReceiver(
- iReceiverID, // ReceiverID
- 3, // IO Board ID (3로 고정)
- ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID, // BOARDID
- ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_NAME, // BOARDID
- (((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag ? "Y" : "N"), // LOOP0 Use Flag (Use Flag와 같은 같으로 넣는다.)
- "N", // LOOP1 Use Flag
- "N", // LOOP2 Use Flag
- "N", // LOOP3 Use Flag
- (((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag ? "Y" : "N")); // Use Flag
- }
- else
- {
- sSQL_BOARD = _Sql.TB_BOARD_table_Insert(
- iReceiverID, // ReceiverID
- 3, // IO Board ID (3로 고정)
- ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_ID, // BOARDID
- ((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).BOARD_NAME, // BOARDID
- (((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag ? "Y" : "N"), // LOOP0 Use Flag (Use Flag와 같은 같으로 넣는다.)
- "N", // LOOP1 Use Flag
- (((_IO_BOARD)((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).Hash_IO_BOARD[IO_BOARD_ID]).bUse_Flag ? "Y" : "N")); // Use Flag
- }
- _Db.Execute(sSQL_BOARD);
- }
- // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
- if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER.ID]).MODEL == "IFC3300")
- {
- // cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다
- sSQL_BOARD = _Sql.TB_BOARD_table_Insert_BigReceiver(
- iReceiverID, // ReceiverID
- 4, // KeyPAD ID (4로 고정)
- RECEIVER.KEYPAD.BOARD_ID, // BOARDID
- RECEIVER.KEYPAD.BOARD_NAME, // BOARDID
- "N", // LOOP0 Use Flag
- "N", // LOOP1 Use Flag
- "N", // LOOP2 Use Flag
- "N", // LOOP3 Use Flag
- (RECEIVER.KEYPAD.bUse_Flag ? "Y" : "N")); // Use Flag
- }
- else
- {
- sSQL_BOARD = _Sql.TB_BOARD_table_Insert(
- iReceiverID, // ReceiverID
- 4, // KeyPAD ID (4로 고정)
- RECEIVER.KEYPAD.BOARD_ID, // BOARDID
- RECEIVER.KEYPAD.BOARD_NAME, // BOARDID
- "N", // LOOP0 Use Flag
- "N", // LOOP1 Use Flag
- (RECEIVER.KEYPAD.bUse_Flag ? "Y" : "N")); // Use Flag
- }
- _Db.Execute(sSQL_BOARD);
- // TB_COMM
- // 기존 데이터는 지운다.
- _Db.Execute(_Sql.Delete_Table("TB_COMM", RECEIVER.ID));
- string sSQL_COMM_CommBoard = _Sql.TB_COMM_table_Insert(iReceiverID, // Receiver ID
- 1, // COMM ID (고정)
- "FRONT LOOP", // 명칭 (고정)
- 1, // COMM LOOP (고정)
- RECEIVER.Port4CommBoard.Get_COM_PORT(), // COMM_PORT
- RECEIVER.Port4CommBoard.BaudRate, // BAUD_RATE
- RECEIVER.Port4CommBoard.Get_COM_PARITY(), // Parity
- RECEIVER.Port4CommBoard.DataBits, // DATABits
- RECEIVER.Port4CommBoard.Get_COM_STOPBIT(), // StopBits
- RECEIVER.Port4CommBoard.TimeOut, // TimeOut
- RECEIVER.Port4CommBoard.Delay, // Delay
- RECEIVER.Port4CommBoard.Delta_Volt, // Delta Volt (전압차 발생시 표시)
- RECEIVER.Port4CommBoard.Retry_Count, // 통신 Retry Count
- (RECEIVER.Port4CommBoard.Use_Flag ? "Y" : "N")); // 사용여부
- string sSQL_COMM_IOBoard = _Sql.TB_COMM_table_Insert(iReceiverID, // Receiver ID
- 3, // COMM ID (고정)
- "IO BOARD", // 명칭 (고정)
- 3, // COMM LOOP (고정)
- RECEIVER.Port4IOBoard.Get_COM_PORT(), // COMM_PORT
- RECEIVER.Port4IOBoard.BaudRate, // BAUD_RATE
- RECEIVER.Port4IOBoard.Get_COM_PARITY(), // Parity
- RECEIVER.Port4IOBoard.DataBits, // DATABits
- RECEIVER.Port4IOBoard.Get_COM_STOPBIT(), // StopBits
- RECEIVER.Port4IOBoard.TimeOut, // TimeOut
- RECEIVER.Port4IOBoard.Delay, // Delay
- RECEIVER.Port4IOBoard.Delta_Volt, // Delta Volt (전압차 발생시 표시)
- RECEIVER.Port4IOBoard.Retry_Count, // 통신 Retry Count
- (RECEIVER.Port4IOBoard.Use_Flag ? "Y" : "N")); // 사용여부
- string sSQL_COMM_KeyPAD = _Sql.TB_COMM_table_Insert(iReceiverID, // Receiver ID
- 4, // COMM ID (고정)
- "KEYPAD", // 명칭 (고정)
- 4, // COMM LOOP (고정)
- RECEIVER.Port4KeyPAD.Get_COM_PORT(), // COMM_PORT
- RECEIVER.Port4KeyPAD.BaudRate, // BAUD_RATE
- RECEIVER.Port4KeyPAD.Get_COM_PARITY(), // Parity
- RECEIVER.Port4KeyPAD.DataBits, // DATABits
- RECEIVER.Port4KeyPAD.Get_COM_STOPBIT(), // StopBits
- RECEIVER.Port4KeyPAD.TimeOut, // TimeOut
- RECEIVER.Port4KeyPAD.Delay, // Delay
- RECEIVER.Port4KeyPAD.Delta_Volt, // Delta Volt (전압차 발생시 표시)
- RECEIVER.Port4KeyPAD.Retry_Count, // 통신 Retry Count
- (RECEIVER.Port4KeyPAD.Use_Flag ? "Y" : "N")); // 사용여부
- string sSQL_COMM_EmergencyBroadcast = _Sql.TB_COMM_table_Insert(iReceiverID, // Receiver ID
- 5, // COMM ID (고정)
- "BroadCast", // 명칭 (고정)
- 5, // COMM LOOP (고정)
- RECEIVER.Port4EmergencyBroadcast.Get_COM_PORT(), // COMM_PORT
- RECEIVER.Port4EmergencyBroadcast.BaudRate, // BAUD_RATE
- RECEIVER.Port4EmergencyBroadcast.Get_COM_PARITY(), // Parity
- RECEIVER.Port4EmergencyBroadcast.DataBits, // DATABits
- RECEIVER.Port4EmergencyBroadcast.Get_COM_STOPBIT(), // StopBits
- RECEIVER.Port4EmergencyBroadcast.TimeOut, // TimeOut
- RECEIVER.Port4EmergencyBroadcast.Delay, // Delay
- RECEIVER.Port4EmergencyBroadcast.Delta_Volt, // Delta Volt (전압차 발생시 표시)
- RECEIVER.Port4EmergencyBroadcast.Retry_Count, // 통신 Retry Count
- (RECEIVER.Port4EmergencyBroadcast.Use_Flag ? "Y" : "N")); // 사용여부
- _Db.Execute(sSQL_COMM_CommBoard);
- _Db.Execute(sSQL_COMM_IOBoard);
- _Db.Execute(sSQL_COMM_KeyPAD);
- _Db.Execute(sSQL_COMM_EmergencyBroadcast);
- // TB_CONFIG
- _Db.Execute(_Sql.Delete_Table("TB_CONFIG", RECEIVER.ID));
- string sSQL_Config = _Sql.TB_CONFIG_table_Insert(iReceiverID, // 수신기 ID
- (RECEIVER.FIRE_ACCUMULATION_MODE ? "Y" : "N"), // 축적 모드 여부
- RECEIVER.FIRE_ACCUMULATION_SECOND, // 축적 시간
- (RECEIVER.RECOVER_MODE ? "Y" : "N"), // 자동복구 (N) / 지속(Y)
- RECEIVER.USERID, // Master USER ID
- RECEIVER.USER_PASSWORD, // Master Password
- RECEIVER.NAME, // 빌딩명 (수신기명)
- (RECEIVER.JUMP_TO_VIEW ? "Y" : "N"), // 화재시 화면 이동 여부 (Y/N)
- (RECEIVER.MASTER_FLAG ? "Y" : "N"), // 네트워크 수신기 설정 기능 추가 MASTER_FLAG 여부 (Y/N)
- "N" // 시운전모드 // cyim 2013.7.3 시운전모드 초기값 변경 // 기본값 변경 cyim 2013.7.29 Y->N
- );
- _Db.Execute(sSQL_Config);
- // TB_DEVICE_TYPE 중에 타입이 SYMBOL_TYPE 중 O 는 무조건 N 으로 변경한다
- _Db.UPDATE("TB_DEVICE_TYPE", "SYMBOL_TYPE=O", "USE_FLAG=N");
- // TB_RECEIVER
- // 기존 데이터는 지운다.
- _Db.Execute(_Sql.Delete_Table("TB_RECEIVER", RECEIVER.ID));
- string sSQL_Receiver = _Sql.TB_RECEIVER_table_Insert(iReceiverID, RECEIVER.NAME, RECEIVER.IP, RECEIVER.EVENT_PORT, RECEIVER.COMMAND_PORT, RECEIVER.sUseFlag, RECEIVER.MODEL);
- _Db.Execute(sSQL_Receiver);
- }
- catch (Exception ex)
- {
- // LOG
- _Event.DebugView_SendMessage_Write(ex.ToString());
- // 실패하였습니다
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 250, 150, _Text.FailInform, 0);
- }
- }
- // 폼닫기 이벤트를 등록 (이벤트 핸들러 해제용)
- public void CreateForm_FormClosing(object sender, FormClosingEventArgs e)
- {
- // 윈도우 스타일 변경 이벤트 핸들러 해제
- _Event.WindowStyleSet_SendMessage_Event -= new _Event.WindowStyleSet_SendMessage_Handler(_Event_WindowStyleSet_SendMessage_Event);
- }
- // 윈도우 스타일 변경 이벤트
- public void _Event_WindowStyleSet_SendMessage_Event()
- {
- UI_Style_Initialize();
- }
- // 스타일 초기화 함수
- private void UI_Style_Initialize()
- {
- }
- // 기본 데이터를 RECEIVER에 채운다.
- public void Initialize_Defalut()
- {
- //수신기 기본 아이피는 127.0.0.1 -> 네트워크수신기 설정시에는 반드시 Static 아이피를 사용해야한다
- // 기본값 (현재아이피)
- string[] myip = { "127", "0", "0", "1" };//_Convert.String_to_ArrayString(_Convert.Split_IPAddress, _Tcp.MyIP());
- EditBox_IP1.Text = myip[0];
- EditBox_IP2.Text = myip[1];
- EditBox_IP3.Text = myip[2];
- EditBox_IP4.Text = myip[3];
- // 기본 데이터로 RECEIVER 클래스의 내용을 채운다.
- // IP
- RECEIVER.IP = EditBox_IP1.Text + _Text.Period + EditBox_IP2.Text + _Text.Period + EditBox_IP3.Text + _Text.Period + EditBox_IP4.Text;
- RECEIVER.EVENT_PORT = 9001;
- RECEIVER.COMMAND_PORT = 9002;
- // 축적 모드 (true:축척, false:비축척)
- //RECEIVER.FIRE_ACCUMULATION_MODE = false; <= 자동 설정이 됨.
- RECEIVER.FIRE_ACCUMULATION_SECOND = 0;
- // 수신기 모델
- RECEIVER.MODEL = DEFAULT_MODEL;
- // 수신기 모델에 따른 통신보드 개수
- RECEIVER.COM_BOARD_MAX_NUM = 64;
- // 복구 모드 (false: 자동복구, true: 지속)
- RECEIVER.RECOVER_MODE = false;
- RECEIVER.NAME = "";
- // 화재 감지되면 해당 화면으로 점프함.
- RECEIVER.JUMP_TO_VIEW = false; // 기본값 변경 cyim 2013.7.29 Y->N
- // 네트워크 수신기 설정 기능 추가 (신규로 들어가는 경우 슬레이브)
- RECEIVER.MASTER_FLAG = false;
- // 서브 포트 내용을 초기화한다.
- Initialize_SubPort();
- // 이름
- RECEIVER.KEY_NAME = _Text.UI_TREE_RECEIVER + RECEIVER.ID + " [" + RECEIVER.MODEL + "]";
- }
- // 수신기 표시 내용 채워넣기
- public void Fill_ReceiverData()
- {
- // 빌딩명칭 표시
- editBox_BuildingName.Text = RECEIVER.NAME;
- // 기본값 (현재아이피)
- string[] myip = _Convert.String_to_ArrayString(_Convert.Split_IPAddress, RECEIVER.IP);
- EditBox_IP1.Text = myip[0];
- EditBox_IP2.Text = myip[1];
- EditBox_IP3.Text = myip[2];
- EditBox_IP4.Text = myip[3];
- // 축적 내용 표시
- uiComboBox_FireAccumulation.Items.Clear();
- uiComboBox_FireAccumulation.Items.Add("0 (축적안함)");
- uiComboBox_FireAccumulation.Items.Add("30");
- uiComboBox_FireAccumulation.Items.Add("40");
- uiComboBox_FireAccumulation.Items.Add("50");
- uiComboBox_FireAccumulation.Items.Add("60");
- switch (RECEIVER.FIRE_ACCUMULATION_SECOND)
- {
- case 0:
- uiComboBox_FireAccumulation.SelectedIndex = 0;
- break;
- case 30:
- uiComboBox_FireAccumulation.SelectedIndex = 1;
- break;
- case 40:
- uiComboBox_FireAccumulation.SelectedIndex = 2;
- break;
- case 50:
- uiComboBox_FireAccumulation.SelectedIndex = 3;
- break;
- case 60:
- uiComboBox_FireAccumulation.SelectedIndex = 4;
- break;
- }
- // 포트번호 표시 (이벤트 포트, 명령 포트)
- editBox_CommandPort.Text = Convert.ToString(RECEIVER.COMMAND_PORT);
- editBox_EventPort.Text = Convert.ToString(RECEIVER.EVENT_PORT);
- // Jump To View 플래그 표시
- uiCheckBox_ViewChange.Checked = RECEIVER.JUMP_TO_VIEW;
- // 네트워크 수신기 설정 기능 추가
- uiCheckBox_MasterFlag.Checked = RECEIVER.MASTER_FLAG;
- // cyim 2016.12.02 : 수신기 모델 설정 기능 추가
- if (RECEIVER.MODEL == "IFC3300") uiRadioButton_IFC3300.Checked = true;
- else if (RECEIVER.MODEL == "IFC3000") uiRadioButton_IFC3000.Checked = true;
- else if (RECEIVER.MODEL == "IFC2000") uiRadioButton_IFC2000.Checked = true;
- else if (RECEIVER.MODEL == "IFC1000") uiRadioButton_IFC1000.Checked = true;
- else uiRadioButton_IFC1000.Checked = true;
- // 화재 모드 표시 (False = 자동복구, True = 지속)
- if (RECEIVER.RECOVER_MODE == false) uiRadioButton_AutoRecover.Checked = true;
- else uiRadioButton_Steady.Checked = true;
- }
- private bool Check_IP_Range(string Data)
- {
- try
- {
- int ip = Int32.Parse(Data);
- if (ip >= 0 && ip <= 255)
- return true;
- else
- return false;
- }
- catch
- {
- return false;
- }
- }
- // 추가 버튼
- public void UiButton_SubPortAdd_Click(object sender, EventArgs e)
- {
- // 예외처리 (미구현)
- // ID 가 양수형 숫자인지
- // IP 라면 범위초과인지
- string IP1 = EditBox_IP1.Text;
- string IP2 = EditBox_IP2.Text;
- string IP3 = EditBox_IP3.Text;
- string IP4 = EditBox_IP4.Text;
- // IP
- RECEIVER.IP = IP1 + _Text.Period + IP2 + _Text.Period + IP3 + _Text.Period + IP4;
- //// 기존의 IP 가 있는지 체크해서 있다면 경고 팝업창 처리
- //foreach (string RECEIVER_KEY in _Data.LIST_RECEIVER_ID)
- //{
- // if (((_RECEIVER)_Data.HASH_RECEIVER[RECEIVER_KEY]).IP == RECEIVER.IP)
- // {
- // _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.OverLapIP, 0);
- // return;
- // }
- //}
- // 공백 허용 안함
- if (IP1.Trim().Length == 0
- || IP2.Trim().Length == 0
- || IP3.Trim().Length == 0
- || IP4.Trim().Length == 0)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.NullIP, 0);
- return;
- }
- // 허용 범위 체크
- if (Check_IP_Range(IP1) == false
- || Check_IP_Range(IP2) == false
- || Check_IP_Range(IP3) == false
- || Check_IP_Range(IP4) == false)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.NotIP, 0);
- return;
- }
- // 편집모드가 아닌 신규추가용인 경우
- if (EditMode == false)
- {
- // 기존의 ID 가 있는지 체크해서 있다면 경고 팝업창 처리
- if (_Data.HASH_RECEIVER.ContainsKey(RECEIVER.ID) == true)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.OverLapKey, 0);
- return;
- }
- }
- // 빌딩명칭 체크
- if (editBox_BuildingName.Text == null || editBox_BuildingName.Text.Trim().Length == 0)
- {
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.Warnning, 250, 150, _Text.NotCorrectBuildName, 0);
- //return; // 프로젝트 열기시에 빌딩명이 없어도 읽을수 있도록 처리 - cyim 2013.6.18
- }
- else if (_Error.Data_Confirm_NotDefineString(this.editBox_BuildingName.Text.Trim()) != null)
- {
- // 상위 비교문에서 팝업처리
- return;
- }
- // 빌딩명칭 표시 (선후행공백처리)
- RECEIVER.NAME = editBox_BuildingName.Text.Trim();
- if (uiComboBox_FireAccumulation.SelectedIndex == 0)
- {
- RECEIVER.FIRE_ACCUMULATION_SECOND = 0;
- }
- else
- {
- RECEIVER.FIRE_ACCUMULATION_SECOND = Convert.ToInt16(uiComboBox_FireAccumulation.SelectedValue);
- }
- // COMMAND Port
- RECEIVER.COMMAND_PORT = Util.StrToInt(editBox_CommandPort.Text, 0);
- // Event Port
- RECEIVER.EVENT_PORT = Util.StrToInt(editBox_EventPort.Text, 0);
- // Jump To View 플래그 표시
- RECEIVER.JUMP_TO_VIEW = uiCheckBox_ViewChange.Checked;
- // 네트워크 수신기 설정 기능 추가
- RECEIVER.MASTER_FLAG = uiCheckBox_MasterFlag.Checked;
- // 복구 모드 (False = 자동복구, False = 지속)
- if (uiRadioButton_AutoRecover.Checked == true)
- {
- RECEIVER.RECOVER_MODE = false;
- }
- else
- {
- RECEIVER.RECOVER_MODE = true;
- }
- // cyim 2016.12.02 : 수신기 모델 설정 기능 추가
- if (uiRadioButton_IFC3300.Checked == true) RECEIVER.MODEL = "IFC3300";
- else if (uiRadioButton_IFC1000.Checked == true) RECEIVER.MODEL = "IFC1000";
- else if (uiRadioButton_IFC2000.Checked == true) RECEIVER.MODEL = "IFC2000";
- else if (uiRadioButton_IFC3000.Checked == true) RECEIVER.MODEL = "IFC3000";
- // 이름
- RECEIVER.KEY_NAME = _Text.UI_TREE_RECEIVER + RECEIVER.ID + " [" + RECEIVER.MODEL + "]";
- // 편집모드가 아닌 신규추가용인 경우
- if (EditMode == false)
- {
- // 해쉬에 추가
- if (_Hash.Add(_Data.HASH_RECEIVER, RECEIVER.ID, RECEIVER) == true)
- {
- // 키리스트에 추가
- _Data.LIST_RECEIVER_ID.Add(RECEIVER.ID);
- }
- // 트리에 추가
- _Event.TreeView_ReceiverNodeSet_SendMessage_Write(RECEIVER);
- }
- else
- {
- // 완료 이벤트 발생
- _Event.WorkViewPageName_Receiver_SendMessage_Write(RECEIVER.ID);
- }
- // DB 에 저장
- _Event_Project_Receiver_Save_Event();
- // 수신기 편집만 저장한다고 나옴, 즉 추가의 경우는 팝업창이 출력되지 않는다
- if (EditMode == true)
- {
- // 저장하였습니다
- _Popup.Create(Popup_Type.Confirm, Popup_Style.Normal, _Text.OK, 250, 150, _Text.SaveInform, 0);
- }
- else
- {
- // 신규 수신기 아이디 추가
- if (_Data.LIST_XMLRECEIVER_ID.Contains(RECEIVER.ID) == false)
- _Data.LIST_XMLRECEIVER_ID.Add(RECEIVER.ID);
- // 수신기 파일 생성
- _File.Write_Receiver_XML(_Data.Project_Path + "\\" + _Data.Project_Name);
- }
- // 프로젝트 수정
- _Data.ProJect_Save_Complete = false;
- // 폼종료
- this.Close();
- }
- COMM_STOPBIT GetStopBits(string sParam)
- {
- COMM_STOPBIT eRet = COMM_STOPBIT.ONESTOPBIT; // 디폴트값
- if (sParam == "2") eRet = COMM_STOPBIT.TWOSTOPBITS;
- if (sParam == "1.5") eRet = COMM_STOPBIT.ONE5STOPBITS;
- return eRet;
- }
- COMM_PARITY GetParity(string sParam)
- {
- COMM_PARITY eRet = COMM_PARITY.NONE; // 디폴트값
- if (sParam == "E") eRet = COMM_PARITY.EVEN;
- if (sParam == "O") eRet = COMM_PARITY.ODD;
- return eRet;
- }
- int GetComPort(string sParam)
- {
- int iRet = 0;
- if (sParam == "COM1") iRet = 1;
- if (sParam == "COM2") iRet = 2;
- if (sParam == "COM3") iRet = 3;
- if (sParam == "COM4") iRet = 4;
- if (sParam == "COM5") iRet = 5;
- if (sParam == "COM6") iRet = 6;
- if (sParam == "COM7") iRet = 7;
- if (sParam == "COM8") iRet = 8;
- return iRet;
- }
- // 무작정 Alter 명령어를 사용하면 기존의 데이타가 삭제되어 버린다
- public bool Column_Check(string ColumnName, string TableName)
- {
- string SQL = string.Format("SELECT Count({0}) FROM {1}", ColumnName, TableName);
- // 접속 세션
- FirebirdSql.Data.FirebirdClient.FbConnection session = null;
- // 접속된 상태의 명령어
- FirebirdSql.Data.FirebirdClient.FbCommand command = null;
- // 접속 세션 주소
- string address = null;
- try
- {
- // 접속 세션 주소 셋팅
- address = string.Format("Server={0};User={1};Password={2};Database={3};Charset={4};ServerType={5}",
- _Data.DB_IP, // IP ex)192.168.63.22
- _Data.DB_ID, // 사용자
- _Data.DB_PassWord, // 암호
- _Data.DB_FullPath, // 절대위치.. ex) C:\TEST\TEST.FDB
- "KSC_5601", // KSC_5601 같은 문자셋을 지정
- "0");
- // 상위 문구를 신뢰하고 보내는 루틴
- session = new FirebirdSql.Data.FirebirdClient.FbConnection(address);
- session.Open();
- command = new FirebirdSql.Data.FirebirdClient.FbCommand(SQL, session);
- command.ExecuteNonQuery();
- if (session != null) session.Close();
- if (command != null) command.Dispose();
- return true;
- }
- catch (Exception e)
- {
- // LOG
- _Event.DebugView_SendMessage_Write(e.ToString() + "SQL:" + SQL);
- if (session != null) session.Close();
- if (command != null) command.Dispose();
- return false;
- }
- }
- public bool Data_Check(string TableName, string DataName, string DataValue)
- {
- string SQL = string.Format("SELECT * FROM {0} WHERE {1}='{2}'", TableName, DataName, DataValue);
- // 접속 세션
- FirebirdSql.Data.FirebirdClient.FbConnection session = null;
- // 접속된 상태의 명령어
- FirebirdSql.Data.FirebirdClient.FbCommand command = null;
- // 접속 세션 주소
- string address = null;
- // 접속 아답터
- FirebirdSql.Data.FirebirdClient.FbDataAdapter dataAdapter = null;
- DataSet dataSet = null;
- try
- {
- // 접속 세션 주소 셋팅
- address = string.Format("Server={0};User={1};Password={2};Database={3};Charset={4};ServerType={5}",
- _Data.DB_IP, // IP ex)192.168.63.22
- _Data.DB_ID, // 사용자
- _Data.DB_PassWord, // 암호
- _Data.DB_FullPath, // 절대위치.. ex) C:\TEST\TEST.FDB
- "KSC_5601", // KSC_5601 같은 문자셋을 지정
- "0");
- // 상위 문구를 신뢰하고 보내는 루틴
- session = new FirebirdSql.Data.FirebirdClient.FbConnection(address);
- session.Open();
- command = new FirebirdSql.Data.FirebirdClient.FbCommand(SQL, session);
- dataAdapter = new FirebirdSql.Data.FirebirdClient.FbDataAdapter(SQL, session);
- dataAdapter.SelectCommand = command;
- dataSet = new DataSet();
- dataAdapter.Fill(dataSet, "GetData");
- if (dataAdapter != null) dataAdapter.Dispose();
- if (session != null) session.Close();
- if (command != null) command.Dispose();
- if (dataSet != null) dataSet.Dispose();
- if (dataSet.Tables["GetData"].Rows.Count > 0) return true;
- else return false;
- }
- catch (Exception e)
- {
- // LOG
- _Event.DebugView_SendMessage_Write(e.ToString() + "SQL:" + SQL);
- if (dataAdapter != null) dataAdapter.Dispose();
- if (session != null) session.Close();
- if (command != null) command.Dispose();
- if (dataSet != null) dataSet.Dispose();
- return false;
- }
- }
- // 아래 함수는 프로젝트 읽기하는 경우 무조건 진입하는 함수이다.
- // DB에서 수신기 정보를 읽어 RECEIVER에 값을 넣는다.
- // 또한 강제쿼리를 날려서 데이타베이스 변경이 필요한 경우에 반영하도록 한다
- public int Initialize_Receiver_FromDB(string Receiver_ID)
- {
- //
- // cyim 2016.12.02 : 프로젝트를 열때 강제 쿼리
- //
- // cyim 2016.09.21 : TB_BOARD_2 테이블 사용하도록 한내용을 다시 TB_BOARD 로 변경한다. 결국은 무조건 프로젝트를 열때 컬럼이 추가된다. 기존에 있다면 예외 처리됨
- if (Column_Check("LOOP2_USE_FLAG", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP2_USE_FLAG VARCHAR(1)");
- if (Column_Check("LOOP3_USE_FLAG", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP3_USE_FLAG VARCHAR(1)");
- if (Column_Check("LOOP2_BAUD_RATE", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP2_BAUD_RATE VARCHAR(1)"); // cyim 2016.11.04 : 잘못된 쿼리 수정
- if (Column_Check("LOOP3_BAUD_RATE", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP3_BAUD_RATE VARCHAR(1)");
- if (Column_Check("LOOP2_CUT_FLAG", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP2_CUT_FLAG VARCHAR(1)");
- if (Column_Check("LOOP3_CUT_FLAG", "TB_BOARD") == false) _Db.Execute("ALTER TABLE TB_BOARD ADD LOOP3_CUT_FLAG VARCHAR(1)");
- if (Column_Check("MODEL", "TB_RECEIVER") == false) _Db.Execute("ALTER TABLE TB_RECEIVER ADD MODEL VARCHAR(20)");
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "EW") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "EW", "설비출력상태 ON", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "EF") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "EF", "설비출력상태 OFF", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "ED") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "ED", "설비전체연동조작버튼", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A1") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "A1", "가압펌프1 스위치 기동", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A2") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "A2", "가압펌프1 스위치 정지", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A3") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "A3", "가압펌프2 스위치 기동", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A4") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "A4", "가압펌프2 스위치 정지", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A5") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "A5", "비상발전기 스위치 기동", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "A6") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "A6", "비상발전기 스위치 정지", "FireManager", "current_timestamp"));
- // cyim 2017.01.17 신규 이벤트 추가 (펌프 수동기동)
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "PA") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "PA", "PUMP1 스위치 수동", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "PB") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "PB", "PUMP2 스위치 수동", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "PC") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "PC", "PUMP3 스위치 수동", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "PD") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "PD", "PUMP4 스위치 수동", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "SA") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "SA", "PUMP5 스위치 수동", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "SB") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "SB", "PUMP6 스위치 수동", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "SC") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "SC", "PUMP7 스위치 수동", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "SD") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "SD", "PUMP8 스위치 수동", "FireManager", "current_timestamp"));
- // cyim 2017.02.14 : 강제쿼리
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "O3") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "O3", "화재축적모드설정(30초)", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "O4") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "O4", "화재축적모드설정(40초)", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "O5") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "O5", "화재축적모드설정(50초)", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "O6") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "O6", "화재축적모드설정(60초)", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "AO") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "AO", "화재축적모드설정", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "AF") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "AF", "화재축적모드비설정", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "HM") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "HM", "화재지속모드설정", "FireManager", "current_timestamp"));
- if (Data_Check("TB_EVENT_TYPE", "EVENT_TYPE", "RM") == false)
- _Db.Execute(string.Format("insert into TB_EVENT_TYPE (EVENT_TYPE,EVENT_TYPE_NAME,UPDATE_USER_ID,UPDATE_TIME) values ('{0}','{1}','{2}',{3})",
- "RM", "자동복구모드설정", "FireManager", "current_timestamp"));
- // cyim 2016.12.15 : 프로젝트를 열때 강제 쿼리 (수신반용 테이블)
- // 존재할때 삭제하는 코드는 유보하고, 존재하지 않는 경우에는 테이블 신규 생성
- DataRowCollection DB_TABLE_Check = null;
- DB_TABLE_Check = _Db.ExecuteRead_SqlDataAdapter(_Sql.Table_Exist("TB_USERS"));
- if (DB_TABLE_Check == null || DB_TABLE_Check.Count == 0)
- _Db.Execute(_Sql.Create_TB_USERS());
- DB_TABLE_Check = _Db.ExecuteRead_SqlDataAdapter(_Sql.Table_Exist("TB_PUSH_DEVICE"));
- if (DB_TABLE_Check == null || DB_TABLE_Check.Count == 0)
- _Db.Execute(_Sql.Create_TB_PUSH_DEVICE());
- DB_TABLE_Check = _Db.ExecuteRead_SqlDataAdapter(_Sql.Table_Exist("TB_RECEIVER_ERROR_COUNT"));
- if (DB_TABLE_Check == null || DB_TABLE_Check.Count == 0)
- _Db.Execute(_Sql.Create_TB_RECEIVER_ERROR_COUNT());
- DB_TABLE_Check = _Db.ExecuteRead_SqlDataAdapter(_Sql.Table_Exist("TB_RECEIVER_ERROR_COUNT_DETAILS"));
- if (DB_TABLE_Check == null || DB_TABLE_Check.Count == 0)
- _Db.Execute(_Sql.Create_TB_RECEIVER_ERROR_COUNT_DETAILS());
- int iRetCode = 0;
- try
- {
- // DB에서 수신기 정보를 읽어온다.
- DataRowCollection DB_TABLE_TB_RECEIVER = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_RECEIVER", Receiver_ID));
- if (DB_TABLE_TB_RECEIVER != null && DB_TABLE_TB_RECEIVER.Count != 0) // 데이터가 DB에 있다.
- {
- // DB내의 리시버 데이터를 읽는다.
- DataRow dr = DB_TABLE_TB_RECEIVER[0];
- // DB 데이터를 기준으로 RECEIVER 클래스에 내용을 채운다.
- RECEIVER.ID = dr["RECEIVER_ID"].ToString();
- // cyim 2016.12.02 : 수신기 모델 설정 기능 추가
- RECEIVER.MODEL = Util.NullToStr(dr["MODEL"]);
- if (RECEIVER.MODEL == "")
- {
- // cyim 2016.12.05 : 만약 프로젝트를 열다가 중간에 예외 처리 및 강제 저장 옵션이 발동되었다면 경고 폼 출력
- _Data.Receiver_Model_TempSetting = true;
- RECEIVER.MODEL = DEFAULT_MODEL;
- _Db.Execute(string.Format("update TB_RECEIVER set MODEL='{0}' where RECEIVER_ID={1}", RECEIVER.MODEL, Receiver_ID));
- }
- // 이름
- RECEIVER.KEY_NAME = _Text.UI_TREE_RECEIVER + RECEIVER.ID + " [" + RECEIVER.MODEL + "]";
- RECEIVER.IP = dr["IP_ADDRESS"].ToString();
- RECEIVER.EVENT_PORT = Util.StrToInt(dr["EVENT_PORT_NO"], 0);
- RECEIVER.COMMAND_PORT = Util.StrToInt(dr["COMMAND_PORT_NO"], 0);
- // TB_CONFIG 테이블을 읽는다.
- DataRowCollection DB_TABLE_TB_CONFIG = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_ConfigTable(Util.StrToInt(RECEIVER.ID, 0)));
- if (DB_TABLE_TB_CONFIG != null)
- {
- dr = DB_TABLE_TB_CONFIG[0];
- RECEIVER.FIRE_ACCUMULATION_SECOND = Util.StrToInt(dr["FIRE_ACCUMULATION_TIME"], 0);
- RECEIVER.NAME = dr["BUILDING_NAME"].ToString();
- if (dr["JUMP_FIELD"].ToString() == "Y")
- {
- RECEIVER.JUMP_TO_VIEW = true;
- }
- else
- {
- RECEIVER.JUMP_TO_VIEW = false;
- }
- if (dr["FIRE_PROCESS_MODE"].ToString() == "N")
- {
- RECEIVER.RECOVER_MODE = false;
- }
- else
- {
- RECEIVER.RECOVER_MODE = true;
- }
- if (dr["MASTER_FLAG"].ToString() == "Y")
- {
- RECEIVER.MASTER_FLAG = true;
- }
- else
- {
- RECEIVER.MASTER_FLAG = false;
- }
- }
- // 리턴 코드에 RECEIVER.ID를 넣는다.
- iRetCode = Util.StrToInt(RECEIVER.ID, 0);
- }
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- return iRetCode;
- }
- // DB에서 읽은 값으로 RECEIVER의 서브 포트를 채운다.
- public void Initialize_SubPort_FromDB(string Receiver_ID)
- {
- try
- {
- // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
- DataRowCollection DB_TABLE_TB_RECEIVER = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_RECEIVER", Receiver_ID));
- if (DB_TABLE_TB_RECEIVER != null && DB_TABLE_TB_RECEIVER.Count != 0)
- {
- DataRow dr = DB_TABLE_TB_RECEIVER[0];
- // 통신보드 최대개수
- if (Util.NullToStr(dr["MODEL"]) == "IFC3300")
- RECEIVER.COM_BOARD_MAX_NUM = 64;
- else
- RECEIVER.COM_BOARD_MAX_NUM = 15;
- }
- // 통신 보드 설정 읽기 (TB_COMM)
- DataRowCollection DB_TABLE_TB_COMM = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_COMM", Receiver_ID));
- if (DB_TABLE_TB_COMM != null)
- {
- foreach (DataRow dr in DB_TABLE_TB_COMM)
- {
- COMM_STOPBIT eStopBit = GetStopBits(dr["STOP_BITS"].ToString());
- COMM_PARITY eParity = GetParity(dr["PARITY"].ToString());
- int iComPort = GetComPort(dr["COMM_PORT"].ToString());
- int iBaudRate = Convert.ToInt32(dr["BAUD_RATE"]);
- int iDataBits = Convert.ToInt32(dr["DATA_BITS"]);
- int iID = Convert.ToInt16(dr["COMM_ID"]);
- int iTimeOut = Convert.ToInt16(dr["COMM_TIMEOUT"]);
- int iCommDelay = Convert.ToInt16(dr["COMM_DELAY"]);
- int iDelta_Volt = Convert.ToInt16(dr["DELTA_VOLT"]);
- int iRetryCount = Convert.ToInt16(dr["RETRY_COUNT"]);
- bool bUseFlag = false;
- if (dr["USE_FLAG"].ToString() == "Y")
- {
- bUseFlag = true;
- }
- switch (iID)
- {
- case 1: // Front Loop
- {//case 2: // Back Loop (현재 사용하지 않음.)
- RECEIVER.Port4CommBoard.COMM_ID = iID;
- // 포트 넘버 (COM1, COM2..)
- RECEIVER.Port4CommBoard.PortNo = iComPort;
- // 포트BPS (1200,9600,14400, 38400 ...)
- RECEIVER.Port4CommBoard.BaudRate = iBaudRate;
- // 포트 데이터 비트 설정 (5,6,7,8)
- RECEIVER.Port4CommBoard.DataBits = iDataBits;
- // 포트 스톱비트 설정 (1, 1.5, 2)
- RECEIVER.Port4CommBoard.StopBits = eStopBit;
- // 포트 패리티 설정 (None, Even, Odd)
- RECEIVER.Port4CommBoard.Parity = eParity;
- // 타임아웃 설정
- RECEIVER.Port4CommBoard.TimeOut = iTimeOut;
- // 통신 지연 설정
- RECEIVER.Port4CommBoard.Delay = iCommDelay;
- // 표시용 전압변화값
- RECEIVER.Port4CommBoard.Delta_Volt = iDelta_Volt;
- // 재시도 횟수
- RECEIVER.Port4CommBoard.Retry_Count = iRetryCount;
- // 사용 여부
- RECEIVER.Port4CommBoard.Use_Flag = bUseFlag;
- int temp = 1;
- if (RECEIVER.MODEL == "IFC3300")
- temp = 0;
- // 통신 보드 세팅
- for (int i = temp; i <= RECEIVER.COM_BOARD_MAX_NUM; i++) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- {
- // 클래스 생성
- _COM_BOARD COM_BOARD = new _COM_BOARD();
- // ID
- COM_BOARD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_COM_BOARD_KEY, i));
- // 이름
- COM_BOARD.Set_KEY_NAME(_Text.UI_TREE_COM_BOARD + i.ToString());
- //데이터 읽기
- DataRowCollection DB_TABLE_TB_BOARD = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Board_Table(Util.StrToInt(RECEIVER.ID, 0), iID, i));
- if (DB_TABLE_TB_BOARD != null && DB_TABLE_TB_BOARD.Count != 0)
- {
- DataRow dtr = DB_TABLE_TB_BOARD[0];
- string sUseFlag = dtr["USE_FLAG"].ToString();
- COM_BOARD.Set_Use_Flag(sUseFlag);
- if (sUseFlag == "Y")
- {
- COM_BOARD.Set_CH1_Use(dtr["LOOP0_USE_FLAG"].ToString());
- COM_BOARD.Set_CH2_Use(dtr["LOOP1_USE_FLAG"].ToString());
- COM_BOARD.Set_CH3_Use(dtr["LOOP2_USE_FLAG"].ToString());// cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다
- COM_BOARD.Set_CH4_Use(dtr["LOOP3_USE_FLAG"].ToString());
- }
- else
- {
- COM_BOARD.Set_CH1_Use("N");
- COM_BOARD.Set_CH2_Use("N");
- COM_BOARD.Set_CH3_Use("N");// cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다
- COM_BOARD.Set_CH4_Use("N");
- }
- COM_BOARD.BOARD_ID = Util.StrToInt(dtr["BOARD_ID"].ToString(), 0);
- COM_BOARD.BOARD_NAME = dtr["BOARD_NAME"].ToString();
- }
- else
- {
- COM_BOARD.Set_CH1_Use("N");
- COM_BOARD.Set_CH2_Use("N");
- COM_BOARD.Set_CH3_Use("N");// cyim 2016.09.21 : TB_BOARD 에 루프 0~3 저장 하도록 한다
- COM_BOARD.Set_CH4_Use("N");
- COM_BOARD.Set_Use_Flag("N");
- COM_BOARD.BOARD_ID = i;
- COM_BOARD.BOARD_NAME = String.Format("통신보드 {0}", i);
- }
- // 해쉬 추가
- if (_Hash.Add(RECEIVER.Hash_COM_BOARD, COM_BOARD.ID, COM_BOARD) == true)
- {
- RECEIVER.List_COM_BOARD_ID.Add(COM_BOARD.ID);
- }
- }
- }
- break;
- case 3: // IO Board
- {
- // IO 보드
- RECEIVER.Port4IOBoard.COMM_ID = iID;
- // 포트 넘버 (COM1, COM2..)
- RECEIVER.Port4IOBoard.PortNo = iComPort;
- // 포트BPS (1200,9600,14400, 38400 ...)
- RECEIVER.Port4IOBoard.BaudRate = iBaudRate;
- // 포트 데이터 비트 설정 (5,6,7,8)
- RECEIVER.Port4IOBoard.DataBits = iDataBits;
- // 포트 스톱비트 설정 (1, 1.5, 2)
- RECEIVER.Port4IOBoard.StopBits = eStopBit;
- // 포트 패리티 설정 (None, Even, Odd)
- RECEIVER.Port4IOBoard.Parity = eParity;
- // 타임아웃 설정
- RECEIVER.Port4IOBoard.TimeOut = iTimeOut;
- // 통신 지연 설정
- RECEIVER.Port4IOBoard.Delay = iCommDelay;
- // 표시용 전압변화값
- RECEIVER.Port4IOBoard.Delta_Volt = iDelta_Volt;
- // 재시도 횟수
- RECEIVER.Port4IOBoard.Retry_Count = iRetryCount;
- // 사용 여부
- RECEIVER.Port4IOBoard.Use_Flag = bUseFlag;
- int temp = 1;
- if (RECEIVER.MODEL == "IFC3300")
- temp = 0;
- // IO 보드 세팅
- for (int i = temp; i <= RECEIVER.IO_BOARD_MAX_NUM; i++) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- {
- // 클래스 생성
- _IO_BOARD IO_BOARD = new _IO_BOARD();
- // ID
- IO_BOARD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_IO_BOARD_KEY, i));
- // 이름
- IO_BOARD.Set_KEY_NAME(_Text.UI_TREE_IO_BOARD + i.ToString());// 클래스 생성
- //데이터 읽기
- DataRowCollection DB_TABLE_TB_BOARD = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Board_Table(Util.StrToInt(RECEIVER.ID, 0), iID, i));
- if (DB_TABLE_TB_BOARD != null && DB_TABLE_TB_BOARD.Count != 0)
- {
- DataRow dtr = DB_TABLE_TB_BOARD[0];
- IO_BOARD.Set_Use_Flag(dtr["USE_FLAG"].ToString());
- IO_BOARD.BOARD_ID = Util.StrToInt(dtr["BOARD_ID"].ToString(), 0);
- IO_BOARD.BOARD_NAME = dtr["BOARD_NAME"].ToString();
- }
- else
- {
- IO_BOARD.Set_Use_Flag("N");
- IO_BOARD.BOARD_ID = i;
- IO_BOARD.BOARD_NAME = String.Format("I/O 보드 {0}", i);
- }
- // 해쉬 추가
- if (_Hash.Add(RECEIVER.Hash_IO_BOARD, IO_BOARD.ID, IO_BOARD) == true)
- {
- RECEIVER.List_IO_BOARD_ID.Add(IO_BOARD.ID);
- }
- }
- }
- break;
- case 4: // KeyPAD
- RECEIVER.Port4KeyPAD.COMM_ID = iID;
- // 포트 넘버 (COM1, COM2..)
- RECEIVER.Port4KeyPAD.PortNo = iComPort;
- // 포트BPS (1200,9600,14400, 38400 ...)
- RECEIVER.Port4KeyPAD.BaudRate = iBaudRate;
- // 포트 데이터 비트 설정 (5,6,7,8)
- RECEIVER.Port4KeyPAD.DataBits = iDataBits;
- // 포트 스톱비트 설정 (1, 1.5, 2)
- RECEIVER.Port4KeyPAD.StopBits = eStopBit;
- // 포트 패리티 설정 (None, Even, Odd)
- RECEIVER.Port4KeyPAD.Parity = eParity;
- // 타임아웃 설정
- RECEIVER.Port4KeyPAD.TimeOut = iTimeOut;
- // 통신 지연 설정
- RECEIVER.Port4KeyPAD.Delay = iCommDelay;
- // 표시용 전압변화값
- RECEIVER.Port4KeyPAD.Delta_Volt = iDelta_Volt;
- // 재시도 횟수
- RECEIVER.Port4KeyPAD.Retry_Count = iRetryCount;
- // 사용 여부
- RECEIVER.Port4KeyPAD.Use_Flag = bUseFlag;
- _KEYPAD KEYPAD = new _KEYPAD();
- // ID
- KEYPAD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_KEYPAD_KEY, 1));
- // 이름
- KEYPAD.Set_KEY_NAME(_Text.UI_TREE_KEYPAD); // 오직 하나뿐
- //데이터 읽기
- DataRowCollection DB_TABLE_TB_BOARD_KEYPAD = _Db.ExecuteRead_SqlDataAdapter(_Sql.Search_Board_Table(Util.StrToInt(RECEIVER.ID, 0), iID, 0));
- if (DB_TABLE_TB_BOARD_KEYPAD != null && DB_TABLE_TB_BOARD_KEYPAD.Count != 0) // DB가 데이터에 있는 경우..
- { // 데이터로 KEYPAD 클래스의 프로퍼티를 채운다.
- DataRow dtr = DB_TABLE_TB_BOARD_KEYPAD[0];
- KEYPAD.Set_Use_Flag(dtr["USE_FLAG"].ToString());
- KEYPAD.BOARD_ID = Util.StrToInt(dtr["BOARD_ID"].ToString(), 0);
- KEYPAD.BOARD_NAME = dtr["BOARD_NAME"].ToString();
- }
- else // DB에 데이터가 없는 경우..
- { // 디폴트값으로 KEYPAD 클래스의 프로퍼티를 채우자.
- KEYPAD.Set_Use_Flag("N"); // 사용 안함으로 세팅한다.
- KEYPAD.BOARD_ID = 0;
- KEYPAD.BOARD_NAME = "키패드";
- }
- RECEIVER.KEYPAD = KEYPAD;
- break;
- case 5: // BroadCast (비상방송)
- RECEIVER.Port4EmergencyBroadcast.COMM_ID = iID;
- // 포트 넘버 (COM1, COM2..)
- RECEIVER.Port4EmergencyBroadcast.PortNo = iComPort;
- // 포트BPS (1200,9600,14400, 38400 ...)
- RECEIVER.Port4EmergencyBroadcast.BaudRate = iBaudRate;
- // 포트 데이터 비트 설정 (5,6,7,8)
- RECEIVER.Port4EmergencyBroadcast.DataBits = iDataBits;
- // 포트 스톱비트 설정 (1, 1.5, 2)
- RECEIVER.Port4EmergencyBroadcast.StopBits = eStopBit;
- // 포트 패리티 설정 (None, Even, Odd)
- RECEIVER.Port4EmergencyBroadcast.Parity = eParity;
- // 타임아웃 설정
- RECEIVER.Port4EmergencyBroadcast.TimeOut = iTimeOut;
- // 통신 지연 설정
- RECEIVER.Port4EmergencyBroadcast.Delay = iCommDelay;
- // 표시용 전압변화값
- RECEIVER.Port4EmergencyBroadcast.Delta_Volt = iDelta_Volt;
- // 재시도 횟수
- RECEIVER.Port4EmergencyBroadcast.Retry_Count = iRetryCount;
- // 사용 여부
- RECEIVER.Port4EmergencyBroadcast.Use_Flag = bUseFlag;
- _EMERGENCY_BROADCAST EMERGENCY_BROADCAST = new _EMERGENCY_BROADCAST();
- // ID
- EMERGENCY_BROADCAST.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_EMERGENCY_BROADCAST_KEY, 1));
- // 이름
- EMERGENCY_BROADCAST.Set_KEY_NAME(_Text.UI_TREE_EMERGENCY_BROADCAST); // 오직 하나뿐
- RECEIVER.EMERGENCY_BROADCAST = EMERGENCY_BROADCAST;
- break;
- }
- }
- }
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- // RECEIVER의 서브 포트를 디폴트값으로 채운다.
- public void Initialize_SubPort()
- {
- // 통신 보드와 메인보드가 통신하기 위한 통신보드용 Serial 포트 설정. (메인보드)
- RECEIVER.Port4CommBoard.COMM_ID = 1;
- // 포트 넘버 (COM1, COM2..)
- RECEIVER.Port4CommBoard.PortNo = 1;
- // 포트BPS (1200,9600,14400, 38400 ...)
- RECEIVER.Port4CommBoard.BaudRate = 115200;
- // 포트 데이터 비트 설정 (5,6,7,8)
- RECEIVER.Port4CommBoard.DataBits = 8;
- // 포트 스톱비트 설정 (1, 1.5, 2)
- RECEIVER.Port4CommBoard.StopBits = COMM_STOPBIT.ONESTOPBIT;
- // 포트 패리티 설정 (None, Even, Odd)
- RECEIVER.Port4CommBoard.Parity = COMM_PARITY.NONE;
- // 타임아웃 설정
- RECEIVER.Port4CommBoard.TimeOut = _COMM_TIMEOUT;
- // 통신 지연 설정
- RECEIVER.Port4CommBoard.Delay = _COMM_DELAY;
- // 표시용 전압변화값
- RECEIVER.Port4CommBoard.Delta_Volt = _DELTA_VOLT;
- // 재시도 횟수
- RECEIVER.Port4CommBoard.Retry_Count = _RETRY_COUNT;
- // 사용 여부
- RECEIVER.Port4CommBoard.Use_Flag = true;
- int temp = 1;
- if (RECEIVER.MODEL == "IFC3300")
- temp = 0;
- for (int i = temp; i <= RECEIVER.COM_BOARD_MAX_NUM; i++) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- {
- // 클래스 생성
- _COM_BOARD COM_BOARD = new _COM_BOARD();
- // ID
- COM_BOARD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_COM_BOARD_KEY, i));
- // 이름
- COM_BOARD.Set_KEY_NAME(_Text.UI_TREE_COM_BOARD + i.ToString());
- // cyim 2016.12.05 : 수신기 모델별 내부 로직 변경
- DataRowCollection DB_TABLE_TB_RECEIVER = _Db.ExecuteRead_SqlDataAdapter(_Sql.SearchAll_Table_Value("TB_RECEIVER", RECEIVER.ID));
- if (DB_TABLE_TB_RECEIVER != null && DB_TABLE_TB_RECEIVER.Count != 0)
- {
- DataRow dr = DB_TABLE_TB_RECEIVER[0];
- if (Util.NullToStr(dr["MODEL"]) == "IFC3300")
- {
- if (i == 0)
- {
- COM_BOARD.Set_Use_Flag("Y");
- COM_BOARD.Set_CH1_Use("Y");
- COM_BOARD.Set_CH2_Use("N");
- COM_BOARD.Set_CH3_Use("N");
- COM_BOARD.Set_CH4_Use("N");
- }
- else
- {
- COM_BOARD.Set_Use_Flag("N");
- COM_BOARD.Set_CH1_Use("N");
- COM_BOARD.Set_CH2_Use("N");
- COM_BOARD.Set_CH3_Use("N");
- COM_BOARD.Set_CH4_Use("N");
- }
- }
- else
- {
- if (i == 15)
- {
- COM_BOARD.Set_CH1_Use("Y");
- COM_BOARD.Set_CH2_Use("N");
- COM_BOARD.Set_Use_Flag("Y");
- }
- else
- {
- COM_BOARD.Set_CH1_Use("N");
- COM_BOARD.Set_CH2_Use("N");
- COM_BOARD.Set_Use_Flag("N");
- }
- }
- }
- COM_BOARD.BOARD_ID = i;
- COM_BOARD.BOARD_NAME = String.Format("통신보드 {0}", i);
- // 해쉬 추가
- if (_Hash.Add(RECEIVER.Hash_COM_BOARD, COM_BOARD.ID, COM_BOARD) == true)
- {
- RECEIVER.List_COM_BOARD_ID.Add(COM_BOARD.ID);
- }
- }
- // IO 보드
- RECEIVER.Port4IOBoard.COMM_ID = 3;
- // 포트 넘버 (COM1, COM2..)
- RECEIVER.Port4IOBoard.PortNo = 3;
- // 포트BPS (1200,9600,14400, 38400 ...)
- RECEIVER.Port4IOBoard.BaudRate = 115200;
- // 포트 데이터 비트 설정 (5,6,7,8)
- RECEIVER.Port4IOBoard.DataBits = 8;
- // 포트 스톱비트 설정 (1, 1.5, 2)
- RECEIVER.Port4IOBoard.StopBits = COMM_STOPBIT.ONESTOPBIT;
- // 포트 패리티 설정 (None, Even, Odd)
- RECEIVER.Port4IOBoard.Parity = COMM_PARITY.NONE;
- // 타임아웃 설정
- RECEIVER.Port4IOBoard.TimeOut = _COMM_TIMEOUT;
- // 통신 지연 설정
- RECEIVER.Port4IOBoard.Delay = _COMM_DELAY;
- // 표시용 전압변화값
- RECEIVER.Port4IOBoard.Delta_Volt = _DELTA_VOLT;
- // 재시도 횟수
- RECEIVER.Port4IOBoard.Retry_Count = _RETRY_COUNT;
- // 사용 여부
- RECEIVER.Port4IOBoard.Use_Flag = true;
- int tmp = 1;
- if (RECEIVER.MODEL == "IFC3300")
- tmp = 0;
- for (int i = tmp; i <= RECEIVER.IO_BOARD_MAX_NUM; i++) // cyim 2017.02.02 : IFC3300 에서는 통신보드, IO 보드 아이디가 0번이 존재한다
- {
- // 클래스 생성
- _IO_BOARD IO_BOARD = new _IO_BOARD();
- // ID
- IO_BOARD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_IO_BOARD_KEY, i));
- // 이름
- IO_BOARD.Set_KEY_NAME(_Text.UI_TREE_IO_BOARD + i.ToString());
- if (i == 15)
- {
- IO_BOARD.Set_Use_Flag("Y");
- }
- else
- {
- IO_BOARD.Set_Use_Flag("N");
- }
- IO_BOARD.BOARD_ID = i;
- IO_BOARD.BOARD_NAME = String.Format("I/O 보드 {0}", i);
- // 해쉬 추가
- if (_Hash.Add(RECEIVER.Hash_IO_BOARD, IO_BOARD.ID, IO_BOARD) == true)
- {
- RECEIVER.List_IO_BOARD_ID.Add(IO_BOARD.ID);
- }
- }
- // 키패드
- RECEIVER.Port4KeyPAD.COMM_ID = 4;
- // 포트 넘버 (COM1, COM2..)
- RECEIVER.Port4KeyPAD.PortNo = 5; // cyim 기본값 변경 비상방송은 4->5
- // 포트BPS (1200,9600,14400, 38400 ...)
- RECEIVER.Port4KeyPAD.BaudRate = 115200;
- // 포트 데이터 비트 설정 (5,6,7,8)
- RECEIVER.Port4KeyPAD.DataBits = 8;
- // 포트 스톱비트 설정 (1, 1.5, 2)
- RECEIVER.Port4KeyPAD.StopBits = COMM_STOPBIT.ONESTOPBIT;
- // 포트 패리티 설정 (None, Even, Odd)
- RECEIVER.Port4KeyPAD.Parity = COMM_PARITY.NONE;
- // 타임아웃 설정
- RECEIVER.Port4KeyPAD.TimeOut = _COMM_TIMEOUT;
- // 통신 지연 설정
- RECEIVER.Port4KeyPAD.Delay = _COMM_DELAY;
- // 표시용 전압변화값
- RECEIVER.Port4KeyPAD.Delta_Volt = _DELTA_VOLT;
- // 재시도 횟수
- RECEIVER.Port4KeyPAD.Retry_Count = _RETRY_COUNT;
- // 사용 여부
- RECEIVER.Port4KeyPAD.Use_Flag = true;
- _KEYPAD KEYPAD = new _KEYPAD();
- // ID
- KEYPAD.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_KEYPAD_KEY, 1));
- // 이름
- KEYPAD.Set_KEY_NAME(_Text.UI_TREE_KEYPAD); // 오직 하나뿐
- KEYPAD.Set_Use_Flag("Y"); // 사용 안함으로 세팅한다. // 재수정 2012.8.29
- KEYPAD.BOARD_ID = 0;
- KEYPAD.BOARD_NAME = "키패드";
- RECEIVER.KEYPAD = KEYPAD;
- // 비상방송
- RECEIVER.Port4EmergencyBroadcast.COMM_ID = 5;
- // 포트 넘버 (COM1, COM2..)
- RECEIVER.Port4EmergencyBroadcast.PortNo = 4; // cyim 기본값 변경 비상방송은 5->4,
- // 포트BPS (1200,9600,14400, 38400 ...)
- RECEIVER.Port4EmergencyBroadcast.BaudRate = 9600;
- // 포트 데이터 비트 설정 (5,6,7,8)
- RECEIVER.Port4EmergencyBroadcast.DataBits = 8;
- // 포트 스톱비트 설정 (1, 1.5, 2)
- RECEIVER.Port4EmergencyBroadcast.StopBits = COMM_STOPBIT.ONESTOPBIT;
- // 포트 패리티 설정 (None, Even, Odd)
- RECEIVER.Port4EmergencyBroadcast.Parity = COMM_PARITY.NONE;
- // 타임아웃 설정
- RECEIVER.Port4EmergencyBroadcast.TimeOut = _COMM_TIMEOUT;
- // 통신 지연 설정
- RECEIVER.Port4EmergencyBroadcast.Delay = _COMM_DELAY;
- // 표시용 전압변화값
- RECEIVER.Port4EmergencyBroadcast.Delta_Volt = _DELTA_VOLT;
- // 재시도 횟수
- RECEIVER.Port4EmergencyBroadcast.Retry_Count = _RETRY_COUNT;
- // 사용 여부
- RECEIVER.Port4EmergencyBroadcast.Use_Flag = true;
- _EMERGENCY_BROADCAST EMERGENCY_BROADCAST = new _EMERGENCY_BROADCAST();
- // ID
- EMERGENCY_BROADCAST.ID = RECEIVER.Set_SubKey(RECEIVER, string.Format(_Text.UI_TREE_EMERGENCY_BROADCAST_KEY, 1));
- // 이름
- EMERGENCY_BROADCAST.Set_KEY_NAME(_Text.UI_TREE_EMERGENCY_BROADCAST); // 오직 하나뿐
- // 포트 넘버 (COM1, COM2..)
- RECEIVER.EMERGENCY_BROADCAST = EMERGENCY_BROADCAST;
- }
- private void uiButton_cancel_Click(object sender, EventArgs e)
- {
- // 신규 추가 시에만
- if (EditMode == false)
- {
- // 데이타베이스 경로 초기화
- _Data.DB_FullPath = null;
- // 프로세스 삭제
- System.Diagnostics.Process[] mProcess = System.Diagnostics.Process.GetProcessesByName("fbserver");
- foreach (System.Diagnostics.Process p in mProcess)
- p.Kill();
- System.Threading.Thread.Sleep(1000);
- // 수신기 폴더 삭제
- string ReiceiverFolderName = _Text.DEFAULT_FOLDER_RECEIVER_PREFIX + RECEIVER.ID;
- _File.Delete_Folder(_Data.Project_Path, _Data.Project_Name + "\\" + ReiceiverFolderName);
- }
- Close();
- }
- }
- }
|