Tprotocol.cs 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Net;
  5. using System.Net.Sockets;
  6. using System.IO;
  7. using System.Threading;
  8. using System.Runtime.Serialization.Formatters.Binary;
  9. using System.Runtime.InteropServices;
  10. using System.Reflection;
  11. using System.Diagnostics;
  12. namespace FPER
  13. {
  14. public class Tprotocol
  15. {// 통신보드 프로토콜 메인 클래스
  16. private MDIParent main;
  17. private TSocket tsocket;
  18. private Paket pkt;
  19. private CmdInfo cmd;
  20. private int iDemonPacketReceiveCnt;
  21. LogFileCreate LFC = new LogFileCreate();
  22. public Tprotocol(MDIParent main)
  23. {
  24. try
  25. {
  26. this.main = main;
  27. this.pkt = new Paket();
  28. }
  29. catch (Exception ex)
  30. {
  31. Util.UErrorMessage(ex, 0, 0);
  32. }
  33. }
  34. public int ConnectToDemon(String Dest_ip, int commandPort, int eventPort, int Demon_ID)
  35. {// 데몬 연결 함수
  36. int iret = 0;
  37. try
  38. {
  39. iDemonPacketReceiveCnt = 0;
  40. tsocket = new TSocket(Dest_ip, commandPort, eventPort, Demon_ID, this);
  41. iret = tsocket.ConnectSocket();
  42. }
  43. catch (Exception ex)
  44. {
  45. Util.UErrorMessage(ex, 0, 0);
  46. }
  47. return iret;
  48. }
  49. public int DisconnectToDemon(int Own_ID, int Demon_ID)
  50. {// 데몬 연결 해제 함수
  51. try
  52. {
  53. tsocket.Stop_Connection();
  54. }
  55. catch (Exception ex)
  56. {
  57. Util.UErrorMessage(ex, 0, 0);
  58. }
  59. return 0;
  60. }
  61. /**********************************************************************************************/
  62. /* UI명령 */
  63. /**********************************************************************************************/
  64. public int getCommand(CmdInfo cmd)
  65. {
  66. int ret = 0;
  67. try
  68. {
  69. //Debug.WriteLine(string.Format("+getCommand : 0x{0:x2}", (byte)cmd.Command));
  70. ////Util.UDebugMessage(((string.Format("getCommand Command = 0x{0:x2} ", (byte)cmd.Command)) + " :" + ret.ToString()),0,0);
  71. if (tsocket.cmd_Connected)
  72. {
  73. this.cmd = cmd;
  74. switch (cmd.Command)
  75. {
  76. case prt_cmd_define.say_hello:
  77. {
  78. byte[] bt = pkt.CreatePKT_SayHello_To_Board((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  79. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  80. //ret = SayHello_To_Board((byte)cmd.loopNo,(byte)cmd.boardNo,(byte)cmd.invorkNo,(byte)cmd.receiverID);
  81. #if _DEBUG
  82. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  83. #endif
  84. break;
  85. }
  86. case prt_cmd_define.resd_tbd_state:
  87. {
  88. byte[] bt = pkt.CreatePKT_ReadBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  89. //ret = ReadBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  90. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  91. #if _DEBUG
  92. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  93. #endif
  94. break;
  95. }
  96. //통신보드상태쓰기
  97. case prt_cmd_define.write_tbd_state:
  98. {
  99. TBoardData data = (TBoardData)cmd.CommandData;
  100. byte[] bt = pkt.CreatePKT_WriteBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID
  101. , data.RCV_BaudRate, data.TBD_Loop1_BaudRate, data.TBD_Loop2_BaudRate, data.TBD_Term, data.Reset);
  102. //ret = WriteBoardStatus((byte)cmd.loopNo,(byte)cmd.boardNo,(byte)cmd.invorkNo,(byte)cmd.receiverID,(TBoardData)cmd.CommandData);
  103. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  104. #if _DEBUG
  105. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  106. #endif
  107. break;
  108. }
  109. case prt_cmd_define.search_repeater_unit:
  110. {
  111. byte[] bt = pkt.CreatePKT_SearchRepeaterUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo);
  112. //ret = SearchRepeaterUNIT((byte)cmd.loopNo,(byte)cmd.boardNo,(byte)cmd.invorkNo,(byte)cmd.receiverID,(byte)cmd.repeaterNo);
  113. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  114. #if _DEBUG
  115. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  116. #endif
  117. break;
  118. }
  119. case prt_cmd_define.search_repeater_all:
  120. {
  121. byte[] bt = pkt.CreatePKT_SearchRepeaterAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  122. //ret = SearchRepeaterAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  123. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  124. #if _DEBUG
  125. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  126. #endif
  127. break;
  128. }
  129. case prt_cmd_define.read_repeater_all:
  130. {
  131. byte[] bt = pkt.CreatePKT_ReadRepeaterPointAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  132. //ret = ReadRepeaterPointAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  133. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  134. #if _DEBUG
  135. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  136. #endif
  137. break;
  138. }
  139. case prt_cmd_define.write_repeater_output_unit:
  140. {
  141. RepeaterData data = (RepeaterData)cmd.CommandData;
  142. byte[] bt = pkt.CreatePKT_WriteRepeaterOutputUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo
  143. , data.Repeater_Output);
  144. //ret = WriteRepeaterOutputUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, (RepeaterData)cmd.CommandData);
  145. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  146. #if _DEBUG
  147. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  148. #endif
  149. break;
  150. }
  151. case prt_cmd_define.read_repeater_info_all:
  152. {
  153. byte[] bt = pkt.CreatePKT_ReadRepeaterInfoAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  154. //ret = ReadRepeaterInfoAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  155. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  156. #if _DEBUG
  157. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  158. #endif
  159. break;
  160. }
  161. case prt_cmd_define.write_repeater_info_unit:
  162. {
  163. RepeaterData data = (RepeaterData)cmd.CommandData;
  164. byte[] bt = pkt.CreatePKT_WriteRepeaterInfoUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, data.Repeater_Info);
  165. //ret = WriteRepeaterInfoUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, (RepeaterData)cmd.CommandData);
  166. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  167. #if _DEBUG
  168. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  169. #endif
  170. break;
  171. }
  172. case prt_cmd_define.write_repeater_info_all:
  173. { //2010.12.05, k.s.d, repeater information block write.
  174. RepeaterDataAll data = (RepeaterDataAll)cmd.CommandData;
  175. byte[] bt = pkt.CreatePKT_WriteRepeaterInfoAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, data);
  176. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  177. #if _DEBUG
  178. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt)));
  179. #endif
  180. break;
  181. }
  182. case prt_cmd_define.reset_repeater_unit:
  183. {
  184. byte[] bt = pkt.CreatePKT_ResetRepeaterUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo);
  185. //ret = ResetRepeaterUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo);
  186. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  187. #if _DEBUG
  188. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  189. #endif
  190. break;
  191. }
  192. case prt_cmd_define.reset_repeater_all:
  193. {
  194. // cyim 2013.3.13
  195. // 입력쓰기 테스트 이후 복구 버튼을 눌러서 중계기 별로 복구하도록 명령한다
  196. //byte[] bt = pkt.CreatePKT_ResetRepeaterAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  197. byte[] bt = pkt.CreatePKT_ResetRepeaterAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo);
  198. //ret = ResetRepeaterAll((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  199. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  200. #if _DEBUG
  201. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  202. #endif
  203. break;
  204. }
  205. case prt_cmd_define.write_repeater_input_unit:
  206. {
  207. //RepeaterData data = (RepeaterData)cmd.CommandData;
  208. byte data = (byte)cmd.CommandData;
  209. byte[] bt = pkt.CreatePKT_WriteRepeaterInputUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, data);
  210. //ret = WriteRepeaterInputUNIT((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.repeaterNo, (RepeaterData)cmd.CommandData);
  211. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  212. #if _DEBUG
  213. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  214. #endif
  215. break;
  216. }
  217. case prt_cmd_define.sayhello_to_ioboard:
  218. {
  219. byte[] bt = pkt.CreatePKT_SayHello_To_IOBoard((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  220. //ret = SayHello_To_IOBoard((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  221. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  222. #if _DEBUG
  223. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  224. #endif
  225. break;
  226. }
  227. case prt_cmd_define.read_ioboard_status:
  228. {
  229. byte[] bt = pkt.CreatePKT_ReadIOBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  230. //ret = ReadIOBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  231. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  232. #if _DEBUG
  233. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  234. #endif
  235. break;
  236. }
  237. case prt_cmd_define.write_ioboard_status:
  238. {
  239. IOBoardData data = (IOBoardData)cmd.CommandData;
  240. byte[] bt = pkt.CreatePKT_WriteIOBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, data.BaudRate, data.Reset);
  241. //ret = WriteIOBoardStatus((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (IOBoardData)cmd.CommandData);
  242. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  243. #if _DEBUG
  244. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  245. #endif
  246. break;
  247. }
  248. case prt_cmd_define.read_ioboard_data:
  249. {
  250. byte[] bt = pkt.CreatePKT_ReadIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  251. //ret = ReadIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  252. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  253. #if _DEBUG
  254. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  255. #endif
  256. break;
  257. }
  258. case prt_cmd_define.write_ioboard_data:
  259. {
  260. IOBoardData data = (IOBoardData)cmd.CommandData;
  261. byte[] bt = pkt.CreatePKT_WriteIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, data.OutData_d, data.OutData_u);
  262. //ret = WriteIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (IOBoardData)cmd.CommandData);
  263. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  264. #if _DEBUG
  265. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  266. #endif
  267. break;
  268. }
  269. case prt_cmd_define.read_ioboard_point_data:
  270. {
  271. byte[] bt = pkt.CreatePKT_ReadIOBoardPointData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.DeviceId);
  272. //ret = ReadIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID);
  273. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  274. #if _DEBUG
  275. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  276. #endif
  277. break;
  278. }
  279. case prt_cmd_define.write_ioboard_point_data:
  280. {
  281. IOBoardData data = (IOBoardData)cmd.CommandData;
  282. byte[] bt = pkt.CreatePKT_WriteIOBoardPointData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.DeviceId, data.Reset);
  283. //ret = WriteIOBoardData((byte)cmd.loopNo, (byte)cmd.boardNo, (byte)cmd.invorkNo, (byte)cmd.receiverID, (IOBoardData)cmd.CommandData);
  284. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  285. #if _DEBUG
  286. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  287. #endif
  288. break;
  289. }
  290. case prt_cmd_define.sayhello_to_demon:
  291. {
  292. byte[] bt = pkt.CreatePKT_SayHello_To_Demon((byte)cmd.invorkNo, (byte)cmd.receiverID);
  293. //ret = SayHollo_To_Demon((byte)cmd.invorkNo, (byte)cmd.receiverID);
  294. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  295. #if _DEBUG
  296. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  297. #endif
  298. break;
  299. }
  300. case prt_cmd_define.start_polling:
  301. {
  302. byte[] bt = pkt.CreatePKT_StartPolling((byte)cmd.invorkNo, (byte)cmd.receiverID);
  303. //ret = SayHollo_To_Demon((byte)cmd.invorkNo, (byte)cmd.receiverID);
  304. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  305. #if _DEBUG
  306. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  307. #endif
  308. break;
  309. }
  310. case prt_cmd_define.stop_polling:
  311. {
  312. byte[] bt = pkt.CreatePKT_StopPolling((byte)cmd.invorkNo, (byte)cmd.receiverID);
  313. //ret = StopPolling((byte)cmd.invorkNo, (byte)cmd.receiverID);
  314. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  315. #if _DEBUG
  316. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  317. #endif
  318. break;
  319. }
  320. case prt_cmd_define.read_demon_status:
  321. {
  322. byte[] bt = pkt.CreatePKT_ReadDemonStatus((byte)cmd.invorkNo, (byte)cmd.receiverID);
  323. //ret = ReadDemonStatus((byte)cmd.invorkNo, (byte)cmd.receiverID);
  324. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  325. #if _DEBUG
  326. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  327. #endif
  328. break;
  329. }
  330. case prt_cmd_define.notify_db_update:
  331. {
  332. byte[] bt = pkt.CreatePKT_Notify_DBUpdated((byte)cmd.invorkNo, (byte)cmd.receiverID);
  333. //ret = NotifyDBUpdated((byte)cmd.invorkNo, (byte)cmd.receiverID);
  334. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  335. #if _DEBUG
  336. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  337. #endif
  338. break;
  339. }
  340. //UI명령
  341. case prt_cmd_define.read_command_status:
  342. {
  343. char inoutChar = (char)Util.ToBytes(cmd.Devicetype)[0];
  344. char commandType1 = (char)Util.ToBytes(cmd.CommandType)[0];
  345. char commandType2 = (char)Util.ToBytes(cmd.CommandType)[1];
  346. char cSubType = (char)Util.ToBytes(cmd.SubType)[0];
  347. char cApplyRange = (char)Util.ToBytes(cmd.ApplyRange)[0];
  348. byte[] bt = pkt.CreatePKT_ReadCommandStatus((byte)cmd.invorkNo, (byte)cmd.receiverID, cmd.loopNo, cmd.boardNo
  349. , cmd.repeaterNo, cmd.DeviceId, inoutChar, commandType1, commandType2, cSubType, cApplyRange, cmd.Status, cmd.CommId);
  350. //ret = ReadCommandStatus((byte)cmd.invorkNo, (byte)cmd.receiverID, cmd.loopNo, cmd.boardNo
  351. // ,cmd.repeaterNo,cmd.DeviceId,cmd.Devicetype,cmd.CommandType,cmd.Status,cmd.CommId);
  352. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  353. #if _DEBUG
  354. Util.LogWrite(string.Format("UI명령[{0}]{1}", cmd.Command, Util.ToHex(bt))); //명령 로그에 저장
  355. #endif
  356. break;
  357. }
  358. // cyim 2015.6.29 아날로그감지기 레벨값 쓰기 명령 프로토콜 추가
  359. // 설비연동과 동일한 루틴이다. 즉 UI 에서 레벨값을 저장하라고 데몬에게 명령하면, 데몬은 데이타베이스에 저장하고, 응답을 주도록 되어있다
  360. // 아날로그 감지기 레벨값 쓰기 명령
  361. case prt_cmd_define.write_analogdetecter_level:
  362. {
  363. byte[] bt = pkt.CreatePKT_AnalogDetecterLevel_Write((byte)cmd.invorkNo, (byte)cmd.receiverID, cmd.loopNo, cmd.boardNo
  364. , cmd.repeaterNo, cmd.AnalogDetecterFault, cmd.AnalogDetecterPreFire, cmd.AnalogDetecterFireNight, cmd.AnalogDetecterFireDay);
  365. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  366. }
  367. break;
  368. // cyim 2016.10.27 : 대용량 수신기 아날로그 감지기 트랜드 읽기
  369. case prt_cmd_define.read_analogdetecter_trend:
  370. {
  371. byte[] bt = pkt.CreatePKT_AnalogDetecterTrend_Read((byte)cmd.invorkNo, (byte)cmd.receiverID, cmd.loopNo, cmd.boardNo, cmd.repeaterNo);
  372. ret = tsocket.Cmd_Send(bt, (int)bt[3] + 1);
  373. }
  374. break;
  375. // cyim 2016.10.28 : 대용량 수신기 아날로그 감지기 레벨 Block 쓰기
  376. case prt_cmd_define.write_analogdetecter_level_all:
  377. {
  378. RepeaterDataAll data = (RepeaterDataAll)cmd.CommandData;
  379. data.InvorkNo = (byte)cmd.invorkNo;
  380. data.ReceiverID = (byte)cmd.receiverID;
  381. data.Repeater_loop = (byte)cmd.loopNo;
  382. data.TBD_ID = (byte)cmd.boardNo;
  383. // LCH 2018.02.27 : 수정됨
  384. byte[] bt = pkt.CreatePKT_AnalogDetecterLevel_WriteAll((byte)cmd.invorkNo, (byte)cmd.receiverID, (byte)cmd.loopNo, (byte)cmd.boardNo, data);
  385. ret = tsocket.Cmd_Send(bt, bt.Length);//(int)bt[3] + 1);
  386. }
  387. break;
  388. default:
  389. {
  390. ret = -3;
  391. }
  392. break;
  393. }
  394. }
  395. else
  396. {
  397. ret = -1;
  398. }
  399. }
  400. catch (Exception ex)
  401. {
  402. ret = -1;
  403. Util.UErrorMessage(ex, 0, 0);
  404. }
  405. return ret;
  406. }
  407. /**********************************************************************************************/
  408. //cmd 소켓연결정보
  409. public Boolean cmd_Connected { get { return tsocket.cmd_Connected; } }
  410. //event 소켓연결정보
  411. public Boolean event_Connected { get { return tsocket.event_Connected; } }
  412. public int SendDataToDemon(byte[] data, int size)
  413. {// don't using now. //2010.3.16_moon
  414. return 0;
  415. }
  416. public int SendDataToDemon(String strdata, int size)
  417. {// don't using now. //2010.3.16_moon
  418. return 0;
  419. }
  420. /**********************************************************************************************/
  421. /* UI명령 응답 */
  422. /**********************************************************************************************/
  423. public int CMDResponceFunc(byte[] cmdbuffer, int rcvSize)
  424. {
  425. //Debug.WriteLine("+ CMDResponceFunc ");
  426. int ret = 0;
  427. try
  428. {
  429. ret = pkt.DoCheckcs(cmdbuffer, rcvSize, cmdbuffer[rcvSize]);
  430. this.cmd.ResCommand = (prt_res_define)cmdbuffer[4];
  431. Util.LogWrite(string.Format("명령응답[{0}]{1}", this.cmd.ResCommand, Util.ToHex(cmdbuffer))); //명령 로그에 저장
  432. //check cs
  433. if (ret == 1)
  434. {
  435. //data setting
  436. // send to ui
  437. switch (cmdbuffer[4])
  438. {
  439. //응답-정상
  440. case (byte)prt_res_define.general_ack:
  441. {
  442. RCVData_ACK ResponseData = new RCVData_ACK(cmdbuffer);
  443. this.cmd.ResponseData = ResponseData;
  444. ret = 2;
  445. break;
  446. }
  447. //응답-실패
  448. case (byte)prt_res_define.general_nack:
  449. {
  450. RCVData_NACK ResponseData = new RCVData_NACK(cmdbuffer);
  451. this.cmd.ErrResponseData = ResponseData;
  452. ret = 2;
  453. break;
  454. }
  455. //응답-전압읽기
  456. case (byte)prt_res_define.resd_tbd_state:
  457. {
  458. RCVData_ReadTBoardStatus ResponseData = new RCVData_ReadTBoardStatus(cmdbuffer);
  459. this.cmd.ResponseData = ResponseData;
  460. ret = 2;
  461. break;
  462. }
  463. //응답-통신보드 상태쓰기
  464. case (byte)prt_res_define.write_tbd_state:
  465. {
  466. RCVData_WriteTBoardStatus ResponseData = new RCVData_WriteTBoardStatus(cmdbuffer);
  467. this.cmd.ResponseData = ResponseData;
  468. ret = 2;
  469. break;
  470. }
  471. //응답-중계기 검색
  472. case (byte)prt_res_define.search_repeater_unit:
  473. {
  474. RCVData_SearchRepeaterUNIT ResponseData = new RCVData_SearchRepeaterUNIT(cmdbuffer);
  475. this.cmd.ResponseData = ResponseData;
  476. ret = 2;
  477. break;
  478. }
  479. //응답-중계기 전체 읽기
  480. case (byte)prt_res_define.read_repeater_all:
  481. case (byte)prt_res_define.read_repeater_all_E1:
  482. case (byte)prt_res_define.read_repeater_all_E2:
  483. {
  484. RCVData_ReadRepeaterPointAll ResponseData = new RCVData_ReadRepeaterPointAll(cmdbuffer);
  485. this.cmd.ResponseData = ResponseData;
  486. ret = 2;
  487. break;
  488. }
  489. //응답-중계기 출력 쓰기
  490. case (byte)prt_res_define.write_repeater_output_unit:
  491. {
  492. RCVData_WriteRepeaterOutputUNIT ResponseData = new RCVData_WriteRepeaterOutputUNIT(cmdbuffer);
  493. this.cmd.ResponseData = ResponseData;
  494. ret = 2;
  495. break;
  496. }
  497. //응답-중계기 정보전체 읽기
  498. case (byte)prt_res_define.read_repeater_info_all:
  499. {
  500. RCVData_ReadRepeaterInfoAll ResponseData = new RCVData_ReadRepeaterInfoAll(cmdbuffer);
  501. this.cmd.ResponseData = ResponseData;
  502. ret = 2;
  503. break;
  504. }
  505. //응답-중계기 정보 쓰기
  506. case (byte)prt_res_define.write_repeater_info_unit:
  507. {
  508. RCVData_WriteRepeaterInfoUNIT ResponseData = new RCVData_WriteRepeaterInfoUNIT(cmdbuffer);
  509. this.cmd.ResponseData = ResponseData;
  510. ret = 2;
  511. break;
  512. }
  513. //응답-중계기입력쓰기
  514. case (byte)prt_res_define.write_repeater_input_unit:
  515. {
  516. RCVData_WriteRepeaterInputUNIT ResponseData = new RCVData_WriteRepeaterInputUNIT(cmdbuffer);
  517. this.cmd.ResponseData = ResponseData;
  518. ret = 2;
  519. break;
  520. }
  521. //응답-io보드상태읽기
  522. case (byte)prt_res_define.read_ioboard_status:
  523. {
  524. RCVData_ReadIOBoardStatus ResponseData = new RCVData_ReadIOBoardStatus(cmdbuffer);
  525. this.cmd.ResponseData = ResponseData;
  526. ret = 2;
  527. break;
  528. }
  529. //응답-io보드 상태쓰기
  530. case (byte)prt_res_define.write_ioboard_status:
  531. {
  532. RCVData_WriteIOBoardStatus ResponseData = new RCVData_WriteIOBoardStatus(cmdbuffer); //2010.4.9_moon
  533. this.cmd.ResponseData = ResponseData;
  534. ret = 2;
  535. break;
  536. }
  537. //응답-io보드데이터읽기
  538. case (byte)prt_res_define.read_ioboard_data:
  539. {
  540. RCVData_ReadIOBoardData ResponseData = new RCVData_ReadIOBoardData(cmdbuffer); //2010.4.9_moon
  541. this.cmd.ResponseData = ResponseData;
  542. ret = 2;
  543. break;
  544. }
  545. //응답-io보드데이터쓰기
  546. case (byte)prt_res_define.write_ioboard_data:
  547. {
  548. RCVData_WriteIOBoardData ResponseData = new RCVData_WriteIOBoardData(cmdbuffer); //2010.4.9_moon
  549. this.cmd.ResponseData = ResponseData;
  550. ret = 2;
  551. break;
  552. }
  553. //응답-데몬상태
  554. case (byte)prt_res_define.read_demon_status:
  555. {
  556. RCVData_ReadDemonStatus ResponseData = new RCVData_ReadDemonStatus(cmdbuffer); //2010.4.9_moon
  557. this.cmd.ResponseData = ResponseData;
  558. ret = 2;
  559. break;
  560. }
  561. //응답-누적카운트 및 기타 UI프로토콜---추가1
  562. case (byte)prt_res_define.read_command_status:
  563. {
  564. this.cmd.ResCommand = prt_res_define.read_command_status;
  565. RCVData_ReadCommandStatus ResponseData = new RCVData_ReadCommandStatus(cmdbuffer); //2010.4.9_moon
  566. this.cmd.ResponseData = ResponseData;
  567. ret = 2;
  568. break;
  569. }
  570. // cyim 2015.6.29 아날로그감지기 레벨값 쓰기 명령 프로토콜 추가
  571. case (byte)prt_res_define.write_analogdetecter_level:
  572. {
  573. this.cmd.ResCommand = prt_res_define.write_analogdetecter_level;
  574. RCVData_WriteAnalogDetecterLevel ResponseData = new RCVData_WriteAnalogDetecterLevel(cmdbuffer);
  575. this.cmd.ResponseData = ResponseData;
  576. ret = 2;
  577. break;
  578. }
  579. // cyim 2016.10.27 : 대용량 수신기 아날로그 감지기 트랜드 읽기
  580. case (byte)prt_res_define.read_analogdetecter_trend:
  581. {
  582. this.cmd.ResCommand = prt_res_define.read_analogdetecter_trend;
  583. RCVData_ReadAnalogDetecterTrend ResponseData = new RCVData_ReadAnalogDetecterTrend(cmdbuffer);
  584. this.cmd.ResponseData = ResponseData;
  585. ret = 2;
  586. break;
  587. }
  588. case (byte)prt_res_define.write_analogdetecter_level_all: // LCH 2018.02.27 : 수정됨
  589. {
  590. this.cmd.ResCommand = prt_res_define.write_analogdetecter_level_all;
  591. RCVData_WriteAnalogDetecterLevel2 ResponseData = new RCVData_WriteAnalogDetecterLevel2(cmdbuffer);
  592. this.cmd.ResponseData = ResponseData;
  593. ret = 2;
  594. break;
  595. }
  596. default:
  597. {
  598. //Debug.WriteLine(" unKnown CMD ");
  599. ret = -1;
  600. break;
  601. }
  602. }
  603. }
  604. if (ret == 2)
  605. {
  606. //Debug.WriteLine(string.Format("+CMDResponce Send To UI (getResponse) : 0x{0:x2}", cmdbuffer[4]));
  607. this.main.ui.getResponse(cmd);
  608. //Debug.WriteLine(string.Format("-CMDResponce Send To UI (getResponse) : 0x{0:x2}", cmdbuffer[4]));
  609. }
  610. else
  611. {
  612. //Util.UDebugMessage(("CMDResponceFunc err = " + ret.ToString()),0,0);
  613. }
  614. }
  615. catch (Exception ex)
  616. {
  617. ret = -1;
  618. Util.UErrorMessage(ex, 0, 0);
  619. }
  620. //Debug.WriteLine("- CMDResponceFunc ");
  621. return ret;
  622. }
  623. /**********************************************************************************************/
  624. /**********************************************************************************************/
  625. /* 이벤트를 UI에게 보내는 함수 */
  626. /**********************************************************************************************/
  627. public int EVENTCallFunc(byte[] cmdbuffer, int rcvSize)
  628. {
  629. //패킷 받을때 마다 카운트
  630. this.iDemonPacketReceiveCnt++;
  631. int ret = 0;
  632. try
  633. {
  634. ret = pkt.DoCheckcs(cmdbuffer, rcvSize, cmdbuffer[rcvSize]);
  635. //Util.LogWrite(string.Format("이벤트CNT[{0}][{1}]{2}", iDemonPacketReceiveCnt, (prt_res_define)cmdbuffer[4], Util.ToHex(cmdbuffer))); //명령 로그에 저장
  636. //Util.LogWrite(string.Format("CS:{0}", ret)); //명령 로그에 저장
  637. if (ret == 1)
  638. {
  639. CmdInfo cmd;
  640. //Debug.WriteLine(string.Format("EVENTCallFunc rcv cmd : 0x{0:x2}", cmdbuffer[4]));
  641. switch (cmdbuffer[4])
  642. {
  643. //응답-정상
  644. case (byte)prt_res_define.general_ack:
  645. {
  646. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  647. RCVData_ACK ResponseData = new RCVData_ACK(cmdbuffer);
  648. cmd.ResponseData = ResponseData;
  649. ret = 2;
  650. break;
  651. }
  652. //응답-실패
  653. case (byte)prt_res_define.general_nack:
  654. {
  655. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  656. RCVData_NACK ResponseData = new RCVData_NACK(cmdbuffer);
  657. cmd.ErrResponseData = ResponseData;
  658. ret = 2;
  659. break;
  660. }
  661. //응답-전압읽기
  662. case (byte)prt_res_define.resd_tbd_state:
  663. {
  664. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  665. RCVData_ReadTBoardStatus ResponseData = new RCVData_ReadTBoardStatus(cmdbuffer);
  666. cmd.ResponseData = ResponseData;
  667. ret = 2;
  668. break;
  669. }
  670. //응답-통신보드 상태쓰기
  671. case (byte)prt_res_define.write_tbd_state:
  672. {
  673. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  674. RCVData_WriteTBoardStatus ResponseData = new RCVData_WriteTBoardStatus(cmdbuffer);
  675. cmd.ResponseData = ResponseData;
  676. ret = 2;
  677. break;
  678. }
  679. //응답-중계기회로 검색
  680. case (byte)prt_res_define.search_repeater_unit:
  681. {
  682. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  683. RCVData_SearchRepeaterUNIT ResponseData = new RCVData_SearchRepeaterUNIT(cmdbuffer);
  684. cmd.ResponseData = ResponseData;
  685. ret = 2;
  686. break;
  687. }
  688. //응답-중계기 전체 읽기
  689. case (byte)prt_res_define.read_repeater_all:
  690. case (byte)prt_res_define.read_repeater_all_E1:
  691. case (byte)prt_res_define.read_repeater_all_E2:
  692. {
  693. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[8], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  694. RCVData_ReadRepeaterPointAll ResponseData = new RCVData_ReadRepeaterPointAll(cmdbuffer);
  695. cmd.ResponseData = ResponseData;
  696. ret = 2;
  697. break;
  698. }
  699. //응답-중계기 출력 쓰기
  700. case (byte)prt_res_define.write_repeater_output_unit:
  701. {
  702. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  703. RCVData_WriteRepeaterOutputUNIT ResponseData = new RCVData_WriteRepeaterOutputUNIT(cmdbuffer);
  704. cmd.ResponseData = ResponseData;
  705. ret = 2;
  706. break;
  707. }
  708. //응답-중계기 정보전체 읽기
  709. case (byte)prt_res_define.read_repeater_info_all:
  710. {
  711. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  712. RCVData_ReadRepeaterInfoAll ResponseData = new RCVData_ReadRepeaterInfoAll(cmdbuffer);
  713. cmd.ResponseData = ResponseData;
  714. ret = 2;
  715. break;
  716. }
  717. //응답-중계기 정보 쓰기
  718. case (byte)prt_res_define.write_repeater_info_unit:
  719. {
  720. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  721. RCVData_WriteRepeaterInfoUNIT ResponseData = new RCVData_WriteRepeaterInfoUNIT(cmdbuffer);
  722. cmd.ResponseData = ResponseData;
  723. ret = 2;
  724. break;
  725. }
  726. //응답-중계기입력쓰기
  727. case (byte)prt_res_define.write_repeater_input_unit:
  728. {
  729. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  730. RCVData_WriteRepeaterInputUNIT ResponseData = new RCVData_WriteRepeaterInputUNIT(cmdbuffer);
  731. cmd.ResponseData = ResponseData;
  732. ret = 2;
  733. break;
  734. }
  735. //응답-io보드상태읽기
  736. case (byte)prt_res_define.read_ioboard_status:
  737. {
  738. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  739. RCVData_ReadIOBoardStatus ResponseData = new RCVData_ReadIOBoardStatus(cmdbuffer);
  740. cmd.ResponseData = ResponseData;
  741. ret = 2;
  742. break;
  743. }
  744. //응답-io보드 상태쓰기
  745. case (byte)prt_res_define.write_ioboard_status:
  746. {
  747. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  748. RCVData_WriteIOBoardStatus ResponseData = new RCVData_WriteIOBoardStatus(cmdbuffer);
  749. cmd.ResponseData = ResponseData;
  750. ret = 2;
  751. break;
  752. }
  753. //응답-io보드데이터읽기
  754. case (byte)prt_res_define.read_ioboard_data:
  755. {
  756. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  757. RCVData_ReadIOBoardData ResponseData = new RCVData_ReadIOBoardData(cmdbuffer);
  758. cmd.ResponseData = ResponseData;
  759. ret = 2;
  760. break;
  761. }
  762. //응답-io보드데이터쓰기
  763. case (byte)prt_res_define.write_ioboard_data:
  764. {
  765. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  766. RCVData_WriteIOBoardData ResponseData = new RCVData_WriteIOBoardData(cmdbuffer);
  767. cmd.ResponseData = ResponseData;
  768. ret = 2;
  769. break;
  770. }
  771. //응답-데몬상태
  772. case (byte)prt_res_define.read_demon_status:
  773. {
  774. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  775. RCVData_ReadDemonStatus ResponseData = new RCVData_ReadDemonStatus(cmdbuffer);
  776. this.cmd.ResponseData = ResponseData;
  777. ret = 2;
  778. break;
  779. }
  780. //응답-전체 누적카운트---추가1
  781. case (byte)prt_res_define.read_command_status:
  782. {
  783. cmd = new CmdInfo((prt_res_define)cmdbuffer[4], (int)cmdbuffer[6], (int)cmdbuffer[1], (int)cmdbuffer[2], 0);
  784. RCVData_ReadCommandStatus ResponseData = new RCVData_ReadCommandStatus(cmdbuffer);
  785. cmd.ResponseData = ResponseData;
  786. ret = 2;
  787. break;
  788. }
  789. //응답-상태알림---추가2
  790. case (byte)prt_res_define.read_notify_staus:
  791. {
  792. //
  793. // CmdInfo 생성자
  794. //
  795. cmd = new CmdInfo(
  796. prt_res_define.read_notify_staus, // prt_res_define res_define,
  797. (int)cmdbuffer[6], // int receiverID,
  798. (int)cmdbuffer[1], // int loopNo
  799. (int)cmdbuffer[2], // int boardNo,
  800. 0); // int repeaterNo
  801. //
  802. // RCVData_ReadNotifyStatus 생성자
  803. //
  804. RCVData_ReadNotifyStatus resData = new RCVData_ReadNotifyStatus(cmdbuffer);
  805. //알람타입을 넘긴다.
  806. cmd.ResponseData = resData;
  807. ret = 2;
  808. break;
  809. }
  810. //응답-알수없는명령어
  811. default:
  812. {
  813. cmd = new CmdInfo((prt_res_define)0x00, (int)0x00, 1, (int)0x00, (int)0x00);
  814. //Debug.WriteLine(" unKnown CMD ");
  815. ret = -1;
  816. break;
  817. }
  818. }
  819. Util.LogWrite(string.Format("UI처리결과:{0}", ret)); //명령 로그에 저장
  820. if (ret == 2)
  821. {
  822. ////Debug.WriteLine(string.Format("+EVENT Send To UI (getEvent) : 0x{0:x2}", cmdbuffer[4]));
  823. this.main.ui.getEvent(cmd);
  824. ////Debug.WriteLine(string.Format("-EVENT Send To UI (getEvent) : 0x{0:x2}", cmdbuffer[4]));
  825. }
  826. }
  827. if (ret != 2)
  828. {
  829. //Debug.WriteLine("EVENTCallFunc err = " + ret.ToString());
  830. }
  831. }
  832. catch (Exception ex)
  833. {
  834. ret = -1;
  835. Util.UErrorMessage(ex, 0, 0);
  836. }
  837. //Debug.WriteLine("- EVENTCallFunc ");
  838. return ret;
  839. }
  840. /**********************************************************************************************/
  841. }
  842. }