123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Net;
- using System.Net.Sockets;
- using System.IO;
- using System.Threading;
- using System.Runtime.Serialization.Formatters.Binary;
- using System.Runtime.InteropServices;
- using System.Reflection;
- using System.Diagnostics;
- namespace FPER
- {
- public class Tprotocol
- {// 통신보드 프로토콜 메인 클래스
- private MDIParent main;
- private TSocket tsocket;
- private Paket pkt;
- private CmdInfo cmd;
- private int iDemonPacketReceiveCnt;
- LogFileCreate LFC = new LogFileCreate();
- public Tprotocol(MDIParent main)
- {
- try
- {
- this.main = main;
- this.pkt = new Paket();
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- }
- public int ConnectToDemon(String Dest_ip, int commandPort, int eventPort, int Demon_ID)
- {// 데몬 연결 함수
- int iret = 0;
- try
- {
- iDemonPacketReceiveCnt = 0;
- tsocket = new TSocket(Dest_ip, commandPort, eventPort, Demon_ID, this);
- iret = tsocket.ConnectSocket();
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- return iret;
- }
- public int DisconnectToDemon(int Own_ID, int Demon_ID)
- {// 데몬 연결 해제 함수
- try
- {
- tsocket.Stop_Connection();
- }
- catch (Exception ex)
- {
- Util.UErrorMessage(ex, 0, 0);
- }
- return 0;
- }
- /**********************************************************************************************/
- /* UI명령 */
- /**********************************************************************************************/
- public int getCommand(CmdInfo cmd)
- {
- int ret = 0;
- try
- {
- //Debug.WriteLine(string.Format("+getCommand : 0x{0:x2}", (byte)cmd.Command));
- ////Util.UDebugMessage(((string.Format("getCommand Command = 0x{0:x2} ", (byte)cmd.Command)) + " :" + ret.ToString()),0,0);
- if (tsocket.cmd_Connected)
- {
- this.cmd = cmd;
- switch (cmd.Command)
- {
- case prt_cmd_define.say_hello:
- {
- byte[] bt = pkt.CreatePKT_SayHello_To_Board((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- //ret = SayHello_To_Board((byte)cmd.loopNo,(byte)cmd.boardNo,(byte)cmd.invorkNo,(byte)cmd.receiverID);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.resd_tbd_state:
- {
- byte[] bt = pkt.CreatePKT_ReadBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = ReadBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- //통신보드상태쓰기
- case prt_cmd_define.write_tbd_state:
- {
- TBoardData data = (TBoardData)cmd.CommandData;
- byte[] bt = pkt.CreatePKT_WriteBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID
- , data.RCV_BaudRate, data.TBD_Loop1_BaudRate, data.TBD_Loop2_BaudRate, data.TBD_Term, data.Reset);
- //ret = WriteBoardStatus((byte)cmd.loopNo,(byte)cmd.boardNo,(byte)cmd.invorkNo,(byte)cmd.receiverID,(TBoardData)cmd.CommandData);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.search_repeater_unit:
- {
- byte[] bt = pkt.CreatePKT_SearchRepeaterUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo);
- //ret = SearchRepeaterUNIT((byte)cmd.loopNo,(byte)cmd.boardNo,(byte)cmd.invorkNo,(byte)cmd.receiverID,(byte)cmd.repeaterNo);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.search_repeater_all:
- {
- byte[] bt = pkt.CreatePKT_SearchRepeaterAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = SearchRepeaterAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.read_repeater_all:
- {
- byte[] bt = pkt.CreatePKT_ReadRepeaterPointAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = ReadRepeaterPointAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.write_repeater_output_unit:
- {
- RepeaterData data = (RepeaterData)cmd.CommandData;
- byte[] bt = pkt.CreatePKT_WriteRepeaterOutputUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo
- , data.Repeater_Output);
- //ret = WriteRepeaterOutputUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, (RepeaterData)cmd.CommandData);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.read_repeater_info_all:
- {
- byte[] bt = pkt.CreatePKT_ReadRepeaterInfoAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = ReadRepeaterInfoAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.write_repeater_info_unit:
- {
- RepeaterData data = (RepeaterData)cmd.CommandData;
- byte[] bt = pkt.CreatePKT_WriteRepeaterInfoUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, data.Repeater_Info);
- //ret = WriteRepeaterInfoUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, (RepeaterData)cmd.CommandData);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.write_repeater_info_all:
- { //2010.12.05, k.s.d, repeater information block write.
- RepeaterDataAll data = (RepeaterDataAll)cmd.CommandData;
- byte[] bt = pkt.CreatePKT_WriteRepeaterInfoAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, data);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt)));
- #endif
- break;
- }
- case prt_cmd_define.reset_repeater_unit:
- {
- byte[] bt = pkt.CreatePKT_ResetRepeaterUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo);
- //ret = ResetRepeaterUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.reset_repeater_all:
- {
- // cyim 2013.3.13
- // 입력쓰기 테스트 이후 복구 버튼을 눌러서 중계기 별로 복구하도록 명령한다
- //byte[] bt = pkt.CreatePKT_ResetRepeaterAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- byte[] bt = pkt.CreatePKT_ResetRepeaterAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo);
- //ret = ResetRepeaterAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.write_repeater_input_unit:
- {
- //RepeaterData data = (RepeaterData)cmd.CommandData;
- byte data = (byte)cmd.CommandData;
- byte[] bt = pkt.CreatePKT_WriteRepeaterInputUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, data);
- //ret = WriteRepeaterInputUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, (RepeaterData)cmd.CommandData);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.sayhello_to_ioboard:
- {
- byte[] bt = pkt.CreatePKT_SayHello_To_IOBoard((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = SayHello_To_IOBoard((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.read_ioboard_status:
- {
- byte[] bt = pkt.CreatePKT_ReadIOBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = ReadIOBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.write_ioboard_status:
- {
- IOBoardData data = (IOBoardData)cmd.CommandData;
- byte[] bt = pkt.CreatePKT_WriteIOBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, data.BaudRate, data.Reset);
- //ret = WriteIOBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (IOBoardData)cmd.CommandData);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.read_ioboard_data:
- {
- byte[] bt = pkt.CreatePKT_ReadIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = ReadIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.write_ioboard_data:
- {
- IOBoardData data = (IOBoardData)cmd.CommandData;
- byte[] bt = pkt.CreatePKT_WriteIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, data.OutData_d, data.OutData_u);
- //ret = WriteIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (IOBoardData)cmd.CommandData);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.read_ioboard_point_data:
- {
- byte[] bt = pkt.CreatePKT_ReadIOBoardPointData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.DeviceId);
- //ret = ReadIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.write_ioboard_point_data:
- {
- IOBoardData data = (IOBoardData)cmd.CommandData;
- byte[] bt = pkt.CreatePKT_WriteIOBoardPointData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.DeviceId, data.Reset);
- //ret = WriteIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (IOBoardData)cmd.CommandData);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.sayhello_to_demon:
- {
- byte[] bt = pkt.CreatePKT_SayHello_To_Demon((byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = SayHollo_To_Demon((byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.start_polling:
- {
- byte[] bt = pkt.CreatePKT_StartPolling((byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = SayHollo_To_Demon((byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.stop_polling:
- {
- byte[] bt = pkt.CreatePKT_StopPolling((byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = StopPolling((byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.read_demon_status:
- {
- byte[] bt = pkt.CreatePKT_ReadDemonStatus((byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = ReadDemonStatus((byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- case prt_cmd_define.notify_db_update:
- {
- byte[] bt = pkt.CreatePKT_Notify_DBUpdated((byte)cmd.invorkNo, (byte)cmd.receiverID);
- //ret = NotifyDBUpdated((byte)cmd.invorkNo, (byte)cmd.receiverID);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- //UI명령
- case prt_cmd_define.read_command_status:
- {
- char inoutChar = (char)Util.ToBytes(cmd.Devicetype)[0];
- char commandType1 = (char)Util.ToBytes(cmd.CommandType)[0];
- char commandType2 = (char)Util.ToBytes(cmd.CommandType)[1];
- char cSubType = (char)Util.ToBytes(cmd.SubType)[0];
- char cApplyRange = (char)Util.ToBytes(cmd.ApplyRange)[0];
- byte[] bt = pkt.CreatePKT_ReadCommandStatus((byte)cmd.invorkNo, (byte)cmd.receiverID, cmd.loopNo, cmd.boardNo
- , cmd.repeaterNo, cmd.DeviceId, inoutChar, commandType1, commandType2, cSubType, cApplyRange, cmd.Status, cmd.CommId);
- //ret = ReadCommandStatus((byte)cmd.invorkNo, (byte)cmd.receiverID, cmd.loopNo, cmd.boardNo
- // ,cmd.repeaterNo,cmd.DeviceId,cmd.Devicetype,cmd.CommandType,cmd.Status,cmd.CommId);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- #if _DEBUG
- Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
- #endif
- break;
- }
- // cyim 2015.6.29 아날로그감지기 레벨값 쓰기 명령 프로토콜 추가
- // 설비연동과 동일한 루틴이다. 즉 UI 에서 레벨값을 저장하라고 데몬에게 명령하면, 데몬은 데이타베이스에 저장하고, 응답을 주도록 되어있다
- // 아날로그 감지기 레벨값 쓰기 명령
- case prt_cmd_define.write_analogdetecter_level:
- {
- byte[] bt = pkt.CreatePKT_AnalogDetecterLevel_Write((byte)cmd.invorkNo, (byte)cmd.receiverID, cmd.loopNo, cmd.boardNo
- , cmd.repeaterNo, cmd.AnalogDetecterFault, cmd.AnalogDetecterPreFire, cmd.AnalogDetecterFireNight, cmd.AnalogDetecterFireDay);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- }
- break;
- // cyim 2016.10.27 : 대용량 수신기 아날로그 감지기 트랜드 읽기
- case prt_cmd_define.read_analogdetecter_trend:
- {
- byte[] bt = pkt.CreatePKT_AnalogDetecterTrend_Read((byte)cmd.invorkNo, (byte)cmd.receiverID, cmd.loopNo, cmd.boardNo, cmd.repeaterNo);
- ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
- }
- break;
- // cyim 2016.10.28 : 대용량 수신기 아날로그 감지기 레벨 Block 쓰기
- case prt_cmd_define.write_analogdetecter_level_all:
- {
- RepeaterDataAll data = (RepeaterDataAll)cmd.CommandData;
- data.InvorkNo = (byte)cmd.invorkNo;
- data.ReceiverID = (byte)cmd.receiverID;
- data.Repeater_loop = (byte)cmd.loopNo;
- data.TBD_ID = (byte)cmd.boardNo;
- // LCH 2018.02.27 : 수정됨
- byte[] bt = pkt.CreatePKT_AnalogDetecterLevel_WriteAll((byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.loopNo, (byte)cmd.boardNo, data);
- ret = tsocket.Cmd_Send(bt, bt.Length);//(int)bt[3] + 1);
- }
- break;
- default:
- {
- ret = -3;
- }
- break;
- }
- }
- else
- {
- ret = -1;
- }
- }
- catch (Exception ex)
- {
- ret = -1;
- Util.UErrorMessage(ex, 0, 0);
- }
- return ret;
- }
- /**********************************************************************************************/
- //cmd 소켓연결정보
- public Boolean cmd_Connected { get { return tsocket.cmd_Connected; } }
- //event 소켓연결정보
- public Boolean event_Connected { get { return tsocket.event_Connected; } }
- public int SendDataToDemon(byte[] data, int size)
- {// don't using now. //2010.3.16_moon
- return 0;
- }
- public int SendDataToDemon(String strdata, int size)
- {// don't using now. //2010.3.16_moon
- return 0;
- }
- /**********************************************************************************************/
- /* UI명령 응답 */
- /**********************************************************************************************/
- public int CMDResponceFunc(byte[] cmdbuffer, int rcvSize)
- {
- //Debug.WriteLine("+ CMDResponceFunc ");
- int ret = 0;
- try
- {
- ret = pkt.DoCheckcs(cmdbuffer, rcvSize, cmdbuffer[rcvSize]);
- this.cmd.ResCommand = (prt_res_define)cmdbuffer[4];
- Util.LogWrite(string.Format("명령응답[{0}]{1}", this.cmd.ResCommand, Util.ToHex(cmdbuffer))); //명령 로그에 저장
- //check cs
- if (ret == 1)
- {
- //data setting
- // send to ui
- switch (cmdbuffer[4])
- {
- //응답-정상
- case (byte)prt_res_define.general_ack:
- {
- RCVData_ACK ResponseData = new RCVData_ACK(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-실패
- case (byte)prt_res_define.general_nack:
- {
- RCVData_NACK ResponseData = new RCVData_NACK(cmdbuffer);
- this.cmd.ErrResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-전압읽기
- case (byte)prt_res_define.resd_tbd_state:
- {
- RCVData_ReadTBoardStatus ResponseData = new RCVData_ReadTBoardStatus(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-통신보드 상태쓰기
- case (byte)prt_res_define.write_tbd_state:
- {
- RCVData_WriteTBoardStatus ResponseData = new RCVData_WriteTBoardStatus(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기 검색
- case (byte)prt_res_define.search_repeater_unit:
- {
- RCVData_SearchRepeaterUNIT ResponseData = new RCVData_SearchRepeaterUNIT(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기 전체 읽기
- case (byte)prt_res_define.read_repeater_all:
- case (byte)prt_res_define.read_repeater_all_E1:
- case (byte)prt_res_define.read_repeater_all_E2:
- {
- RCVData_ReadRepeaterPointAll ResponseData = new RCVData_ReadRepeaterPointAll(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기 출력 쓰기
- case (byte)prt_res_define.write_repeater_output_unit:
- {
- RCVData_WriteRepeaterOutputUNIT ResponseData = new RCVData_WriteRepeaterOutputUNIT(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기 정보전체 읽기
- case (byte)prt_res_define.read_repeater_info_all:
- {
- RCVData_ReadRepeaterInfoAll ResponseData = new RCVData_ReadRepeaterInfoAll(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기 정보 쓰기
- case (byte)prt_res_define.write_repeater_info_unit:
- {
- RCVData_WriteRepeaterInfoUNIT ResponseData = new RCVData_WriteRepeaterInfoUNIT(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기입력쓰기
- case (byte)prt_res_define.write_repeater_input_unit:
- {
- RCVData_WriteRepeaterInputUNIT ResponseData = new RCVData_WriteRepeaterInputUNIT(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-io보드상태읽기
- case (byte)prt_res_define.read_ioboard_status:
- {
- RCVData_ReadIOBoardStatus ResponseData = new RCVData_ReadIOBoardStatus(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-io보드 상태쓰기
- case (byte)prt_res_define.write_ioboard_status:
- {
- RCVData_WriteIOBoardStatus ResponseData = new RCVData_WriteIOBoardStatus(cmdbuffer); //2010.4.9_moon
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-io보드데이터읽기
- case (byte)prt_res_define.read_ioboard_data:
- {
- RCVData_ReadIOBoardData ResponseData = new RCVData_ReadIOBoardData(cmdbuffer); //2010.4.9_moon
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-io보드데이터쓰기
- case (byte)prt_res_define.write_ioboard_data:
- {
- RCVData_WriteIOBoardData ResponseData = new RCVData_WriteIOBoardData(cmdbuffer); //2010.4.9_moon
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-데몬상태
- case (byte)prt_res_define.read_demon_status:
- {
- RCVData_ReadDemonStatus ResponseData = new RCVData_ReadDemonStatus(cmdbuffer); //2010.4.9_moon
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-누적카운트 및 기타 UI프로토콜---추가1
- case (byte)prt_res_define.read_command_status:
- {
- this.cmd.ResCommand = prt_res_define.read_command_status;
- RCVData_ReadCommandStatus ResponseData = new RCVData_ReadCommandStatus(cmdbuffer); //2010.4.9_moon
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- // cyim 2015.6.29 아날로그감지기 레벨값 쓰기 명령 프로토콜 추가
- case (byte)prt_res_define.write_analogdetecter_level:
- {
- this.cmd.ResCommand = prt_res_define.write_analogdetecter_level;
- RCVData_WriteAnalogDetecterLevel ResponseData = new RCVData_WriteAnalogDetecterLevel(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- // cyim 2016.10.27 : 대용량 수신기 아날로그 감지기 트랜드 읽기
- case (byte)prt_res_define.read_analogdetecter_trend:
- {
- this.cmd.ResCommand = prt_res_define.read_analogdetecter_trend;
- RCVData_ReadAnalogDetecterTrend ResponseData = new RCVData_ReadAnalogDetecterTrend(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- case (byte)prt_res_define.write_analogdetecter_level_all: // LCH 2018.02.27 : 수정됨
- {
- this.cmd.ResCommand = prt_res_define.write_analogdetecter_level_all;
- RCVData_WriteAnalogDetecterLevel2 ResponseData = new RCVData_WriteAnalogDetecterLevel2(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- default:
- {
- //Debug.WriteLine(" unKnown CMD ");
- ret = -1;
- break;
- }
- }
- }
- if (ret == 2)
- {
- //Debug.WriteLine(string.Format("+CMDResponce Send To UI (getResponse) : 0x{0:x2}", cmdbuffer[4]));
- this.main.ui.getResponse(cmd);
- //Debug.WriteLine(string.Format("-CMDResponce Send To UI (getResponse) : 0x{0:x2}", cmdbuffer[4]));
- }
- else
- {
- //Util.UDebugMessage(("CMDResponceFunc err = " + ret.ToString()),0,0);
- }
- }
- catch (Exception ex)
- {
- ret = -1;
- Util.UErrorMessage(ex, 0, 0);
- }
- //Debug.WriteLine("- CMDResponceFunc ");
- return ret;
- }
- /**********************************************************************************************/
- /**********************************************************************************************/
- /* 이벤트를 UI에게 보내는 함수 */
- /**********************************************************************************************/
- public int EVENTCallFunc(byte[] cmdbuffer, int rcvSize)
- {
- //패킷 받을때 마다 카운트
- this.iDemonPacketReceiveCnt++;
- int ret = 0;
- try
- {
- ret = pkt.DoCheckcs(cmdbuffer, rcvSize, cmdbuffer[rcvSize]);
- //Util.LogWrite(string.Format("이벤트CNT[{0}][{1}]{2}", iDemonPacketReceiveCnt, (prt_res_define)cmdbuffer[4], Util.ToHex(cmdbuffer))); //명령 로그에 저장
- //Util.LogWrite(string.Format("CS:{0}", ret)); //명령 로그에 저장
- if (ret == 1)
- {
- CmdInfo cmd;
- //Debug.WriteLine(string.Format("EVENTCallFunc rcv cmd : 0x{0:x2}", cmdbuffer[4]));
- switch (cmdbuffer[4])
- {
- //응답-정상
- case (byte)prt_res_define.general_ack:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_ACK ResponseData = new RCVData_ACK(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-실패
- case (byte)prt_res_define.general_nack:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_NACK ResponseData = new RCVData_NACK(cmdbuffer);
- cmd.ErrResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-전압읽기
- case (byte)prt_res_define.resd_tbd_state:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_ReadTBoardStatus ResponseData = new RCVData_ReadTBoardStatus(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-통신보드 상태쓰기
- case (byte)prt_res_define.write_tbd_state:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_WriteTBoardStatus ResponseData = new RCVData_WriteTBoardStatus(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기회로 검색
- case (byte)prt_res_define.search_repeater_unit:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_SearchRepeaterUNIT ResponseData = new RCVData_SearchRepeaterUNIT(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기 전체 읽기
- case (byte)prt_res_define.read_repeater_all:
- case (byte)prt_res_define.read_repeater_all_E1:
- case (byte)prt_res_define.read_repeater_all_E2:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[8], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_ReadRepeaterPointAll ResponseData = new RCVData_ReadRepeaterPointAll(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기 출력 쓰기
- case (byte)prt_res_define.write_repeater_output_unit:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_WriteRepeaterOutputUNIT ResponseData = new RCVData_WriteRepeaterOutputUNIT(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기 정보전체 읽기
- case (byte)prt_res_define.read_repeater_info_all:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_ReadRepeaterInfoAll ResponseData = new RCVData_ReadRepeaterInfoAll(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기 정보 쓰기
- case (byte)prt_res_define.write_repeater_info_unit:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_WriteRepeaterInfoUNIT ResponseData = new RCVData_WriteRepeaterInfoUNIT(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-중계기입력쓰기
- case (byte)prt_res_define.write_repeater_input_unit:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_WriteRepeaterInputUNIT ResponseData = new RCVData_WriteRepeaterInputUNIT(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-io보드상태읽기
- case (byte)prt_res_define.read_ioboard_status:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_ReadIOBoardStatus ResponseData = new RCVData_ReadIOBoardStatus(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-io보드 상태쓰기
- case (byte)prt_res_define.write_ioboard_status:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_WriteIOBoardStatus ResponseData = new RCVData_WriteIOBoardStatus(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-io보드데이터읽기
- case (byte)prt_res_define.read_ioboard_data:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_ReadIOBoardData ResponseData = new RCVData_ReadIOBoardData(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-io보드데이터쓰기
- case (byte)prt_res_define.write_ioboard_data:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_WriteIOBoardData ResponseData = new RCVData_WriteIOBoardData(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-데몬상태
- case (byte)prt_res_define.read_demon_status:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_ReadDemonStatus ResponseData = new RCVData_ReadDemonStatus(cmdbuffer);
- this.cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-전체 누적카운트---추가1
- case (byte)prt_res_define.read_command_status:
- {
- cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
- RCVData_ReadCommandStatus ResponseData = new RCVData_ReadCommandStatus(cmdbuffer);
- cmd.ResponseData = ResponseData;
- ret = 2;
- break;
- }
- //응답-상태알림---추가2
- case (byte)prt_res_define.read_notify_staus:
- {
- //
- // CmdInfo 생성자
- //
- cmd = new CmdInfo(
- prt_res_define.read_notify_staus, // prt_res_define res_define,
- (int)cmdbuffer[6], // int receiverID,
- (int)cmdbuffer[1], // int loopNo
- (int)cmdbuffer[2], // int boardNo,
- 0); // int repeaterNo
- //
- // RCVData_ReadNotifyStatus 생성자
- //
- RCVData_ReadNotifyStatus resData = new RCVData_ReadNotifyStatus(cmdbuffer);
- //알람타입을 넘긴다.
- cmd.ResponseData = resData;
- ret = 2;
- break;
- }
- //응답-알수없는명령어
- default:
- {
- cmd = new CmdInfo((prt_res_define)0x00, (int)0x00, 1, (int)0x00, (int)0x00);
- //Debug.WriteLine(" unKnown CMD ");
- ret = -1;
- break;
- }
- }
- Util.LogWrite(string.Format("UI처리결과:{0}", ret)); //명령 로그에 저장
- if (ret == 2)
- {
- ////Debug.WriteLine(string.Format("+EVENT Send To UI (getEvent) : 0x{0:x2}", cmdbuffer[4]));
- this.main.ui.getEvent(cmd);
- ////Debug.WriteLine(string.Format("-EVENT Send To UI (getEvent) : 0x{0:x2}", cmdbuffer[4]));
- }
- }
- if (ret != 2)
- {
- //Debug.WriteLine("EVENTCallFunc err = " + ret.ToString());
- }
- }
- catch (Exception ex)
- {
- ret = -1;
- Util.UErrorMessage(ex, 0, 0);
- }
- //Debug.WriteLine("- EVENTCallFunc ");
- return ret;
- }
- /**********************************************************************************************/
- }
- }
|