123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Windows.Forms;
- using System.Diagnostics;
- using System.Data;
- using System.Threading;
- using System.Collections;
- using System.Text.RegularExpressions;
- namespace FPER
- {
- public class SocketUI
- {
- //// 크로스 스레드 작업을 위함
- private MDIParent main;
- //연결정보 표시 LABEL
- public Label myCntLabel; // cyim 2015.7.31 비상방송 및 통신데몬도 점검으로 표시함
- LogFileCreate LFC = new LogFileCreate();
- //소켓연결정보
- private String serverIP;
- private int commandPort;
- private int eventPort;
- private Tprotocol Tp; //통신프로토콜(김상덕씨)
- private CmdInfo cmd; //명령정보
- //private EventLogInfo[] eventLogMsgs; //받은 이벤트로그메세지
- //재연결횟수
- private int reConnectCount = 0;
- private Boolean gCommResponseReading = false; //응답명령 기다리는중...
- bool FR_ONOFF = false;
- //현재 나의 수신기 ID
- private int myReceiverID = -1;
- //public int myReceiverID { get { return this.myReceiverID; } }
- public bool Connected { get { return Tp.cmd_Connected && Tp.event_Connected; } } //데몬연결상태
- public bool CommResponseReading { get { return this.gCommResponseReading; } }
- //수신기 - 통신보드 - 중계기 - 회로 설정값--------중요$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- private ReceiverTypeInfo myReceiverTypeInfo;
- public ReceiverTypeInfo MyReceiverTypeInfo { get { return this.myReceiverTypeInfo; } }
- public bool bPowerStatus = true;
- public bool bEmergencyPowerStatus = true;
- public bool bReceivePowerStatus = false;
- public DataTable m_DataTable = null; // sdkim, 20110406, Event_Type Table Data Pre Load
- //public void EventLogDel(String eventId)
- //{
- // if (arrayListLog != null)
- // {
- // int eventLogCnt = arrayListLog.Count;
- // for (int i = 0; i < eventLogCnt; i++)
- // {
- // EventLogInfo eventLogMsg = (EventLogInfo)arrayListLog[i];
- // if (eventLogMsg.EventId.Equals(eventId))
- // {
- // arrayListLog.RemoveAt(i);
- // }
- // }
- // }
- //}
- //public enum Protocol
- //{
- // Sys, Start, End, RepeaterInfo, ReceiverInfo,
- // LoopInfo, DeviceInfo
- //}
- //통신을위한 기본정보 생성 --------------------------------생성자
- public SocketUI(MDIParent main, int receiverID, Label cnt, string DB_IP) // cyim 2015.7.29 수신반 루틴을 위해 외부 파라미터로 동작하도록 수정
- {
- try
- {
- //mdiParent 저장
- this.main = main;
- //데몬통신상태 보여주는 label저장
- this.myCntLabel = cnt;
- //수신기ID 저장
- this.myReceiverID = receiverID;
- // cyim 2016.12.06 : 강제쿼리 - 추가로 필요한 데이타베이스 정리
- main.ExternalInitial.Setup(this.myReceiverID);
- // cyim 2016.12.06 : 수신기 모델 변수 추가
- main.ReceiverModel = main.ExternalInitial.Data_Get("TB_RECEIVER", "MODEL", this.myReceiverID);
- if (main.ReceiverModel == null) throw new Exception("수신기 모델 정보를 읽을수 없습니다");
- /**************************************************************************/
- // 수신기데몬 접속정보 읽어오기 //
- /**************************************************************************/
- DacReceiverConfig dacReceiverConfig = new DacReceiverConfig(this.myReceiverID); // cyim 2015.7.30 데이타베이스 접속 루틴 변경
- DataTable dt = dacReceiverConfig.Receiver_Select(receiverID.ToString(), "Y");
- if (m_DataTable == null)
- {
- // cyim 2013.8.8 이벤트 타입명 해쉬테이블 변환 및 데이타테이블 변환
- main.EventTypeName.Create_HASH_EVENT_TABLE(this.myReceiverID); // cyim 2015.7.30 데이타베이스 접속 루틴 변경 // cyim 2015.8.4 수신반을 위한 static 클래스 정리
- // cyim 2013.8.13 TB_EVENT_TYPE 생성 DB 우선순위 변경 : 하위 루틴은 의미없음
- DacUIProcess dacUIProcess = new DacUIProcess(this.myReceiverID); // cyim 2015.7.30 데이타베이스 접속 루틴 변경
- m_DataTable = dacUIProcess.Event_Type_Table_Select(null, main); // sdkim, 20110406, Event_Type Table Data Pre Load // cyim 2015.8.4 수신반을 위한 static 클래스 정리
- }
- if (dt.Rows.Count > 0)
- {
- DataRow dr = dt.Rows[0];
- //
- // cyim 2015.7.29 수신반 루틴을 위해 외부 파라미터로 동작하도록 수정
- //
- this.serverIP = DB_IP;
- //if (dr["IP_ADDRESS"].ToString() == "127.0.0.1")
- //{
- // //Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\I_FPER_COMM_DAEMON", false);
- // //string DATABASE_NAME = rk.GetValue("DATABASE_NAME").ToString();
- // //this.serverIP = DATABASE_NAME.Substring(0, DATABASE_NAME.IndexOf(":"));//dr["IP_ADDRESS"].ToString();
- //}
- //else
- //{
- // this.serverIP = dr["IP_ADDRESS"].ToString();
- //}
- this.eventPort = int.Parse(dr["EVENT_PORT_NO"].ToString());
- this.commandPort = int.Parse(dr["COMMAND_PORT_NO"].ToString());
- String USE_FLAG = dr["USE_FLAG"].ToString();
- if (USE_FLAG.Equals("N")) throw new Exception("현재 수신기데몬 접속정보는 사용불가하도록 설정되어 있습니다.");
- }
- else
- {
- throw new Exception("IP,Port 정보 읽기 불가! 수신기데몬 접속정보를 읽을수 없습니다.");
- }
- /**************************************************************************/
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //throw ex;
- }
- }
- //통신을위한 기본정보 생성 --------------------------------생성자
- public void SocketConfigRead()
- {
- try
- {
- /**************************************************************************/
- // 수신기데몬 접속정보 읽어오기 //
- /**************************************************************************/
- DacReceiverConfig dacReceiverConfig = new DacReceiverConfig(this.myReceiverID);
- DataTable dt = dacReceiverConfig.Receiver_Select(this.myReceiverID.ToString(), "Y");
- if (dt.Rows.Count > 0)
- {
- DataRow dr = dt.Rows[0];
- if (dr["IP_ADDRESS"].ToString() == "127.0.0.1")
- {
- Microsoft.Win32.RegistryKey rk = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\I_FPER_COMM_DAEMON", false);
- string DATABASE_NAME = rk.GetValue("DATABASE_NAME").ToString();
- this.serverIP = DATABASE_NAME.Substring(0, DATABASE_NAME.IndexOf(":"));//dr["IP_ADDRESS"].ToString();
- }
- else
- {
- this.serverIP = dr["IP_ADDRESS"].ToString();
- }
- this.eventPort = int.Parse(dr["EVENT_PORT_NO"].ToString());
- this.commandPort = int.Parse(dr["COMMAND_PORT_NO"].ToString());
- String USE_FLAG = dr["USE_FLAG"].ToString();
- if (USE_FLAG.Equals("N")) throw new Exception("현재 수신기데몬 접속정보는 사용불가하도록 설정되어 있습니다.");
- }
- else
- {
- throw new Exception("IP,Port 정보 읽기 불가! 수신기데몬 접속정보를 읽을수 없습니다.");
- }
- /**************************************************************************/
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //throw ex;
- }
- }
- /**************************************************************************/
- // DB에서 설정정보를 읽는다.. //
- /**************************************************************************/
- public void ReceiverDBRead()
- {
- try
- {
- //수신기설정 및 차단카운트 읽기
- ReceiverPointConfigRead();
- //차단카운트읽기
- //ReceiverCutRead();
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //throw ex;
- }
- }
- /**************************************************************************/
- //수신기 설정정보 CLASS 생성 - DB에서 설정정보를 읽어와 저장한다..
- public void ReceiverPointConfigRead()
- {
- try
- {
- //수신기 설정정보 CLASS 생성 - DB에서 설정정보를 읽어와 저장한다..
- UIReceiverInfo cfg = new UIReceiverInfo(this.myReceiverID);
- this.myReceiverTypeInfo = cfg.ReadAll_ReceiverTypeInfo(main);
- // 차단 카운트 읽기
- ArrayList ary = cfg.Array_ReceiverCut(this.myReceiverTypeInfo);
- main.Display_CutCnt(ary.Count);
- // cyim 2013.9.26 중계기차단 보완 : 화면에 정리된 리스트를 출력하기 위하여 전역으로 저장함
- // 차단의 경우 결국 속도가 오래걸린다. 또한 여기에서 정보가 다시 재저장되므로 이 정보를 이용하여 MDIParent.cs 에서 차단을 클릭하면 새로운 폼에서
- // 리스트의 정보를 출력하도록 유도한다
- // 표시될 정보는 예시는 아래와 같다
- // 날짜 - 통신보드[1] LOOP0 중계기[11] 회로[1] 타입[I] 차단
- // 날짜 - 통신보드[3] LOOP0 중계기[12] 차단
- // 리스트 갱신
- main.Popup.Form_Popup_CutInfo_List = (ArrayList)ary.Clone(); // cyim 2015.8.4 수신반을 위한 static 클래스 정리
- main.Event.CutInfoPopup_Update_Inform_Write(); // cyim 2015.8.4 수신반을 위한 static 클래스 정리
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //throw ex;
- //MessageBox.Show(ex.Message,Application.ProductName);
- }
- }
- /*
- //차단카운트 읽기
- public void ReceiverCutRead()
- {
- try
- {
- //차단카운트 읽기
- UIReceiverInfo cfg = new UIReceiverInfo(this.myReceiverID);
- //int cut_cnt = cfg.Count_ReceiverCut(this.myReceiverTypeInfo);
- ArrayList ary = cfg.Array_ReceiverCut(this.myReceiverTypeInfo);
- main.Display_CutCnt(ary.Count);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex,0,0);
- //throw ex;
- }
- }
- */
- /**************************************************************************/
- // 수신기 설정 RESET //
- /**************************************************************************/
- public void ReceiverDemonReset()
- {
- try
- {
- //설정정보 RESET 명령생성 및 실행
- CmdInfo cmd = new CmdInfo(prt_cmd_define.notify_db_update, this.myReceiverID);
- runCommand(cmd);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- // MessageBox.Show(string.Format("[{0}]\r\n{1}",ex.Message,ex.StackTrace),Application.ProductName);
- //throw ex;
- }
- }
- /**************************************************************************/
- //이벤트 읽기 명령--3차
- public void Event_Read(CmdInfo com_info)
- {
- try
- {
- CmdInfo cmd2 = new CmdInfo(prt_cmd_define.read_command_status, this.myReceiverID);
- cmd2.CommandType = "ES";
- cmd2.ApplyRange = "A";
- LFC.Log("타입: Commd 요청, 메세지: 이벤트 정보");
- runCommand(cmd2);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- //전압 읽기 명령--2차
- public void Voltage_ReadStep2(CmdInfo com_info)
- {
- try
- {
- CmdInfo cmd2 = new CmdInfo(prt_cmd_define.read_command_status, this.myReceiverID);
- cmd2.CommandType = "CV";
- dCommandResponse d = new dCommandResponse(Event_Read); //응답후 이벤트 읽기 명령으로 이동
- cmd2.dEvent = d;
- LFC.Log("타입: Commd 요청, 메세지: 전압");
- runCommand(cmd2);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- //전압 읽기 명령
- public void Voltage_Read(CmdInfo com_info)
- {
- try
- {
- CmdInfo cmd2 = new CmdInfo(prt_cmd_define.read_command_status, this.myReceiverID);
- cmd2.CommandType = "CV";
- LFC.Log("타입: Commd 요청, 메세지: 전압");
- runCommand(cmd2);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- //카운트 읽기 명령--1차
- public void CountReadStart()
- {
- try
- {
- //누적카운트읽기 명령
- CmdInfo cmd = new CmdInfo(prt_cmd_define.read_command_status, this.myReceiverID);
- cmd.CommandType = "CC";
- dCommandResponse d = new dCommandResponse(Voltage_ReadStep2); //응답후 전압읽기 명령으로 이동
- cmd.dEvent = d;
- LFC.Log("타입: Commd 요청, 메세지: 누적카운터");
- runCommand(cmd);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //throw ex;
- }
- }
- public void CountRead()
- {
- try
- {
- CmdInfo cmd = new CmdInfo(prt_cmd_define.read_command_status, this.myReceiverID);
- cmd.CommandType = "CC"; //누적카운트읽기 명령
- LFC.Log("타입: Commd 요청, 메세지: 누적카운터 요청");
- runCommand(cmd);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- public void IO15Data(CmdInfo cmd)
- {
- // cyim 2015.7.23 MTB 보드가 없는 경우 예비전원테스트 화면에서 테스트 버튼 누르면 오류 발생
- if (cmd.ResponseData.GetType().Name == "RCVData_NACK")
- {
- main.Battery_TestError = true; // cyim 2015.8.4 수신반을 위한 static 클래스 정리
- main.AC_TestError = true; // cyim 2015.8.4 수신반을 위한 static 클래스 정리
- }
- // cyim 2016.03.21 배터리 테스트 버튼을 눌렀을때 늦게 전원정보가 오는 경우가 발생한다
- else if (cmd.ResponseData.GetType().Name == "RCVData_ReadCommandStatus")
- {
- ;
- }
- else
- {
- RCVData_ReadIOBoardData resData = (RCVData_ReadIOBoardData)cmd.ResponseData;
- bPowerStatus = resData.input[2];
- bEmergencyPowerStatus = resData.input[3];
- bReceivePowerStatus = true;
- }
- }
- public void ReadIO15Input()
- {
- bool ret;
- bReceivePowerStatus = false;
- dCommandResponse d = new dCommandResponse(IO15Data);
- if (main.ReceiverModel == "IFC3300")
- {
- CmdInfo commandinfo = new CmdInfo(prt_cmd_define.read_ioboard_data, myReceiverID, 3, 0, 0, d);
- LFC.Log("타입: Commd 요청, 메세지: 배터리 테스트 요청");
- ret = runCommand(commandinfo); ;
- }
- else
- {
- CmdInfo commandinfo = new CmdInfo(prt_cmd_define.read_ioboard_data, myReceiverID, 3, 0, 15, d);
- LFC.Log("타입: Commd 요청, 메세지: 배터리 테스트 요청");
- ret = runCommand(commandinfo); ;
- }
- }
- //타임아웃 스레드를 시작한다.
- private void WaitStart()
- {
- try
- {
- AutoResetEvent autoEvent = new AutoResetEvent(false);
- ThreadPool.QueueUserWorkItem(new WaitCallback(WorkMethod), autoEvent);
- autoEvent.WaitOne(new TimeSpan(0, 0, 5), false);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- private void WaitStart_onesecond()
- {
- try
- {
- AutoResetEvent autoEvent = new AutoResetEvent(false);
- ThreadPool.QueueUserWorkItem(new WaitCallback(WorkMethod), autoEvent);
- autoEvent.WaitOne(new TimeSpan(0, 0, 1), false);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- //타임아웃이 발생되면 실행되는 이벤트
- void WorkMethod(object stateInfo)
- {
- try
- {
- //명령을 내렸으나 응답을 받지못하였다면 강제로 delegate로 보내준다..
- if (this.cmd != null && !this.cmd.Response && !this.cmd.ErrResponse)
- //if (this.cmd != null && !this.cmd.Response)
- {
- this.cmd.Response = true;
- Delegate de = this.cmd.dEvent;
- CmdInfo cd = this.cmd;
- //this.cmd = null;
- if (de == null) return;
- //ServiceStop();
- //ServiceStart();
- // TP 상태 확인하고.. null 아니면 dispose했다가 다시 시작해보자..
- if (Tp != null)
- {
- Tp = null;
- //Debug.WriteLine(" +++++++ Tp에 NULL 세팅 +++++++++++++");
- };
- Tp = new Tprotocol(main);
- int connect = Tp.ConnectToDemon(serverIP, commandPort, eventPort, this.myReceiverID);
- main.Invoke(de, cd);
- }
- ((AutoResetEvent)stateInfo).Set();
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //throw ex;
- }
- }
- //tprotocol시작
- public void ServiceStart()
- {
- // cyim 2015.2.9 데몬 연결 상태 체크
- bool temp_CommDaemon_ComStatus = main.CommDaemon_ComStatus;
- try
- {
- //Util.UDebugMessage("ServiceStart() : 데몬연결을 시도합니다..............",0,0);
- if (Tp != null)
- {
- Tp = null;
- //Debug.WriteLine(" +++++++ Tp에 NULL 세팅 +++++++++++++");
- }
- Tp = new Tprotocol(main);
- int connect = Tp.ConnectToDemon(serverIP, commandPort, eventPort, this.myReceiverID);
- if (connect < 1)
- {
- throw new Exception(string.Format("데몬연결을 할 수 없습니다.. 접속정보를 확인하십시요. {0}:{1},{2}", serverIP, commandPort, eventPort));
- //MessageBox.Show("데몬연결을 할 수 없습니다.. 접속정보를 확인하십시요.", Application.ProductName);
- }
- // cyim 2015.2.9 데몬 연결 상태 체크
- if (Tp == null || !Tp.cmd_Connected || !Tp.event_Connected)
- {
- throw new Exception(string.Format("데몬연결을 할 수 없습니다.. 접속정보를 확인하십시요. {0}:{1},{2}", serverIP, commandPort, eventPort));
- //MessageBox.Show("데몬연결을 할 수 없습니다.. 접속정보를 확인하십시요.", Application.ProductName);
- }
- //main.CommandLog(MappingStatus.CommConnectNormal, "데몬연결이 정상으로 복귀되었습니다!}");
- ////sdkim 카운터 먼지 읽지 않도록 수정 // 이슈번호 #0000017
- // 재수정 csw //12.07.14
- this.CountReadStart(); //차단설정 카운트 표시
- //this.Voltage_ReadStep2(null);
- main.CommDaemon_ComStatus = true; // cyim 2015.2.9 시작시에 데몬이 연결되었는지 확인하고 문구를 결정
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //throw ex;
- //throw new Exception(string.Format("데몬연결을 할 수 없습니다.. 접속정보를 확인하십시요. {0}:{1},{2}", serverIP, commandPort, eventPort));
- // MessageBox.Show(string.Format("[{0}]\r\n{1}",ex.Message,ex.StackTrace),Application.ProductName);
- main.CommDaemon_ComStatus = false; // cyim 2015.2.9 시작시에 데몬이 연결되었는지 확인하고 문구를 결정
- }
- // cyim 2015.2.9 데몬 연결 상태 체크
- finally
- {
- // 이전의 통신데몬 통신상태와 비교
- if (main.CommDaemon_ComStatus != temp_CommDaemon_ComStatus)
- {
- // 기존에 성공이였다가 갑자기 연결 실패인 경우
- if (main.CommDaemon_ComStatus == false)
- main.CommandLog(MappingStatus.CommConnectError, string.Format("통신데몬 연결 실패"));
- // 기존에 실패였다가 갑자기 연결 성공인 경우
- else
- main.CommandLog(MappingStatus.CommConnectNormal, string.Format("통신데몬 연결 정상"));
- }
- }
- }
- //tprotocol종료
- public void ServiceStop()
- {
- try
- {
- //Util.UDebugMessage("ServiceStop() : 데몬연결을 종료합니다..............",0,0);
- if (Tp != null)
- Tp.DisconnectToDemon(0, myReceiverID);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //MessageBox.Show(ex.Message, Application.ProductName);
- //MessageBox.Show(string.Format("[{0}]\r\n{1}", ex.Message, ex.StackTrace), Application.ProductName);
- }
- }
- //통신연결상태읽어 표시 및 재연결
- public void ReadDeamonInfo()
- {
- try
- {
- // cyim 2015.7.22 : 통신데몬 연결 핑테스트
- if (main.Ethernet.Ping_SyncCheck(serverIP) == false) // cyim 2017.01.02 : Memory leak
- {
- ServiceStop();
- Tp = null;
- }
- if (Tp == null || !Tp.cmd_Connected || !Tp.event_Connected)
- {
- //myCntLabel.Text = "통신데몬 연결이상!";
- //myCntLabel.Visible = true;
- ++reConnectCount;
- if (reConnectCount == 10)
- {
- //재연결을 위하여~~~~~~~~~~~~~~~~~~
- ServiceStop();
- //reConnectCount = 25;
- }
- //if (reConnectCount >= 20)
- //{
- // //재연결을 위하여~~~~~~~~~~~~~~~~~~
- // reConnectCount = 0;
- // //----------------------------------------------------------------------------------------
- // //임시로 막았음.. 나중에 풀어야...
- // //----------------------------------------------------------------------------------------
- // ServiceStart();
- // if (Tp.cmd_Connected && Tp.event_Connected)
- // {
- // main.CommandLog(MappingStatus.CommConnectNormal, string.Format("데몬연결정상!\r\n {0}", "데몬연결이 시작되었습니다.."));
- // }
- //}
- //if (reConnectCount > 5)
- //{
- // if (Tp == null || !Tp.cmd_Connected || !Tp.event_Connected)
- // {
- // myCntLabel.Text = "통신데몬 연결이상!";
- // myCntLabel.Visible = true;
- // }
- //}
- //
- // cyim 2013.6.24 통신데몬 연결이상은 처음에 무조건 띄우도록 하지 않음 (상위 주석)
- //
- if (reConnectCount >= 20)
- {
- // 재연결 카운트
- reConnectCount = 0;
- // 재연결 테스트 시작
- ServiceStart();
- // 연결 확인
- if (Tp.cmd_Connected && Tp.event_Connected)
- {
- //main.CommandLog(MappingStatus.CommConnectNormal, string.Format("데몬연결정상!\r\n {0}", "데몬연결이 시작되었습니다.."));
- myCntLabel.Visible = false;
- }
- else
- {
- myCntLabel.Visible = true;
- }
- }
- else if (reConnectCount > 15) // cyim 2013.7.31 주기 변경
- {
- if (Tp == null || !Tp.cmd_Connected || !Tp.event_Connected)
- myCntLabel.Visible = true;
- else
- myCntLabel.Visible = false;
- }
- }
- else
- {
- reConnectCount = 0;
- myCntLabel.Visible = false;
- }
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //Debug.WriteLine("ReadDeamonInfo() 통신재연결:" + ex.Message);
- // MessageBox.Show(string.Format("[{0}]\r\n{1}",ex.Message,ex.StackTrace),Application.ProductName);
- }
- }
- //중계기 전체 데이터 저장
- public void saveRepeaterALLData()
- {
- try
- {
- //에러응답처리-------------------------------------------시작
- try
- {
- if (cmd.ErrResponse)
- {
- if (this.Connected)
- {
- RCVData_NACK nack = (RCVData_NACK)cmd.ErrResponseData;
- throw new Exception(String.Format("cmdinfo 에러:{0}", nack.Baseinfo.ErrMessage));
- }
- else throw new Exception(cmd.ResponseData.ToString());
- }
- else if (cmd.ResponseData == null)
- {
- throw new Exception("중계기정보를 가져오지 못하였습니다.. 먼저 수신기데몬 연결상태를 확인하십시요.");
- }
- }
- catch (Exception ex1)
- {
- Util.UErrorMessage(ex1, 0, 0);
- //ebug.WriteLine(ex1.Message);
- }
- //에러응답처리-------------------------------------------끝
- try
- {
- if (myReceiverTypeInfo == null) return;
- //BoardTypeInfo
- BoardTypeInfo brdinfo = myReceiverTypeInfo.Get_RepeaterType(this.cmd.boardNo); //통신보드savBoardID의 설정값
- RCVData_ReadRepeaterPointAll ResponseData = (RCVData_ReadRepeaterPointAll)cmd.ResponseData;
- RepeaterData[] data = ResponseData.Data;
- RepeaterPointUnit[] unitData = new RepeaterPointUnit[127];
- //127개 중계기 데이터값를 RepeaterPointUnit으로 생성후 저장.
- for (int repeaterNo = 0; repeaterNo < data.Length; repeaterNo++)
- {
- unitData[repeaterNo] = new RepeaterPointUnit(repeaterNo + 1, data[repeaterNo]);
- }
- // cyim 2016.10.31 : 계통정보는 0,1,2,3 으로 변경
- if (this.cmd.loopNo == 0)
- {
- //통신보드 + Loop0 + 127개 중계기 데이터값 저장.
- brdinfo.Loop0_RepeaterUnit_Data = unitData;
- }
- else if (this.cmd.loopNo == 1)
- {
- //통신보드 + Loop1 + 127개 중계기 데이터값 저장.
- brdinfo.Loop1_RepeaterUnit_Data = unitData;
- }
- else if (this.cmd.loopNo == 2)
- {
- //통신보드 + Loop2 + 127개 중계기 데이터값 저장.
- brdinfo.Loop2_RepeaterUnit_Data = unitData;
- }
- else if (this.cmd.loopNo == 3)
- {
- //통신보드 + Loop3 + 127개 중계기 데이터값 저장.
- brdinfo.Loop3_RepeaterUnit_Data = unitData;
- }
- }
- catch (Exception ex2)
- {
- Util.UErrorMessage(ex2, 0, 0);
- }
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- /*************************************************************************
- * 명령 실행
- *************************************************************************/
- public bool runCommand(CmdInfo cmd)
- {
- bool ret = false;
- try
- {
- if (!Tp.cmd_Connected || !Tp.event_Connected)
- {
- LFC.Log("타입: Commd 요청 실패, 메세지: " + cmd.CommandType + ", cmd_Connected: " + Tp.cmd_Connected + ", Tp.event_Connected: " + Tp.event_Connected);
- throw new Exception("통신연결을 확인하십시오..");
- }
- //if (gCommResponseReading)
- //{
- // MessageBox.Show("응답대기중입니다.. 잠시후에 다시 시도하십시요..");
- // return;
- //}
- ////this.cmd = cmd;
- //moom,20101022 , 재귀호출 수정 부분 삭제
- //명령생성 및 실행
- gCommResponseReading = true; //응답기다리는중....
- Tp.getCommand(cmd);
- ret = true;
- //타임아웃설정
- if (cmd.CommandType != "CV") //기존
- {
- WaitStart();
- }
- else
- {
- WaitStart_onesecond();
- }
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- Thread.Sleep(1000);
- ret = false;
- // MessageBox.Show(string.Format("[{0}]\r\n{1}",ex.Message,ex.StackTrace),Application.ProductName);
- cmd.ErrResponseData = ex.Message;
- getResponse(cmd);
- }
- return ret;
- }
- public void reloadChildForm()
- {
- try
- {
- //차일드 폼을 다시 REFLASH시킨다..
- foreach (Form childForm in main.MdiChildren)
- {
- // cyim 2016.12.07 : 수신기 모델별 내부 로직 변경
- if (childForm is frmVersion_BigReceiver)
- {
- frmVersion_BigReceiver frm = (frmVersion_BigReceiver)childForm;
- frm.Form_Init();
- }
- else if (childForm is frmVersion)
- {
- frmVersion frm = (frmVersion)childForm;
- frm.Form_Init();
- }
- else if (childForm is frmPositionCode)
- {
- frmPositionCode frm = (frmPositionCode)childForm;
- frm.Form_Init();
- }
- else if (childForm is frmModeConfig)
- {
- frmModeConfig frm = (frmModeConfig)childForm;
- //frm.Form_Init();
- }
- else if (childForm is frmMapConfig)
- {
- frmMapConfig frm = (frmMapConfig)childForm;
- frm.Form_Init();
- }
- else if (childForm is frmDriveTest)
- {
- frmDriveTest frm = (frmDriveTest)childForm;
- frm.Form_Init();
- }
- else if (childForm is frmControlWrite)
- {
- frmControlWrite frm = (frmControlWrite)childForm;
- frm.Form_Init();
- }
- else if (childForm is frmControlMode_BigReceiver)
- {
- // cyim 2013.8.5 제어화면 갱신은 버튼으로만 동작되도록 수정함
- //frmControlMode_BigReceiver frm = (frmControlMode_BigReceiver)childForm;
- //frm.Form_Init();
- }
- else if (childForm is frmControlMode)
- {
- // cyim 2013.8.5 제어화면 갱신은 버튼으로만 동작되도록 수정함
- //frmControlMode frm = (frmControlMode)childForm;
- //frm.Form_Init();
- }
- else if (childForm is frmBoardGroup_BigReceiver)
- {
- frmBoardGroup_BigReceiver frm = (frmBoardGroup_BigReceiver)childForm;
- frm.Form_Init();
- }
- else if (childForm is frmBoardGroup)
- {
- frmBoardGroup frm = (frmBoardGroup)childForm;
- frm.Form_Init();
- }
- else if (childForm is FormLogView)
- {
- FormLogView frm = (FormLogView)childForm;
- //frm.Form_Init();
- frm.UpdateData();// sdkim , 20111019
- }
- }
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- /*************************************************************************
- * 프로토콜이 보낸 명령응답을 받는함수
- *************************************************************************/
- int eventReceiveTime = -1;
- public int TermEventReciveTime
- {
- get
- {
- int ret = -1;
- if (eventReceiveTime > -1 && Environment.TickCount > eventReceiveTime)
- {
- ret = Environment.TickCount - eventReceiveTime;
- }
- return ret;
- }
- }
- public void getResponse(CmdInfo cmd)
- {
- try
- {
- gCommResponseReading = false; //응답받았다...
- this.cmd = cmd;
- if (this.cmd == null) return;
- //선언된 이벤트로 invork
- Delegate dele = this.cmd.dEvent;
- //Debug.WriteLine("getResponse() : 응답처리를 요청받았습니다...");
- //Debug.WriteLine("getResponse() : Tprotocol로 부터 이벤트 데이터를 받았습니다...");
- switch (this.cmd.ResCommand)
- {
- //중계기 데이터 읽기
- case prt_res_define.read_repeater_all:
- case prt_res_define.read_repeater_all_E1:
- case prt_res_define.read_repeater_all_E2:
- {
- //Util.UDebugMessage("getResponse() : Tprotocol로 부터 중계기 전체 데이터를 받았습니다...",0,0);
- ////중계기 데이터 저장$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- saveRepeaterALLData();
- ////선언된 이벤트가 없다면 중계기데이터상태보기 폼이 실행되어 있다면 Delegate를 넣어준다..
- //if (dele == null)
- //{
- // foreach (Form childForm in main.MdiChildren)
- // {
- // if (childForm is frmRepeaterGroup)
- // {
- // //중계기 전체 읽기 명령, 중계기 읽기 화면이 떠있다면 자료를 보내는 이밴트 생성
- // frmRepeaterGroup frm = (frmRepeaterGroup)childForm;
- // dResponseRepeaterInfoAlI += new dCommandResponse(frm.RepeaterInfoAll);
- // dele = dResponseRepeaterInfoAlI;
- // }
- // }
- //}
- break;
- }
- //응답-io보드데이터읽기
- case prt_res_define.read_ioboard_data:
- //Util.UDebugMessage("getResponse() : prt_res_define.read_ioboard_data:응답-io보드데이터읽기",0,0);
- break;
- //응답-정상
- case prt_res_define.general_ack:
- //Util.UDebugMessage("getResponse() : prt_res_define.general_ack,reset_repeater_all,reset_repeater_unit:응답-정상",0,0);
- RCVData_ACK ResponseData = (RCVData_ACK)this.cmd.ResponseData;
- break;
- //응답-실패
- case prt_res_define.general_nack:
- //Util.UDebugMessage("getResponse() : prt_res_define.general_nack:응답-실패",0,0);
- break;
- //응답-데몬상태
- case prt_res_define.read_demon_status:
- //Util.UDebugMessage("getResponse() : prt_res_define.read_demon_status:응답-데몬상태",0,0);
- break;
- //응답-io보드상태읽기
- case prt_res_define.read_ioboard_status:
- //Util.UDebugMessage("getResponse() : prt_res_define.read_ioboard_status:응답-io보드상태읽기",0,0);
- break;
- //응답-중계기 정보전체 읽기
- case prt_res_define.read_repeater_info_all:
- //Util.UDebugMessage("getResponse() : prt_res_define.read_repeater_info_all:응답-중계기 정보전체 읽기", 0, 0);
- break;
- //응답-통신보드상태읽기
- case prt_res_define.resd_tbd_state:
- //Util.UDebugMessage("getResponse() : prt_res_define.resd_tbd_state:응답-전압읽기", 0, 0);
- RCVData_ReadTBoardStatus resdata = (RCVData_ReadTBoardStatus)this.cmd.ResponseData;
- //Debug.WriteLine("24전압:" + resdata.TBD_24Voltage);
- //main.Display_24Voltage(resdata.TBD_24Voltage);
- break;
- //응답-중계기 검색
- case prt_res_define.search_repeater_unit:
- //Util.UDebugMessage("getResponse() : prt_res_define.search_repeater_unit:응답-중계기 검색",0,0);
- break;
- //응답-io보드 상태쓰기
- case prt_res_define.write_ioboard_status:
- //Util.UDebugMessage("getResponse() : prt_res_define.write_ioboard_status:응답-io보드 상태쓰기", 0, 0);
- break;
- //응답-io보드 데이터쓰기
- case prt_res_define.write_ioboard_data:
- //Util.UDebugMessage("getResponse() : prt_res_define.write_ioboard_data:응답-io보드데이터쓰기", 0, 0);
- break;
- //응답-중계기 정보 쓰기
- case prt_res_define.write_repeater_info_unit:
- //Util.UDebugMessage("getResponse() : prt_res_define.write_repeater_info_unit:응답-중계기 정보 쓰기", 0, 0);
- break;
- //응답-중계기입력쓰기
- case prt_res_define.write_repeater_input_unit:
- //Util.UDebugMessage("getResponse() : prt_res_define.write_repeater_input_unit:응답-중계기입력쓰기", 0, 0);
- break;
- //응답-중계기 출력쓰기
- case prt_res_define.write_repeater_output_unit:
- //Util.UDebugMessage("getResponse() : prt_res_define.write_repeater_output_unit:응답-중계기 출력 쓰기", 0, 0);
- break;
- //응답-통신보드 상태쓰기
- case prt_res_define.write_tbd_state:
- //Util.UDebugMessage("getResponse() : prt_res_define.write_tbd_state:응답-통신보드 상태쓰기", 0, 0);
- break;
- //응답-전체 누적카운트---추가1
- case prt_res_define.read_command_status:
- {
- //이벤트 요청 명령은 응답을 무시
- if (cmd.CommandType != "ES")
- {
- //Util.UDebugMessage("getResponse() : prt_res_define.read_command_status:응답-UI와 데몬간 CommandType", 0, 0);
- RCVData_ReadCommandStatus resData2 = (RCVData_ReadCommandStatus)this.cmd.ResponseData;
- MsgDisplay(resData2); //알람화면표시 및 처리
- }
- break;
- }
- //응답-이벤트알람---추가2
- case prt_res_define.read_notify_staus:
- {
- //Util.UDebugMessage("getResponse() : prt_res_define.read_notify_staus:응답-이벤트알람", 0, 0);
- RCVData_ReadNotifyStatus resData = (RCVData_ReadNotifyStatus)this.cmd.ResponseData;
- MsgDisplay(resData); //알람화면표시 및 처리
- reloadChildForm(); //자식폼 데이터 읽기
- break;
- }
- case prt_res_define.write_analogdetecter_level_all: // 레벨 쓰기
- {
- // Form_AnalogDetecter 폼으로 전달
- _Event.AnalogDetecter_SendMessage_Write(cmd);
- break;
- }
- default:
- //Util.UDebugMessage("getResponse() : 알수없는 응답헤더입니다..", 0, 0);
- break;
- }
- if (dele != null) main.Invoke(dele, this.cmd);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //MessageBox.Show(string.Format("[{0}]\r\n{1}",ex.Message,ex.StackTrace),Application.ProductName);
- //MessageBox.Show(ex.Message, Application.ProductName);
- }
- }
- // cyim 2015.7.7 주석 정리
- // 불필요한 주석과 이전 주석이 너무 혼재되어 있어서 1차로 정리한다
- // Util.LogWrite 은 현재 사용되지 않지만 추후를 대비하여 남겨두기로 함
- //추가1-명령
- private void MsgDisplay(RCVData_ReadCommandStatus resData)
- {
- try
- {
- // cyim 2015.10.23 타수신기의 이벤트 처리는 의미없다 (화재는 필요함)
- if (resData == null && resData.Receiver_id != myReceiverID) return;
- string message = "";
- switch (resData.CommandType)
- {
- //누적카운트 읽기 명령
- case "CC":
- { //화재, 설비, 통신, 단선, 차단
- main.CountValueCheck(resData.Reply_value4, resData.Reply_value2, resData.Reply_value1, resData.Reply_value5, resData.Reply_value7);
- main.Count_Display(resData.Reply_value4, resData.Reply_value2, resData.Reply_value1, resData.Reply_value5, resData.Reply_value7);
- //명령 로그에 저장
- Util.LogWrite(
- string.Format("누적카운트읽기 화재:{0}, 설비:{1}, 통신:{2}, 단선:{3}",
- resData.Reply_value4, resData.Reply_value2, resData.Reply_value1, resData.Reply_value5));
- LFC.Log(string.Format("타입: Commd 응답, 메세지: 누적카운트읽기, 화재:{0}, 설비:{1}, 통신:{2}, 단선:{3}",
- resData.Reply_value4, resData.Reply_value2, resData.Reply_value1, resData.Reply_value5));
- }
- break;
- //전압 읽기 명령
- case "CV":
- {
- if (resData.Voltage24 > 0)
- {
- //main.Display_24Voltage(resData.Voltage24);
- main.Display_Voltage(resData.Voltage24, resData.Voltage3_3, resData.Voltage5);
- }
- //명령 로그에 저장
- Util.LogWrite(
- string.Format("전압 읽기 Voltage24:{0:0.00},Voltage3_3:{1:0.00},Voltage5:{2:0.00}",
- resData.Voltage24, resData.Voltage3_3, resData.Voltage5));
- LFC.Log(string.Format("타입: Commd 응답, 메세지: 전압 읽기, 전압:{0:0.00}",
- resData.Voltage24));
- }
- break;
- case "DC": //차단명령
- {
- //명령 로그에 저장
- Util.LogWrite(string.Format("차단명령 Reply_value1:{0}", resData.Reply_value1));
- LFC.Log(string.Format("타입: Commd 응답, 메세지: 차단명령, Reply_value1:{0}", resData.Reply_value1));
- }
- break;
- case "CS": //환경정보수정 명령
- {
- //명령 로그에 저장
- Util.LogWrite(string.Format("환경정보수정 Reply_value1:{0}", resData.Reply_value1));
- LFC.Log(string.Format("타입: Commd 응답, 메세지: 환경정보수정, Reply_value1:{0}", resData.Reply_value1));
- }
- break;
- case "BS": //통신보드통신상태 명령
- {
- string[] status = resData.BoardConnStatus;
- message = "";
- // cyim 2016.12.07 : 수신기 모델별 내부 로직 변경
- int boardID_cnt = 0;
- // cyim 2017.01.12 : IFC3300 은 통신보드 0번이 존재한다
- if (main.ReceiverModel == "IFC3300")
- {
- boardID_cnt = 65;
- }
- else
- {
- boardID_cnt = 16;
- }
- // cyim 2016.11.03 : 통신보드(중계반)는 최대 64
- for (int i = 0; i < boardID_cnt; i++)
- message += status[i];
- //명령 로그에 저장
- Util.LogWrite(string.Format("통신보드통신상태 status:{0}", message));
- LFC.Log(string.Format("타입: Commd 응답, 메세지:통신보드통신상태, status:{0}", message));
- }
- break;
- case "TB": //배터리 테스트
- {
- Util.LogWrite(string.Format("배터리 테스트 Reply_value1:{0}", resData.Reply_value1)); //명령 로그에 저장
- LFC.Log(string.Format("타입: Commd 응답, 메세지:배터리 테스트 결과, Reply_value1:{0}", resData.Reply_value1));
- }
- break;
- case "ES": //이벤트 요청
- {
- Util.LogWrite("이벤트 정보 요청"); //명령 로그에 저장
- LFC.Log(string.Format("타입: Commd 응답, 메세지:이벤트 정보"));
- }
- break;
- default:
- break;
- }
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- // cyim 2015.7.7 주석 정리
- // 불필요한 주석과 이전 주석이 너무 혼재되어 있어서 1차로 정리한다
- // Util.LogWrite 은 현재 사용되지 않지만 추후를 대비하여 남겨두기로 함
- //추가2--이벤트
- private void MsgDisplay(RCVData_ReadNotifyStatus resData)
- {
- try
- {
- if (resData == null) return;
- //메세지와 로그객체 생성
- EventLogInfo eventLog = CreateEventMessage(resData);
- //명령 로그에 저장
- Util.LogWrite(string.Format("이벤트ID:{0} ", eventLog.EventId));
- // 기본 변수
- DacDeviceConfig dacDeviceConfig = new DacDeviceConfig(this.myReceiverID);
- String dev_use_flag = "";
- string message = "";
- // cyim 2015.7.7 이벤트 정리
- // 정상 이벤트는 삭제, 이상 이벤트는 추가로 원칙을 정한다
- // 현재 이벤트를 출력하는데 있어서, 굳이 추가하고 삭제할 이유가 없다
- // cyim 2015.10.23 타수신기의 이벤트 처리는 의미없다 (화재는 필요함)
- if (resData == null) return;
- // 타수신기 이벤트는 무시한다. 단 화재 발생 및 해제, 복구, 관련 이벤트는 허용한다
- if ((resData.Receiver_id != myReceiverID))
- {
- if (resData.EventType == "OF" // 화재 발생
- || resData.EventType == "XF" // 화재 해제
- || resData.EventType == "MS"//주음향정지버튼
- || resData.EventType == "LS"//지구음향정지버튼
- || resData.EventType == "EB"//비상방송정지버튼
- || resData.EventType == "FR"//화재복구버튼
- )
- {
- ;// 타수신기 이벤트지만 허용한다
- }
- else
- {
- return; // 타수신기 이벤트는 처리안한다
- }
- }
- string Logmessage = "";
- //Console.WriteLine(resData.EventType);
- switch (resData.EventType) // cyim 2015.8.4 수신반을 위한 static 클래스 정리 : 각 이벤트마다 main 추가
- {
- case "OM": //통신모듈 통신정상-LOOP 통신정상
- {
- Logmessage = "통신모듈 통신정상-LOOP 통신정상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "MODULE COMMUNICATION OK! "));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- //통신카운트 표시
- main.Display_ErrorCnt(resData.Count);
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- case "XM": //통신모듈 통신이상-LOOP 통신이상
- {
- Logmessage = "통신모듈 통신이상-LOOP 통신이상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "MODULE COMMUNICATION FAIL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //통신카운트 표시
- main.Display_ErrorCnt(resData.Count);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- case "OR": //중계기 통신정상
- {
- Logmessage = "중계기 통신정상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "REPEATER COMMUNICATION OK! "));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- //통신카운트 표시
- main.Display_ErrorCnt(resData.Count);
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- case "XR": //중계기 통신이상
- {
- Logmessage = "중계기 통신이상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "REPEATER COMMUNICATION FAIL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //통신카운트 표시
- main.Display_ErrorCnt(resData.Count);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- case "OI": //I/O 모듈 통신정상
- {
- Logmessage = "I/O 모듈 통신정상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "I/O COMMUNICATION FAIL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- //통신카운트 표시
- main.Display_ErrorCnt(resData.Count);
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- case "XI": //I/O 모듈 통신이상
- {
- Logmessage = "I/O 모듈 통신이상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "I/O COMMUNICATION FAIL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //통신카운트 표시
- main.Display_ErrorCnt(resData.Count);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- case "OK": //키패드모듈 통신정상
- {
- Logmessage = "키패드모듈 통신정상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "KEY PAD COMMUNICATION OK!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- //통신카운트 표시
- main.Display_ErrorCnt(resData.Count);
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- //this.main.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 키패드모듈 통신 상태에 데이타베이스 읽기를 넣는것은 무리다
- }
- break;
- case "XK": //키패드모듈 통신이상
- {
- Logmessage = "키패드모듈 통신이상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "KEY PAD COMMUNICATION FAIL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //통신카운트 표시
- main.Display_ErrorCnt(resData.Count);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- //this.main.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 키패드모듈 통신 상태에 데이타베이스 읽기를 넣는것은 무리다
- }
- break;
- //2010.07.13추가
- case "XX": //중계기 전원이상 해제
- {
- Logmessage = "중계기 전원이상 해제";
- message = String.Format("{0}", EventTypeName(resData.EventType, "REPEATER VOLTAGE OK"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- case "OX": //중계기 전원이상 발생
- {
- Logmessage = "중계기 전원이상 발생";
- message = String.Format("{0}", EventTypeName(resData.EventType, "REPEATER VOLTAGE FAULT"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //eventLog.LiveMsgFlag = true; //Live 메세지 생성
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- // cyim 2015.6.26 아날로그 감지기 이벤트 처리 추가
- case "FA": // 감지기 FAULT 발생
- case "OL": //중계기 단선발생
- {
- if (resData.EventType == "FA")
- {
- Logmessage = "감지기 FAULT 발생";
- }
- else
- {
- Logmessage = "중계기 단선발생";
- }
- message = String.Format("{0}", EventTypeName(resData.EventType, "REPEATER LINE CUT ON!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //단선카운트 표시
- main.Display_BlockingCnt(resData.Count);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- // cyim 2015.6.26 아날로그 감지기 이벤트 처리 추가
- case "FN": // 감지기 FAULT 복구
- case "XL": //중계기 단선복구
- {
- if (resData.EventType == "FN")
- {
- Logmessage = "감지기 FAULT 복구";
- }
- else
- {
- Logmessage = "중계기 단선복구";
- }
- message = String.Format("{0}", EventTypeName(resData.EventType, "REPEATER LINE CUT OFF!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- //단선카운트 표시
- main.Display_BlockingCnt(resData.Count);
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- case "OA": //화재축적상태 발생
- {
- Logmessage = "화재축적상태 발생";
- message = String.Format("{0}", EventTypeName(resData.EventType, "FIRE ACCUMULATION ON!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.AccumulateOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //축적모드 시작
- main.Accumulate_Start();
- // cyim 2016.12.12 축적화재 재동작 컨셉 변경
- // 축적화재 발생도중에 축적화재가 또 발생한 경우에는 카운터는 그대로 유지한다. 만약 기존의 축적화재가 사라지더라도 축적화재 상태가 해제되지 않기 때문이다
- //////////////////////////////////////////// cyim 2014.7.9 : 축적화재 표시 : KFI 요청사항
- //main.Display_FireCnt(resData.Count); //화재카운트 표시안함
- main.fireCount_Accumulation = resData.Count;
- // 기존 화재 리스트에 있는지 확인하고, 없는 경우에 새로 추가한다.
- string sEventLog = string.Format("{0}", eventLog.DeviceMessage);
- if (main.FireList_Accumulation.Contains(sEventLog))
- {
- // 중복 메시지가 있음.
- }
- else
- {
- // 화재 리스트에 추가.
- main.FireList_Accumulation.Add(string.Format("{0}", eventLog.DeviceMessage));
- main.FireEventProcess();
- }
- //////////////////////////////////////////// cyim 2014.7.9 : 축적화재 표시 : KFI 요청사항
- //화면에 메세지 표시--축적시작 : 추가 2010.10.28 탁은임
- main.MessageProcess(eventLog);//2010.10.29,k.s.d, message level bug fix => MessageProcess before UpdateEventMessage.
- }
- break;
- // cyim 2015.6.26 아날로그 감지기 이벤트 처리 추가
- case "WA": // 감지기 경고발생
- {
- Logmessage = "감지기 경고발생";
- message = String.Format("{0}", EventTypeName(resData.EventType, "PREFIRE ON!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.AccumulateOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- // 기존 화재 리스트에 있는지 확인하고, 없는 경우에 새로 추가한다.
- string sEventLog = string.Format("{0}", eventLog.DeviceMessage);
- if (main.PreFireList.Contains(sEventLog))
- {
- // 중복 메시지가 있음.
- }
- else
- {
- // Prefire 리스트에 추가.
- main.PreFireList.Add(string.Format("{0}", eventLog.DeviceMessage));
- main.PreFireEventProcess(); // cyim 2015.7.9 PreFire 표시 문제
- }
- //화면에 메세지 표시
- main.MessageProcess(eventLog);
- }
- break;
- case "XA": //화재축적상태 해제
- {
- Logmessage = "화재축적상태 해제";
- //count > 0 이면 아직 축적이 있으므로 계속 진행
- //if (resData.Count == 0) // cyim 2014.7.10 : 축적화재가 멀티로 발생하고 화재발생으로 전환되는 경우 현재이력로그에 남아있는 경우가 발생
- {
- //message = String.Format("{0} Cnt[{1}]", EventTypeName(resData.EventType, "FIRE ACCUMULATION OFF!"), resData.Count);
- message = String.Format("{0}", EventTypeName(resData.EventType, "FIRE ACCUMULATION OFF!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.AccumulateOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- // 축적화재 발생도중에 축적화재가 또 발생한 경우에는 카운터는 그대로 유지한다.
- // 만약 기존의 축적화재가 사라지더라도 축적화재 상태 자체는 해제 되지 않기 때문이다
- // 마지막 축적화재의 카운터가 짧아지는 것은 불합리해 보여도 축적화재 상태에 진입하면 모든 축적화재가 해제 되지 않는한
- // 계속 축적화재 카운터는 변함없이 유지되도록한다 (장성원 부장님)
- if (resData.Count < 1) // cyim 2016.12.12 축적화재 재동작 컨셉 변경 : 축적화재 카운터가 최종 1 미만인 경우에만 동작
- //축적모드 종료
- main.Accumulate_Stop();
- //////////////////////////////////////////// cyim 2014.7.9 : 축적화재 표시 : KFI 요청사항
- // main.Display_FireCnt(resData.Count); //화재카운트 표시
- main.fireCount_Accumulation = resData.Count;
- //화재내역-제1보,2보 삭제
- //main.Display_FireEventComboDel(eventLog.EventId);
- // 화재 리스트에서 제거..
- if (main.FireList_Accumulation.Count > 0)
- {
- main.FireList_Accumulation.Remove(string.Format("{0}", eventLog.DeviceMessage));
- }
- else
- {
- // 이상한 상태임..
- main.FireList_Accumulation.Clear();
- }
- main.FireEventProcess();
- //////////////////////////////////////////// cyim 2014.7.9 : 축적화재 표시 : KFI 요청사항
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--축적해제 : 추가 2010.10.28 탁은임
- main.MessageProcess(eventLog);
- }
- }
- break;
- // cyim 2015.6.26 아날로그 감지기 이벤트 처리 추가
- case "WN": // 감지기 경고해제
- {
- Logmessage = "감지기 경고해제";
- message = String.Format("{0}", EventTypeName(resData.EventType, "PREFIRE OFF!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.AccumulateOff;
- // 화재 리스트에서 제거..
- if (main.PreFireList.Count > 0)
- {
- main.PreFireList.Remove(string.Format("{0}", eventLog.DeviceMessage));
- }
- else
- {
- // 이상한 상태임..
- main.PreFireList.Clear();
- }
- main.PreFireEventProcess(); // cyim 2015.7.9 PreFire 표시 문제
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시
- main.MessageProcess(eventLog);
- }
- break;
- case "OF": //화재상태 발생
- {
- if (eventLog.CommId == 3 && eventLog.BoardNo == 15 && eventLog.LoopNo == 0 && eventLog.RepeaterNo == 0 && eventLog.DeviceId == 1 && eventLog.InoutType == "I")
- {
- // ksd, 2012.02.21, 발신기 자체의 화재는 무시하자..( csw bj )
- }
- else
- {
- // cyim 2013.8.14 타수신기 화재 정보 팝업창 컨셉 변경
- if (myReceiverID.ToString() == resData.Receiver_id.ToString())
- {
- Logmessage = "화재상태 발생";
- message = String.Format("{0}", EventTypeName(resData.EventType, "FIRE ON!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FireOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //화재카운트 표시
- main.Display_FireCnt(resData.Count);
- // 기존 화재 리스트에 있는지 확인하고, 없는 경우에 새로 추가한다.
- string sEventLog = string.Format("{0}", eventLog.DeviceMessage);
- if (main.FireList.Contains(sEventLog))
- {
- // 중복 메시지가 있음.
- }
- else
- {
- // 화재 리스트에 추가.
- main.FireList.Add(string.Format("{0}", eventLog.DeviceMessage));
- main.FireEventProcess();
- }
- //화재내역-제1보,2보에 표시
- //main.Display_FireEventComboAdd(string.Format("[{0}] {1}", eventLog.Message, eventLog.DeviceMessage), eventLog.EventId);
- // 제거.. csw. 12.9.14
- //main.Display_FireEventComboAdd(string.Format("{0}", eventLog.DeviceMessage), eventLog.EventId);
- //화면에 메세지 표시--화재
- main.MessageProcess(eventLog);
- //main.FireCheck();
- main.FireDetect(eventLog);
- }
- else
- {
- if (_Data.FireDeskMode == false) // cyim 2015.10.1 타수신기 화재 팝업창은 수신반에서는 사용하지 않는다
- {
- // cyim 2015.10.1 통보받은 화재 발생 시간을 기준으로 표시
- string event_time = String.Format("{0:yyyy}-{0:MM}-{0:dd} {0:HH}:{0:mm}:{0:ss}", eventLog.EventTime);
- // cyim 2013.8.9 타수신기 화재 정보 팝업창 출력 기능 추가
- LFC.Log("타수신기 화재 정보 팝업창 출력 기능 추가: EtcReceiverFirePopupProcess");
- main.Popup.EtcReceiverFirePopupProcess(myReceiverID.ToString(), resData.Receiver_id.ToString(), true, eventLog.DeviceMessage, event_time);
- // cyim 2013.8.9 타수신기 화재 정보 팝업창 출력 기능 추가
- LFC.Log("타수신기 화재 정보 팝업창 출력 기능 추가: EtcReceiverFirePopupShow");
- main.Popup.EtcReceiverFirePopupShow(myReceiverID.ToString(), resData.Receiver_id.ToString(), main);
- LFC.Log("타수신기 화재 정보 팝업창 출력 기능 추가: EtcFirePopup_Update_Inform_Write");
- // 팝업창이 보이지 않는 경우에는 데이타를 변경하는 루틴이 적용되지 않아서 해당 루틴 삭제하고 여기에 적용함 : 팝업창이 숨겨져 있다가 다시 출력할때 화면 표시 잘못되는 문제 수정
- main.Event.EtcFirePopup_Update_Inform_Write(resData.Receiver_id.ToString());
- }
- }
- }
- break;
- }
- case "XF": //화재상태 해제
- {
- // cyim 2013.8.14 타수신기 화재 정보 팝업창 컨셉 변경
- Logmessage = "화재상태 해제";
- if (myReceiverID.ToString() == resData.Receiver_id.ToString())
- {
- message = String.Format("{0}", EventTypeName(resData.EventType, "FIRE OFF! "));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FireOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- main.Display_FireCnt(resData.Count); //화재카운트 표시
- //화재내역-제1보,2보 삭제
- //main.Display_FireEventComboDel(eventLog.EventId);
- // 화재 리스트에서 제거..
- if (main.FireList.Count > 0)
- {
- main.FireList.Remove(string.Format("{0}", eventLog.DeviceMessage));
- }
- else
- {
- // 이상한 상태임..
- main.FireList.Clear();
- }
- main.FireEventProcess();
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--화재
- main.MessageProcess(eventLog);//2010.10.29,k.s.d, message level bug fix => MessageProcess before EventLogDel.
- }
- else
- {
- if (_Data.FireDeskMode == false) // cyim 2015.10.1 타수신기 화재 팝업창은 수신반에서는 사용하지 않는다
- {
- // cyim 2015.10.1 통보받은 화재 발생 시간을 기준으로 표시
- string event_time = String.Format("{0:yyyy}-{0:MM}-{0:dd} {0:HH}:{0:mm}:{0:ss}", eventLog.EventTime);
- // cyim 2013.8.9 타수신기 화재 정보 팝업창 출력 기능 추가
- main.Popup.EtcReceiverFirePopupProcess(myReceiverID.ToString(), resData.Receiver_id.ToString(), false, eventLog.DeviceMessage, event_time);
- // cyim 2013.8.9 타수신기 화재 정보 팝업창 출력 기능 추가 // 2013.8.14 루틴변경으로 추가
- main.Popup.EtcReceiverFirePopupShow(myReceiverID.ToString(), resData.Receiver_id.ToString(), main);
- // 팝업창이 보이지 않는 경우에는 데이타를 변경하는 루틴이 적용되지 않아서 해당 루틴 삭제하고 여기에 적용함 : 팝업창이 숨겨져 있다가 다시 출력할때 화면 표시 잘못되는 문제 수정
- main.Event.EtcFirePopup_Update_Inform_Write(resData.Receiver_id.ToString());
- }
- }
- }
- break;
- case "OE": //설비작동상태 발생
- {
- Logmessage = "설비작동상태 발생";
- message = String.Format("{0}", EventTypeName(resData.EventType, "EQUIPMENT ON!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.WriteOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //설비카운트 표시
- main.Display_WriteCnt(resData.Count);
- // 제경보 리스트에 추가.
- // 기존 제경보 리스트에 있는지 확인하고, 없는 경우에 새로 추가한다.
- string sEventLog = string.Format("{0}", eventLog.DeviceMessage);
- if (main.EquipList.Contains(sEventLog))
- {
- // 중복 메시지가 있음.
- }
- else
- {
- main.EquipList.Add(sEventLog);
- main.EquipEventProcess();
- }
- //제경보에 설비작동내역 표시
- ////main.Display_WriteEvent(string.Format("[{0}] {1}", eventLog.Message, eventLog.DeviceMessage), eventLog.EventId);
- //main.Display_WriteEvent(string.Format("{0}", eventLog.DeviceMessage), eventLog.EventId);
- //화면에 메세지 표시--설비
- main.MessageProcess(eventLog);
- }
- break;
- case "XE": //설비작동상태 해제
- {
- Logmessage = "설비작동상태 해제";
- message = String.Format("{0}", EventTypeName(resData.EventType, "EQUIPMENT OFF!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.WriteOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- //설비카운트 표시
- main.Display_WriteCnt(resData.Count);
- ////재경보 해제
- //main.Display_WriteEventComboDel(eventLog.EventId);
- // 설비 리스트에서 제거..
- if (main.EquipList.Count > 0)
- {
- main.EquipList.Remove(string.Format("{0}", eventLog.DeviceMessage));
- }
- else
- {
- // 이상한 상태임..
- main.EquipList.Clear();
- }
- main.EquipEventProcess();
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--설비
- main.MessageProcess(eventLog);//2010.10.29,k.s.d, message level bug fix => MessageProcess before EventLogDel.
- }
- break;
- case "AV": //출력전압 이상
- {
- Logmessage = "출력전압 이상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "24 VOLTAGE ABNORMAL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- case "NV": //출력전압 정상
- {
- Logmessage = "출력전압 정상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "24 VOLTAGE NORMAL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);//2010.10.29,k.s.d, message level bug fix => MessageProcess before EventLogDel.
- }
- break;
- case "AR": //예비전원 이상
- {
- Logmessage = "예비전원 이상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "RESERVE POWER ABNORMAL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- // cyim 2015.3.31 예비전원 테스트시 오류나면 초기화
- main.Battery_TestError = true;
- if (main.Form_Active_frmDriveTest == true)
- main.ShowBatteryTestForm(false);
- }
- break;
- case "NR": //예비전원 정상
- {
- Logmessage = "예비전원 정상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "RESERVE POWER NORMAL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOff;
- // main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);//2010.10.29,k.s.d, message level bug fix => MessageProcess before EventLogDel.
- // cyim 2015.3.31 예비전원 테스트시 오류나면 초기화
- main.Battery_TestError = false;
- }
- break;
- case "AA": //교류전원 이상
- {
- Logmessage = "교류전원 이상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "ALTERNATING POWER ABNORMAL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- // cyim 2015.3.31 예비전원 테스트시 오류나면 초기화
- main.AC_TestError = true;
- if (main.Form_Active_frmDriveTest == true)
- main.ShowBatteryTestForm(false);
- }
- break;
- case "NA": //교류전원 정상
- {
- Logmessage = "교류전원 정상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "ALTERNATING POWER NORMAL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOff;
- // main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);//2010.10.29,k.s.d, message level bug fix => MessageProcess before EventLogDel.
- // cyim 2015.3.31 예비전원 테스트시 오류나면 초기화
- main.AC_TestError = false;
- }
- break;
- case "OP": //전화설정
- {
- Logmessage = "전화설정";
- message = String.Format("{0}", EventTypeName(resData.EventType, "PHONE ON!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.PhoneOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //화면에 메세지 표시--전화
- main.MessageProcess(eventLog);
- }
- break;
- case "XP": //전화해제
- {
- Logmessage = "전화해제";
- message = String.Format("{0}", EventTypeName(resData.EventType, "PHONE OFF!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.PhoneOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--전화
- main.MessageProcess(eventLog);//2010.10.29,k.s.d, message level bug fix => MessageProcess before EventLogDel.
- }
- break;
- case "OT": //발신기설정-IO보드-화재ON
- {
- Logmessage = "발신기설정-IO보드-화재ON";
- message = String.Format("{0}", EventTypeName(resData.EventType, "TRANSMITTER ON!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FireOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //2010.11.12,k.s.d, when 발신기 input, fire display bug fix.
- //화재내역-제1보,2보에 표시
- //main.Display_FireEventComboAdd(string.Format("[{0}] {1}", eventLog.Message, eventLog.DeviceMessage), eventLog.EventId);
- //화면에 메세지 표시--화재
- //main.MessageProcess(eventLog);
- }
- break;
- case "XT": //발신기해제-IO보드-화재OFF
- {
- Logmessage = "발신기해제-IO보드-화재OFF";
- message = String.Format("{0}", EventTypeName(resData.EventType, "TRANSMITTER OFF!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FireOff;
- // main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- //2010.11.12,k.s.d, when 발신기 input, fire display bug fix.
- //화재내역-제1보,2보 삭제
- //main.Display_FireEventComboDel(eventLog.EventId);
- // 이벤트 추가
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--화재
- //main.MessageProcess(eventLog);//2010.10.29,k.s.d, message level bug fix => MessageProcess before EventLogDel.
- }
- break;
- case "SP": //화면좌표설정버튼
- {
- message = String.Format("{0}", EventTypeName(resData.EventType, "KEY PAD SCREEN POSITION BUTTON!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.Normal;
- // cyim 2014.4.10 칼리브레이션 프로그램 실행 변경
- // 이전 수신기에서 사용할수도 있으므로 터치칼리브레이션 프로그램 실행은 파일 존재 여부에 따라 실행되도록 한다
- //
- char[] separater = { '.' };
- string Old_Calibrator_Path = Environment.CurrentDirectory + "\\";
- string Old_Calibrator_File = "monitor_cal.exe";
- string[] Old_Calibrator_Files = Old_Calibrator_File.Split(separater);
- string Middle_Calibrator_Path = "C:\\Program Files\\UPDD\\";
- string Middle_Calibrator_File = "TBCALIB.EXE";
- string[] Middle_Calibrator_Files = Middle_Calibrator_File.Split(separater);
- string New_Calibrator_Path = "C:\\Program Files (x86)\\eGalaxTouch\\"; // LCH 2018.02.27 : 경로 수정됨
- string New_Calibrator_File = "xAuto4PtsCal.exe";//"DMC_MSTP.exe"; // cyim 2014.7.7 : 화면좌표가 곧바로 출력되도록 CMD 명령을 변경, // LCH 2018.02.27 : 파일명 수정됨
- string[] New_Calibrator_Files = New_Calibrator_File.Split(separater);
- if (System.IO.File.Exists(Old_Calibrator_Path + Old_Calibrator_File) == true)
- {
- // cyim 2014.5.8 : 프로세스 삭제 코드 추가
- _Diagnostics.Process_Kill(Old_Calibrator_Files[0]);
- Thread.Sleep(1000);
- Process myProcess = new Process();
- myProcess.StartInfo.FileName = @Old_Calibrator_Files[0];
- myProcess.StartInfo.CreateNoWindow = false;
- myProcess.Start();
- }
- else if (System.IO.File.Exists(Middle_Calibrator_Path + Middle_Calibrator_File) == true) // LCH 2018.06.08 : 추가함
- {
- _Diagnostics.Process_Kill(Middle_Calibrator_Files[0]);
- Thread.Sleep(1000);
- Process myProcess = new Process();
- myProcess.StartInfo.WorkingDirectory = Middle_Calibrator_Path;
- myProcess.StartInfo.FileName = Middle_Calibrator_Files[0];
- myProcess.StartInfo.CreateNoWindow = false;
- myProcess.Start();
- }
- else if (System.IO.File.Exists(New_Calibrator_Path + New_Calibrator_File) == true)
- {
- // cyim 2014.5.8 : 프로세스 삭제 코드 추가
- _Diagnostics.Process_Kill(New_Calibrator_Files[0]);
- Thread.Sleep(1000);
- Process myProcess = new Process();
- myProcess.StartInfo.WorkingDirectory = New_Calibrator_Path;
- myProcess.StartInfo.FileName = New_Calibrator_File;
- myProcess.StartInfo.Arguments = "/DEV:USB /ID:0"; // cyim 2014.7.7 : 화면좌표가 곧바로 출력되도록 CMD 명령을 변경
- myProcess.StartInfo.CreateNoWindow = false;
- myProcess.Start();
- }
- Logmessage = "키패드 화면좌표 설정 버튼 누름";
- //이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID); // sdkim, 20110406, Event Confirm function Delete
- }
- break;
- case "MS": //주음향정지버튼
- {
- message = String.Format("{0}", EventTypeName(resData.EventType, "KEY PAD MAIN SOUND OFF BUTTON!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.Normal;
- //이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID); // sdkim, 20110406, Event Confirm function Delete
- //resData.Count : 1-정지,0-사용
- if (resData.Count > 0) dev_use_flag = "N"; else dev_use_flag = "Y";
- dacDeviceConfig.DeviceType_Flag_Update(QUERYMode.update, "OA", dev_use_flag);
- // cyim 2015.7.9 PreFire 주음향정지
- dacDeviceConfig.DeviceType_Flag_Update(QUERYMode.update, "WA", dev_use_flag);
- this.main.SetLikageBtnStatus(); // 주음향정지버튼
- // cyim 2015.2.10 주음향 버튼 실행
- main.CommandLog(MappingStatus.Log, string.Format("키패드 주음향 버튼 누름 [{0}]", dev_use_flag));
- }
- break;
- case "LS": //지구음향정지버튼
- {
- message = String.Format("{0}", EventTypeName(resData.EventType, "KEY PAD LOCAL SOUND OFF BUTTON!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.Normal;
- //이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID); // sdkim, 20110406, Event Confirm function Delete
- //resData.Count : 1-정지,0-사용
- if (resData.Count > 0) dev_use_flag = "N"; else dev_use_flag = "Y";
- dacDeviceConfig.DeviceType_Flag_Update(QUERYMode.update, "OB", dev_use_flag);
- this.main.SetLikageBtnStatus(); // 지구음향정지버튼
- // cyim 2015.2.10 지구음향 버튼 실행
- main.CommandLog(MappingStatus.Log, string.Format("키패드 지구음향 버튼 누름 [{0}]", dev_use_flag));
- }
- break;
- case "EB": //비상방송정지버튼
- {
- message = String.Format("{0}", EventTypeName(resData.EventType, "KEY PAD EMERGENCY BROADCASTING OFF BUTTON!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.Normal;
- //이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID); // sdkim, 20110406, Event Confirm function Delete
- //resData.Count : 1-정지,0-사용
- if (resData.Count > 0) dev_use_flag = "N"; else dev_use_flag = "Y";
- dacDeviceConfig.DeviceType_Flag_Update(QUERYMode.update, "OC", dev_use_flag);
- this.main.SetLikageBtnStatus(); // 비상방송정지버튼
- // cyim 2015.2.10 비상방송 버튼 실행
- main.CommandLog(MappingStatus.Log, string.Format("키패드 비상방송 버튼 누름 [{0}]", dev_use_flag));
- }
- break;
- case "RP": //예비전원시험버튼
- {
- message = String.Format("{0}", EventTypeName(resData.EventType, "KEY PAD RESERVE POWER EXAM BUTTON!"));
- SetEventMsg(eventLog, MappingStatus.Normal, message, false, true); //이벤트메세지값 넣기
- //this.main.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 예비전원 시험버튼과 설비연동은 아무 상관이 없다.
- // cyim 2013.8.21 키패드->예비전원테스트버튼 누르는 경우 화면 전환안되는 문제 수정 : 설비연동과 동일하게 순서조절
- if (resData.Count > 0)
- {
- main.ShowBatteryTestForm(true);
- }
- else
- {
- main.ShowBatteryTestForm(false);
- }
- //eventLog.Message = message;
- //eventLog.EventStatus = MappingStatus.Normal;
- ////이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID);
- }
- break;
- case "ED": // cyim 2016.12.09 : IFC3300에서는 예비전원버튼 -> 설비전체연동조작버튼
- {
- message = String.Format("{0}", EventTypeName(resData.EventType, "KEY PAD EQUIPMENT ALL OPERATION BUTTON!"));
- SetEventMsg(eventLog, MappingStatus.Normal, message, false, true); //이벤트메세지값 넣기
- // resData.Count 0 : 연동 , 1 : 정지
- // cyim 2016.12.13 : 차후에는 모두 전체, 모두 연동에 관련 루틴이 존재할수도있다. 두번째 파라미터는 단순히 키패드에서 발생한 이벤트임을 구분하는 용도일뿐이다.
- if (resData.Count > 0)
- {
- Logmessage = "키패드 설비연동[모두정지] 버튼 누름";
- }
- else
- {
- Logmessage = "키패드 설비연동[모두연동] 버튼 누름";
- }
- main.ShowControlWrite(false, 1);
- }
- break;
- case "FR": //화재복구버튼
- {
- FR_ONOFF = true;
- MDIParent mdi = main;
- message = String.Format("{0}", EventTypeName(resData.EventType, "KEY PAD FIRE RECOVER BUTTON!"));
- SetEventMsg(eventLog, MappingStatus.FireRecovery, message, false, true); //이벤트메세지값 넣기
- //eventLog.Message = message;
- //eventLog.EventStatus = MappingStatus.FireRecovery;
- main.EventLogAdd(eventLog);
- main.CloseChildForm();//2010.11.08, k.s.d , if fire reset button input, all child window close.
- this.main.ShowMessageForm3(MappingStatus.DemonInit, "화재 복구 버튼", "복구 시작");
- //화면에 메세지 표시--화재
- //main.MessageProcess(eventLog);//2010.11.11,k.s.d, when 화재복구 input, alram message bug fix.
- main.FireReset_Process();//2010.10.29, k.s.d , demon db reset cmd by T.E.I(UB)
- //this.main.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 화재 복구한다고 해서 설비연동이 변경되는 것은 아니다. 당연히 필요없다
- ////이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID);
- // cyim 2015.2.10 복구버튼 실행
- main.CommandLog(MappingStatus.Log, string.Format("키패드 화재복구 버튼 누름"));
- if (FR_ONOFF) //19.04.09 초기화 폼 일찍 오류 삭제 : 화재 복구 - "BS" 단계에서 초기화폼 닫기
- {
- ThreadStart th = new ThreadStart(formclose);
- Thread CloseThread = new Thread(th);
- CloseThread.Start();
- }
- }
- break;
- case "EC": //설비연동화면버튼
- {
- message = String.Format("{0}", EventTypeName(resData.EventType, "KEY PAD EQUIPMENT CONFIGURATION BUTTON!"));
- SetEventMsg(eventLog, MappingStatus.Normal, message, false, true); //이벤트메세지값 넣기
- //eventLog.Message = message;
- //eventLog.EventStatus = MappingStatus.Normal;
- ////이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID);
- Logmessage = "키패드 설비연동화면 버튼 누름";
- //this.main.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 이미 설비연동화면 버튼을 누르기전 MDIParent 창이 load 되는 시점이 이미 읽었는데?
- main.ShowControlWrite(false, 0); // cyim 2015.8.18 주경종정지 기능 추가 : 기본값은 false
- }
- break;
- case "PO": //통신(POLLING) 시작
- {
- Logmessage = "통신(POLLING) 시작";
- message = String.Format("{0}", EventTypeName(resData.EventType, "POLLING ON!"));
- SetEventMsg(eventLog, MappingStatus.Normal, message, false, true); //이벤트메세지값 넣기
- //eventLog.Message = message;
- //eventLog.EventStatus = MappingStatus.Normal;
- ////이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID);
- //this.main.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 통신데몬 통신상태와 메뉴 인덱스 갱신이 무슨 상관이 있나
- }
- break;
- case "PF": //통신(POLLING) 종료
- {
- Logmessage = "통신(POLLING) 종료";
- message = String.Format("{0}", EventTypeName(resData.EventType, "POLLING OFF!"));
- SetEventMsg(eventLog, MappingStatus.Normal, message, false, true); //이벤트메세지값 넣기
- //eventLog.Message = message;
- //eventLog.EventStatus = MappingStatus.Normal;
- ////이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID);
- //this.main.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 통신데몬 통신상태와 메뉴 인덱스 갱신이 무슨 상관이 있나
- }
- break;
- case "V2": //24 전압 변경
- {
- Logmessage = "24 전압 변경";
- float vol = (float)resData.Count / 100;
- main.Display_24Voltage(vol);
- message = String.Format("[{0}] {1:00.00}V", EventTypeName(resData.EventType, "24 전압 변경"), vol);
- SetEventMsg(eventLog, MappingStatus.Normal, message, false, true); //이벤트메세지값 넣기
- //eventLog.Message = message;
- //eventLog.EventStatus = MappingStatus.Normal;
- ////이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID);
- }
- break;
- case "BS": //통신보드 통신상태 16개 전체
- {
- Logmessage = "통신보드 통신상태 16개 전체";
- string[] status = resData.BoardConnStatus;
- message = "";
- //main.CloseChildForm_Except_InitForm();
- // cyim 2016.12.07 : 수신기 모델별 내부 로직 변경
- int boardID_cnt = 0;
- // cyim 2017.01.12 : IFC3300 은 통신보드 0번이 존재한다
- if (main.ReceiverModel == "IFC3300")
- {
- boardID_cnt = 65;
- }
- else
- {
- boardID_cnt = 16;
- }
- // cyim 2016.11.03 : 통신보드(중계반)는 최대 64
- for (int i = 0; i < boardID_cnt; i++)
- {
- if (i < status.Length)
- message += status[i];
- }
- message = string.Format("통신보드 통신상태:{0}", message);
- SetEventMsg(eventLog, MappingStatus.Normal, message, false, true); //이벤트메세지값 넣기
- //eventLog.Message = message;
- //eventLog.EventStatus = MappingStatus.Normal;
- ////이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID);
- }
- break;
- case "BF": //부저정지
- {
- message = String.Format("[{0}] ", "부저정지");
- SetEventMsg(eventLog, MappingStatus.Normal, message, false, true); //이벤트메세지값 넣기
- //eventLog.Message = message;
- //eventLog.EventStatus = MappingStatus.Normal;
- //이벤트 로그 Confirm Update
- //UpdateEventMessage(resData.EventLogID);
- //this.main.SetLikageBtnStatus(); // cyim 2015.7.7 속도개선작업 : 부저정지버튼과 설비연동은 아무 상관이 없다
- // cyim 2015.2.10 부저정지 버튼 실행
- if (resData.Count > 0)
- {
- main.CommandLog(MappingStatus.Log, string.Format("키패드 부저정지 버튼 누름"));
- }
- else
- {
- main.CommandLog(MappingStatus.Log, string.Format("키패드 부저연동 버튼 누름"));
- }
- }
- break;
- case "RA": //축적재설정
- {
- Logmessage = "축적재설정";
- message = String.Format("{0}", EventTypeName(resData.EventType, "FIRE ACCUMULATION RESTART ON!"));
- SetEventMsg(eventLog, MappingStatus.Normal, message, true, true); //이벤트메세지값 넣기
- main.EventLogAdd(eventLog);
- main.Accumulate_ReStart(resData.Count); //축적모드 시작
- }
- break;
- case "BA": //통신보드루프교류전원이상
- {
- Logmessage = "통신보드 루프 교류전원 이상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "ALTERNATING POWER ABNORMAL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- case "BR": //통신보드루프예비전원이상
- {
- Logmessage = "통신보드 루프 예비전원 이상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "RESERVE POWER ABNORMAL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //803,000원 입니다 국민 086 25 0022 193 김상억
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- }
- break;
- case "BN": //통신보드루프정상
- {
- Logmessage = "통신보드 루프 정상";
- message = String.Format("{0}", EventTypeName(resData.EventType, "POWER NORMAL!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOff;
- //main.EventLogAdd(eventLog); // cyim 2015.7.7 이벤트 정리
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);//2010.10.29,k.s.d, message level bug fix => MessageProcess before EventLogDel.
- }
- break;
- case "DB": //통신데몬초기화 시작
- {
- Logmessage = "통신데몬 초기화 시작";
- this.main.ShowMessageForm3(MappingStatus.DemonInit, "통신데몬초기화 시작", "초기화 시작");
- this.main.ClaerAllEventListAndCount();
- }
- break;
- case "DE": //통신데몬초기화 종료
- {
- Logmessage = "통신데몬 초기화 종료";
- if (!FR_ONOFF) //19.04.09 초기화 폼 일찍 오류 삭제 : 화재 복구 - "BS" 단계에서 초기화폼 닫기
- {
- main.CloseMessageForm3();
- main.CloseChildForm();
- }
- }
- break;
- case "MC": //통신데몬초기화 종료
- {
- //main.CloseMessageForm3();
- }
- break;
- case "XC": //비상방송 이상
- {
- Logmessage = "비상방송 이상";
- // cyim 2014.5.15 : 비상방송통신이상 무시
- if (Check_Emergency_Port_Enable() == true)
- {
- message = String.Format("{0}", EventTypeName(resData.EventType, "비상방송 통신 이상!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOn;
- //Live 메세지 생성
- eventLog.LiveMsgFlag = true;
- // 이벤트 추가
- main.EventLogAdd(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);
- this.main.SetEmergencyBroadCastSetatus(false);
- // cyim 2015.2.10 비상방송 연결 상태 체크
- main.CommandLog(MappingStatus.Log, string.Format("비상방송 연결 실패"));
- }
- }
- break;
- case "OC": //비상방송 정상
- {
- Logmessage = "비상방송 정상";
- // cyim 2014.5.15 : 비상방송통신이상 무시
- if (Check_Emergency_Port_Enable() == true)
- {
- message = String.Format("{0}", EventTypeName(resData.EventType, "비상방송 통신 정상!"));
- eventLog.Message = message;
- eventLog.EventStatus = MappingStatus.FaultOff;
- //main.EventLogAdd(eventLog);// cyim 2015.7.7 이벤트 정리
- // 이벤트 삭제
- main.EventLogDel(eventLog);
- //화면에 메세지 표시--FAULT
- main.MessageProcess(eventLog);//2010.10.29,k.s.d, message level bug fix => MessageProcess before EventLogDel.
- this.main.SetEmergencyBroadCastSetatus(true);
- // cyim 2015.2.10 비상방송 연결 상태 체크
- main.CommandLog(MappingStatus.Log, string.Format("비상방송 연결 정상"));
- }
- }
- break;
- //
- // cyim 2013.8.20 이벤트 타입명 신규 추가 (DB기반으로 변경)
- //
- case "P1": //주펌프 자동모드 해제
- {
- Logmessage = "주펌프 자동모드 해제";
- main.Pump_1 = 0;
- main.LEDList.Add(main.EventTypeName.Hash_EventType["P1"].ToString());
- }
- break;
- case "P2": //주펌프 자동모드 복구
- {
- Logmessage = "주펌프 자동모드 복구";
- main.Pump_1 = 1;
- main.LEDList.Remove(main.EventTypeName.Hash_EventType["P1"].ToString());
- }
- break;
- case "P3": //보조폄프 자동모드 해제
- {
- Logmessage = "보조폄프 자동모드 해제";
- main.Pump_2 = 0;
- main.LEDList.Add(main.EventTypeName.Hash_EventType["P3"].ToString());
- }
- break;
- case "P4": //보조펌프 자동모드 복구
- {
- Logmessage = "보조펌프 자동모드 복구";
- main.Pump_2 = 1;
- main.LEDList.Remove(main.EventTypeName.Hash_EventType["P3"].ToString());
- }
- break;
- case "P5": //충압펌프 자동모드 해제
- {
- Logmessage = "충압펌프 자동모드 해제";
- main.Pump_3 = 0;
- main.LEDList.Add(main.EventTypeName.Hash_EventType["P5"].ToString());
- }
- break;
- case "P6": //충압펌프 자동모드 복구
- {
- Logmessage = "충압펌프 자동모드 복구";
- main.Pump_3 = 1;
- main.LEDList.Remove(main.EventTypeName.Hash_EventType["P5"].ToString());
- }
- break;
- case "S1": //주 스프링클러 자동모드 해제
- {
- Logmessage = "주 스프링클러 자동모드 해제";
- main.Pump_4 = 0;
- main.LEDList.Add(main.EventTypeName.Hash_EventType["S1"].ToString());
- }
- break;
- case "S2": //주 스프링클러 자동모드 복구
- {
- Logmessage = "주 스프링클러 자동모드 복구";
- main.Pump_4 = 1;
- main.LEDList.Remove(main.EventTypeName.Hash_EventType["S1"].ToString());
- }
- break;
- case "S3": //보조 스프링클러 자동모드 해제
- {
- Logmessage = "보조 스프링클러 자동모드 해제";
- main.Pump_5 = 0;
- main.LEDList.Add(main.EventTypeName.Hash_EventType["S3"].ToString());
- }
- break;
- case "S4": //보조 스프링클러 자동모드 복구
- {
- Logmessage = "보조 스프링클러 자동모드 복구";
- main.Pump_5 = 1;
- main.LEDList.Remove(main.EventTypeName.Hash_EventType["S3"].ToString());
- }
- break;
- case "S5": //충압 스프링클러 자동모드 해제
- {
- Logmessage = "충압 스프링클러 자동모드 해제";
- main.Pump_6 = 0;
- main.LEDList.Add(main.EventTypeName.Hash_EventType["S5"].ToString());
- }
- break;
- case "S6": //충압 스프링클러 자동모드 복구
- {
- Logmessage = "충압 스프링클러 자동모드 복구";
- main.Pump_6 = 1;
- main.LEDList.Remove(main.EventTypeName.Hash_EventType["S5"].ToString());
- }
- break;
- case "P7":
- {
- Logmessage = "ETC PUMP STOP";
- main.Pump_7 = 0;
- main.LEDList.Add(main.EventTypeName.Hash_EventType["P7"].ToString());
- }
- break;
- case "P8":
- {
- Logmessage = "ETC PUMP AUTO";
- main.Pump_7 = 1;
- main.LEDList.Remove(main.EventTypeName.Hash_EventType["P7"].ToString());
- }
- break;
- case "S7":
- {
- Logmessage = "ETC SPRINKLER STOP";
- main.Pump_8 = 0;
- main.LEDList.Add(main.EventTypeName.Hash_EventType["S7"].ToString());
- }
- break;
- case "S8":
- {
- Logmessage = "ETC SPRINKLER AUTO";
- main.Pump_8 = 1;
- main.LEDList.Remove(main.EventTypeName.Hash_EventType["S7"].ToString());
- }
- break;
- // cyim 2017.01.18 : 신규 스위치 정보 표시
- case "PA": main.Pump_1 = 2; Logmessage = "MAIN PUMP MANUAL"; break;
- case "PB": main.Pump_2 = 2; Logmessage = "SUB PUMP MANUAL"; break;
- case "PC": main.Pump_3 = 2; Logmessage = "ADD PUMP MANUAL"; break;
- case "PD": main.Pump_4 = 2; Logmessage = "MAIN SPRINKLER MANUAL"; break;
- case "SA": main.Pump_5 = 2; Logmessage = "SUB SPRINKLER MANUAL"; break;
- case "SB": main.Pump_6 = 2; Logmessage = "ADD SPRINKLER MANUAL"; break;
- case "SC": main.Pump_7 = 2; Logmessage = "ETC PUMP MANUAL"; break;
- case "SD": main.Pump_8 = 2; Logmessage = "ETC SPRINKLER MANUAL"; break;
- case "EW": //설비출력상태 ON
- {
- Logmessage = "설비출력상태 ON";
- }
- break;
- case "EF": //설비출력상태 ON
- {
- Logmessage = "설비출력상태 OFF";
- }
- break;
- default:
- message = "";
- break;
- }
- // cyim 2013.7.19 속도개선작업 : 상위 루틴과 중복되며 이 루틴을 제거하여 필요한 이벤트에서만 갱신하도록 한다.
- // this.main.SetLikageBtnStatus();
- Util.LogWrite(string.Format("이벤트ID:{0} EventStatus:{1} Message:{2} Count:{3} 회로:{4}"
- , eventLog.EventId, eventLog.EventStatus, eventLog.Message, resData.Count, eventLog.DeviceMessage)); //명령 로그에 저장
- string tempstring = eventLog.EventId;
- string tempdate;
- if (tempstring.Substring(0, 17) == "00000000000000000")
- {
- tempdate = eventLog.eventTime.ToString("yyyy-MM-dd HH:mm:ss.fff");
- }
- else
- {
- tempdate = DateTime.ParseExact(tempstring.Substring(0, 17), "yyyyMMddHHmmssfff", null).ToString("yyyy-MM-dd HH:mm:ss.fff");
- }
- //string tempmode = tempstring.Substring(19);
- string tempmode = "[EventType: " + eventLog.EventType + ", ReceiverID: " + eventLog.ReceiverID
- + ", CommID: " + eventLog.CommId + ", BoardNo: " + eventLog.BoardNo
- + ", LoopNo: " + eventLog.LoopNo + ", RepeaterNo: " + eventLog.RepeaterNo
- + ", DeviceId: " + eventLog.DeviceId + ", InoutType: " + eventLog.InoutType + "]";
- if (Logmessage != "")
- {
- if (Logmessage.Substring(0, 4) == "키패드 ")
- {
- LFC.Log("타입: 키패드 조작 로그, 메세지: " + Logmessage + ", 시간: [" + tempdate + "], 정보: " + tempmode);
- }
- else
- {
- LFC.Log("타입: 이벤트 로그, 메세지: " + Logmessage + ", 시간: [" + tempdate + "], 정보: " + tempmode);
- }
- }
- //Debug.WriteLine(message);
- }
- catch (Exception ex)
- {
- LFC.Log("타입: MsgDisplay 에러, 메세지: " + ex);
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- private static DateTime Delay(int MS)
- {
- DateTime ThisMoment = DateTime.Now;
- TimeSpan duration = new TimeSpan(0, 0, 0, 0, MS);
- DateTime AfterWards = ThisMoment.Add(duration);
- while (AfterWards >= ThisMoment)
- {
- System.Windows.Forms.Application.DoEvents();
- ThisMoment = DateTime.Now;
- }
- return DateTime.Now;
- }
- //이벤트 메세지 값 설정
- private void SetEventMsg(EventLogInfo eventLog, MappingStatus sta, String msg, bool liveMsgYes, bool ConfirmYes)
- {
- try
- {
- eventLog.Message = msg;
- eventLog.EventStatus = sta;
- eventLog.LiveMsgFlag = liveMsgYes; //Live 메세지 생성
- //main.EventLogAdd(eventLog);
- if (ConfirmYes)
- {
- //이벤트 로그 Confirm Update
- //UpdateEventMessage(eventLog.EventId); // sdkim, 20110406, Event Confirm function Delete
- }
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- //return eventLog;
- }
- //이벤트 타입이름 return
- public string EventTypeName(String type, String unknowMsg)
- {
- string msg = unknowMsg;
- try
- {
- //DacUIProcess dacUIProcess = new DacUIProcess();
- //msg = dacUIProcess.Event_TypeName_Select(type);
- //if (m_DataTable == null)
- //{
- // DacUIProcess dacUIProcess = new DacUIProcess();
- // m_DataTable = dacUIProcess.Event_Type_Table_Select(null); // sdkim, 20110406, Event_Type Table Data Pre Load
- //}
- //foreach (DataRow dr in m_DataTable.Rows)
- //{ // sdkim, 20110406, Event_Type Table Data Pre Load
- // String _event_type_ = Convert.ToString(dr["EVENT_TYPE"]);
- // if (_event_type_ == type)
- // {
- // msg = Convert.ToString(dr["EVENT_TYPE_NAME"]);
- // }
- //}
- // cyim 2013.8.8 이벤트 타입명 해쉬테이블로 변환 (상단 모두 주석 처리)
- msg = main.EventTypeName.Hash_EventType[type].ToString();
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //MessageBox.Show(ex.Message, Application.ProductName);
- //MessageBox.Show(string.Format("[{0}]\r\n{1}", ex.Message, ex.Source), Application.ProductName);
- }
- return msg;
- }
- //이벤트 로그 메세지 confrim
- private void UpdateEventMessage(string event_id)
- {
- try
- {
- DacUIProcess dacUIProcess = new DacUIProcess(this.myReceiverID);
- dacUIProcess.Event_Log_UPDATE(QUERYMode.update, event_id, "Y", "[FPER]");
- //main.EventLogConfirm(event_id, "Y", DateTime.Now);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- //이벤트 로그 메세지 생성
- private EventLogInfo CreateEventMessage(RCVData_ReadNotifyStatus resData)
- {
- EventLogInfo eventLogInfo = null;
- try
- {
- //화재이벤트 내역 가져오기
- //DacUIProcess dacUIProcess = new DacUIProcess();
- //if (resData.EventLogID == "000000000000000000000000000000000") {
- // //main.ShowMessageForm3(MappingStatus.DemonInit, "통신데몬초기화 시작", "초기화 시작");
- // int tick = Environment.TickCount;
- // DataTable dtLastLog = dacUIProcess.SelectLastLog(resData.Receiver_id, resData.Comm_id, resData.Board_id, resData.Loop_no, resData.Repeater_id
- // , resData.Device_id, resData.Device_type, resData.EventType);
- // if (dtLastLog.Rows.Count > 0) {
- // DataRow dr = dtLastLog.Rows[0];
- // resData.EventLogID = dr["EVENT_ID"].ToString();
- // }
- // //Util.UDebugMessage(string.Format("CreateEventMessage GetFromDB tick = {0}, EventID = , {1} / 000000000000000000000000000000000 ", Environment.TickCount - tick, resData.EventLogID), 0, 0);
- //}
- //DataTable dt = dacUIProcess.Event_Log_Select(resData.EventLogID);
- eventLogInfo = new EventLogInfo(resData.EventLogID);
- if (resData.EventLogID == "000000000000000000000000000000000")
- {
- eventLogInfo.updated = false;
- if (resData.EventType == "XD")
- {
- eventLogInfo.updated = true;
- }
- eventLogInfo.eventId = string.Format("{0:D19}{1}{2:D2}{3}{4:D2}{5}{6:D3}{7:D2}{8}", 0, resData.EventType, resData.Receiver_id,
- resData.Comm_id, resData.Board_id, resData.Loop_no, resData.Repeater_id, resData.Device_id, resData.Device_type);
- }
- else
- {
- eventLogInfo.updated = true;
- }
- //Util.UDebugMessage(string.Format("CreateEventMessage eventLogInfo.updated = {0} , resData.EventLogID = {1} , resData.EventType = {2} , resData.Count = {3} ", eventLogInfo.updated ,resData.EventLogID, resData.EventType, resData.Count), 0, 0);
- MskDeviceIDString device_str = new MskDeviceIDString(
- resData.Comm_id, resData.Board_id, resData.Loop_no
- , resData.Repeater_id, resData.Device_id, resData.Device_type);
- //if (dt.Rows.Count > 0) {
- // DataRow dr = dt.Rows[0];
- // string event_time = Util.NullToStr(dr["EVENT_TIME"]);
- // if (event_time.Length == 19) {
- // string event_time_s = String.Format("{0}-{1}-{2} {3}:{4}:{5}.{6}", event_time.Substring(0, 4)
- // , event_time.Substring(4, 2), event_time.Substring(6, 2), event_time.Substring(8, 2)
- // , event_time.Substring(10, 2), event_time.Substring(12, 2), event_time.Substring(14));
- // try {
- // DateTime eventTime = DateTime.Parse(event_time_s);
- // //event_time = String.Format("{0:yyyy}-{0:MM}-{0:dd} {0:HH}:{0:mm}:{0:ss}", eventTime);
- // eventLogInfo.EventTime = eventTime;
- // }
- // catch {
- // //날짜 캐스팅 오류났을때 현재 시간으로 설정...
- // eventLogInfo.EventTime = DateTime.Now;
- // }
- // }
- // string eventTypeName = Util.NullToStr(dr["EVENT_TYPE_NAME"]);
- // eventLogInfo.EventTypeName = eventTypeName;
- // int receiver_id = Util.StrToInt(dr["RECEIVER_ID"], 0);
- // int comm_id = Util.StrToInt(dr["COMM_ID"], 0);
- // int board_id = Util.StrToInt(dr["BOARD_ID"], 0);
- // int loop_no = Util.StrToInt(dr["LOOP_NO"], 0);
- // int repeater_id = Util.StrToInt(dr["REPEATER_ID"], 0);
- // int device_id = Util.StrToInt(dr["DEVICE_ID"], 0);
- // eventLogInfo.ReceiverID = receiver_id;
- // eventLogInfo.CommId = comm_id;
- // eventLogInfo.BoardNo = board_id;
- // eventLogInfo.LoopNo = loop_no;
- // eventLogInfo.RepeaterNo = repeater_id;
- // eventLogInfo.DeviceId = device_id;
- // //차단레벨(회로타입차단용) A-All,C-Comm,B-Board,L-Loop,R-중계기,D-회로,I-입력회로,O-출력회로
- // string inout_type = Util.NullToStr(dr["INOUT_TYPE"]);
- // eventLogInfo.InoutType = inout_type;
- // eventLogInfo.DeviceMessage = Util.device_message(inout_type, receiver_id, comm_id, board_id, loop_no, repeater_id, device_id);
- // if (eventLogInfo.DeviceMessage == "") {//2010.11.11,k.s.d, db access bug fix ( retry )
- // eventLogInfo.DeviceMessage = Util.device_message(inout_type, receiver_id, comm_id, board_id, loop_no, repeater_id, device_id);
- // }
- // //eventLogInfo.Confirm_flag = Util.NullToStr(dr["CONFIRM_FLAG"]) == "Y" ? "Y" : "N";
- // //eventLogInfo.Confirm_remark = Util.NullToStr(dr["CONFIRM_REMARK"]);
- // //string confirm_time = Util.NullToStr(dr["CONFIRM_TIME"]);
- // //if (confirm_time.Length > 0)
- // //{
- // // DateTime confirmTime = DateTime.Parse(confirm_time);
- // // eventLogInfo.Confirm_time = confirmTime;
- // //}
- //}
- //else
- {
- //eventLogInfo.DeviceMessage = string.Format("회로번호[{0}]", device_str.MskId);
- string event_time = resData.EventLogID.Substring(0, 19);
- if (event_time.Length == 19)
- {
- string event_time_s = String.Format("{0}-{1}-{2} {3}:{4}:{5}.{6}", event_time.Substring(0, 4)
- , event_time.Substring(4, 2), event_time.Substring(6, 2), event_time.Substring(8, 2)
- , event_time.Substring(10, 2), event_time.Substring(12, 2), event_time.Substring(14));
- try
- {
- if (event_time_s == "0000-00-00 00:00:00.00000")
- eventLogInfo.EventTime = DateTime.Now;
- else
- {
- DateTime eventTime = DateTime.Parse(event_time_s);
- //event_time = String.Format("{0:yyyy}-{0:MM}-{0:dd} {0:HH}:{0:mm}:{0:ss}", eventTime);
- eventLogInfo.EventTime = eventTime;
- }
- }
- catch (Exception ex)
- {
- //날짜 캐스팅 오류났을때 현재 시간으로 설정...
- eventLogInfo.EventTime = DateTime.Now;
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- //string eventTypeName = "";
- //DataTable dt2 = dacUIProcess.Event_Type_Select(resData.EventType);
- //if (dt2.Rows.Count > 0) {
- // eventTypeName = Util.NullToStr(dt2.Rows[0]["EVENT_TYPE_NAME"]);
- //}
- //eventLogInfo.EventTypeName = eventTypeName;
- eventLogInfo.EventType = resData.EventType;
- eventLogInfo.EventTypeName = this.EventTypeName(resData.EventType, "");
- int receiver_id = resData.Receiver_id;
- int comm_id = resData.Comm_id;
- int board_id = resData.Board_id;
- int loop_no = resData.Loop_no;
- int repeater_id = resData.Repeater_id;
- int device_id = resData.Device_id;
- eventLogInfo.ReceiverID = receiver_id;
- eventLogInfo.CommId = comm_id;
- eventLogInfo.BoardNo = board_id;
- eventLogInfo.LoopNo = loop_no;
- eventLogInfo.RepeaterNo = repeater_id;
- eventLogInfo.DeviceId = device_id;
- //차단레벨(회로타입차단용) A-All,C-Comm,B-Board,L-Loop,R-중계기,D-회로,I-입력회로,O-출력회로
- string inout_type = resData.Device_type;
- eventLogInfo.InoutType = inout_type;
- eventLogInfo.DeviceMessage = Util.device_message(inout_type, receiver_id, comm_id, board_id, loop_no, repeater_id, device_id);
- //eventLogInfo.Confirm_flag = "N";
- //eventLogInfo.Confirm_remark = "";
- //string confirm_time = Util.NullToStr(dr["CONFIRM_TIME"]);
- //if (confirm_time.Length > 0)
- //{
- // DateTime confirmTime = DateTime.Parse(confirm_time);
- // eventLogInfo.Confirm_time = confirmTime;
- //}
- }
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //MessageBox.Show(ex.Message, Application.ProductName);
- //MessageBox.Show(string.Format("[{0}]\r\n{1}", ex.Message, ex.Source), Application.ProductName);
- }
- return eventLogInfo;
- }
- public static bool CheckNumber(string letter)
- {
- bool IsCheck = true;
- Regex numRegex = new Regex(@"[0-9]");
- Boolean ismatch = numRegex.IsMatch(letter);
- if (!ismatch)
- {
- IsCheck = false;
- }
- return IsCheck;
- }
- private void formclose()//19.04.09 초기화 폼 일찍 오류 삭제 : 화재 복구 - "BS" 단계에서 초기화폼 닫기
- {
- MDIParent mdi = main;
- int Delay_TimeNocnt = 0;
- int Delay_Timecnt = 0;
- string Delay_Time = _Ini.Read_Ini("PROGRAM", "Delay_Time(sec)", 1024, Environment.CurrentDirectory + "\\Config.ini");
- if (Delay_Time != "")
- {
- LFC.Log("Delay_Time APPLY");
- if (CheckNumber(Delay_Time))
- {
- Delay_TimeNocnt = Convert.ToInt32(Delay_Time);
- LFC.Log("Delay ON");
- LFC.Log("Delay Delay_TimeNocnt : " + '"' + Delay_TimeNocnt + '"');
- Delay(Delay_TimeNocnt * 1000);
- LFC.Log("Delay Delay_TimeNocnt * 1000 : " + '"' + Delay_TimeNocnt * 1000 + '"');
- }
- }
- else
- {
- LFC.Log("Delay_Time NO APPLY");
- Delay_Timecnt = 0;
- ReceiverTypeInfo receiverInfo = mdi.ui.MyReceiverTypeInfo;
- BoardTypeInfo[] boardInfos = receiverInfo.MyBoardType; //전체통신보드
- if (boardInfos != null)
- {
- foreach (BoardTypeInfo brd in boardInfos)
- {
- if (brd != null)
- {
- if (brd.UseFlag)
- {
- // cyim 2016.10.31 : 대용량 수신기용 UI 변경
- if (brd.Loop0UseFlag)
- {
- Delay_Timecnt++;
- }
- if (brd.Loop1UseFlag)
- {
- Delay_Timecnt++;
- }
- if (brd.Loop2UseFlag)
- {
- Delay_Timecnt++;
- }
- if (brd.Loop3UseFlag)
- {
- Delay_Timecnt++;
- }
- }
- }
- }
- }
- if (Delay_Timecnt == 0)
- {
- LFC.Log("Delay ON");
- LFC.Log("Delay Delay_Timecnt : 0");
- Delay(100000);
- LFC.Log("Delay(100000)");
- }
- else
- {
- LFC.Log("Delay ON");
- LFC.Log("Delay Delay_Timecnt : " + '"' + Delay_Timecnt + '"');
- Delay(100000 + (10000 * Delay_Timecnt));
- LFC.Log("Delay(100000 + (10000 * Delay_Timecnt) : " + '"' + (100000 + (10000 * Delay_Timecnt) + '"'));
- }
- }
- LFC.Log("main.CloseMessageForm3()");
- main.CloseMessageForm3();
- main.CloseChildForm();
- FR_ONOFF = false;
- }
- //중계기 전체 읽기 명령 이벤트
- //private event dCommandResponse dResponseRepeaterInfoAlI;
- /*************************************************************************
- * 프로토콜이 보낸 이벤트를 받는 함수
- *************************************************************************/
- public void getEvent(CmdInfo cmd)
- {
- try
- {
- this.eventReceiveTime = Environment.TickCount;
- getResponse(cmd);
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //MessageBox.Show(ex.Message, Application.ProductName);
- //MessageBox.Show(string.Format("[{0}]\r\n{1}", ex.Message, ex.StackTrace), Application.ProductName);
- }
- }
- /****************************************
- * 프로토콜이 보낸 에러를 받는 함수
- ****************************************/
- public void getError(object ErrData)
- {
- try
- {
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- //MessageBox.Show(ex.Message, Application.ProductName);
- //MessageBox.Show(string.Format("[{0}]\r\n{1}", ex.Message, ex.StackTrace), Application.ProductName);
- }
- }
- // cyim 2014.5.15 : 비상방송통신이상 무시, 비상방송 포트 사용중인경우에만 표시
- public bool Check_Emergency_Port_Enable()
- {
- bool result = false;
- DacCommConfig dacCommConfig = new DacCommConfig(main.myReceiverID);
- DataTable dt = dacCommConfig.Comm_Select(main.myReceiverID, 0, null);
- if (dt.Rows.Count > 0)
- {
- foreach (DataRow dr in dt.Rows)
- {
- COMMLOOP commloop = (COMMLOOP)Enum.Parse(typeof(COMMLOOP), dr["COMM_LOOP"].ToString());
- if (commloop == COMMLOOP.BroadCast)
- {
- result = dr["USE_FLAG"].ToString() == "Y" ? true : false;
- break;
- }
- }
- }
- return result;
- }
- }
- }
|