97968bd7ec46af058a1a8801204d854e85cd1961.svn-base 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Runtime.InteropServices;
  7. using System.Net.Sockets;
  8. namespace BEMSDataGateway
  9. {
  10. [StructLayout(LayoutKind.Sequential)]
  11. public struct SYSTEMTIME
  12. {
  13. [MarshalAs(UnmanagedType.U2)]
  14. public short Year;
  15. [MarshalAs(UnmanagedType.U2)]
  16. public short Month;
  17. [MarshalAs(UnmanagedType.U2)]
  18. public short DayOfWeek;
  19. [MarshalAs(UnmanagedType.U2)]
  20. public short Day;
  21. [MarshalAs(UnmanagedType.U2)]
  22. public short Hour;
  23. [MarshalAs(UnmanagedType.U2)]
  24. public short Minute;
  25. [MarshalAs(UnmanagedType.U2)]
  26. public short Second;
  27. [MarshalAs(UnmanagedType.U2)]
  28. public short Milliseconds;
  29. public SYSTEMTIME(DateTime dt)
  30. {
  31. dt = dt.ToUniversalTime(); // SetSystemTime expects the SYSTEMTIME in UTC
  32. Year = (short)dt.Year;
  33. Month = (short)dt.Month;
  34. DayOfWeek = (short)dt.DayOfWeek;
  35. Day = (short)dt.Day;
  36. Hour = (short)dt.Hour;
  37. Minute = (short)dt.Minute;
  38. Second = (short)dt.Second;
  39. Milliseconds = (short)dt.Millisecond;
  40. }
  41. }
  42. [StructLayout(LayoutKind.Explicit, Size = 4)]
  43. public struct ArrayData
  44. {
  45. [FieldOffset(0)]
  46. public byte digital;
  47. [FieldOffset(0)]
  48. public double analog;
  49. }
  50. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  51. public struct PointValue
  52. {
  53. [MarshalAs(UnmanagedType.I4)]
  54. public int nChannel;
  55. [MarshalAs(UnmanagedType.I4)]
  56. public int nController;
  57. [MarshalAs(UnmanagedType.I4)]
  58. public int nDataType;
  59. [MarshalAs(UnmanagedType.I4)]
  60. public int nPoint;
  61. [MarshalAs(UnmanagedType.I4)]
  62. public int nState;
  63. [MarshalAs(UnmanagedType.Struct, SizeConst = 4)]
  64. public ArrayData Values;
  65. }
  66. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  67. public struct PointText
  68. {
  69. [MarshalAs(UnmanagedType.I4)]
  70. public int nChannel;
  71. [MarshalAs(UnmanagedType.I4)]
  72. public int nController;
  73. [MarshalAs(UnmanagedType.I4)]
  74. public int nDataType;
  75. [MarshalAs(UnmanagedType.I4)]
  76. public int nPoint;
  77. [MarshalAs(UnmanagedType.I4)]
  78. public int nState;
  79. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  80. public string szTextValue;
  81. }
  82. [StructLayout(LayoutKind.Explicit, Size = 256)]
  83. public struct MonitorData
  84. {
  85. [FieldOffset(0)]
  86. public byte digital;
  87. [FieldOffset(0)]
  88. public double analog;
  89. }
  90. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  91. public struct TagAddr
  92. {
  93. [MarshalAs(UnmanagedType.I4)]
  94. public int nChannel;
  95. [MarshalAs(UnmanagedType.I4)]
  96. public int nController;
  97. [MarshalAs(UnmanagedType.I4)]
  98. public int nDataType;
  99. [MarshalAs(UnmanagedType.I4)]
  100. public int nPoint;
  101. }
  102. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  103. public struct iCosLogInRequest
  104. {
  105. [MarshalAs(UnmanagedType.I4)]
  106. public int nLength;
  107. [MarshalAs(UnmanagedType.I4)]
  108. public int nType;
  109. [MarshalAs(UnmanagedType.I4)]
  110. public int nSubType;
  111. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  112. public string szId;
  113. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  114. public string szPassword;
  115. public byte[] Serialize()
  116. {
  117. var buffer = new byte[Marshal.SizeOf(typeof(iCosLogInRequest))];
  118. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  119. var pBuffer = gch.AddrOfPinnedObject();
  120. Marshal.StructureToPtr(this, pBuffer, false);
  121. gch.Free();
  122. return buffer;
  123. }
  124. public void Deserialize(ref byte[] data)
  125. {
  126. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  127. this = (iCosLogInRequest)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosLogInRequest));
  128. gch.Free();
  129. }
  130. }
  131. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  132. public struct iCosLogInResponse
  133. {
  134. [MarshalAs(UnmanagedType.I4)]
  135. public int nLength;
  136. [MarshalAs(UnmanagedType.I4)]
  137. public int nType;
  138. [MarshalAs(UnmanagedType.I4)]
  139. public int nSubType;
  140. [MarshalAs(UnmanagedType.I4)]
  141. public int nResult;
  142. [MarshalAs(UnmanagedType.U4)]
  143. public UInt32 dwLevel;
  144. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  145. public string szInitPage;
  146. public byte[] Serialize()
  147. {
  148. var buffer = new byte[Marshal.SizeOf(typeof(iCosLogInResponse))];
  149. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  150. var pBuffer = gch.AddrOfPinnedObject();
  151. Marshal.StructureToPtr(this, pBuffer, false);
  152. gch.Free();
  153. return buffer;
  154. }
  155. public void Deserialize(byte[] data)
  156. {
  157. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  158. this = (iCosLogInResponse)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosLogInResponse));
  159. gch.Free();
  160. }
  161. }
  162. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  163. public struct iCosMonitorRegTag
  164. {
  165. [MarshalAs(UnmanagedType.I4)]
  166. public int nLength;
  167. [MarshalAs(UnmanagedType.I4)]
  168. public int nType;
  169. [MarshalAs(UnmanagedType.I4)]
  170. public int nSubType;
  171. [MarshalAs(UnmanagedType.I4)]
  172. public int nChannel;
  173. [MarshalAs(UnmanagedType.I4)]
  174. public int nController;
  175. [MarshalAs(UnmanagedType.I4)]
  176. public int nDataType;
  177. [MarshalAs(UnmanagedType.I4)]
  178. public int nPoint;
  179. public byte[] Serialize()
  180. {
  181. var buffer = new byte[Marshal.SizeOf(typeof(iCosMonitorRegTag))];
  182. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  183. var pBuffer = gch.AddrOfPinnedObject();
  184. Marshal.StructureToPtr(this, pBuffer, false);
  185. gch.Free();
  186. return buffer;
  187. }
  188. public void Deserialize(ref byte[] data)
  189. {
  190. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  191. this = (iCosMonitorRegTag)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosMonitorRegTag));
  192. gch.Free();
  193. }
  194. }
  195. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  196. public struct iCosMonitorRegTagArray
  197. {
  198. [MarshalAs(UnmanagedType.I4)]
  199. public int nLength;
  200. [MarshalAs(UnmanagedType.I4)]
  201. public int nType;
  202. [MarshalAs(UnmanagedType.I4)]
  203. public int nSubType;
  204. [MarshalAs(UnmanagedType.I4)]
  205. public int nPntCnt;
  206. [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 50)]
  207. public TagAddr[] Tags;
  208. public byte[] Serialize()
  209. {
  210. var buffer = new byte[Marshal.SizeOf(typeof(iCosMonitorRegTagArray))];
  211. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  212. var pBuffer = gch.AddrOfPinnedObject();
  213. Marshal.StructureToPtr(this, pBuffer, false);
  214. gch.Free();
  215. return buffer;
  216. }
  217. public void Deserialize(ref byte[] data)
  218. {
  219. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  220. this = (iCosMonitorRegTagArray)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosMonitorRegTagArray));
  221. gch.Free();
  222. }
  223. }
  224. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  225. public struct iCosMonitorValue
  226. {
  227. [MarshalAs(UnmanagedType.I4)]
  228. public int nLength;
  229. [MarshalAs(UnmanagedType.I4)]
  230. public int nType;
  231. [MarshalAs(UnmanagedType.I4)]
  232. public int nSubType;
  233. [MarshalAs(UnmanagedType.I4)]
  234. public int nChannel;
  235. [MarshalAs(UnmanagedType.I4)]
  236. public int nController;
  237. [MarshalAs(UnmanagedType.I4)]
  238. public int nDataType;
  239. [MarshalAs(UnmanagedType.I4)]
  240. public int nPoint;
  241. [MarshalAs(UnmanagedType.I4)]
  242. public int nState;
  243. [MarshalAs(UnmanagedType.I4)]
  244. public int nReserved1;
  245. [MarshalAs(UnmanagedType.I4)]
  246. public int nReserved2;
  247. [MarshalAs(UnmanagedType.Struct, SizeConst = 256)]
  248. public MonitorData Values;
  249. public byte[] Serialize()
  250. {
  251. var buffer = new byte[Marshal.SizeOf(typeof(iCosMonitorValue))];
  252. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  253. var pBuffer = gch.AddrOfPinnedObject();
  254. Marshal.StructureToPtr(this, pBuffer, false);
  255. gch.Free();
  256. return buffer;
  257. }
  258. public void Deserialize(byte[] data)
  259. {
  260. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  261. this = (iCosMonitorValue)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosMonitorValue));
  262. gch.Free();
  263. }
  264. }
  265. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  266. public struct iCosMonitorText
  267. {
  268. [MarshalAs(UnmanagedType.I4)]
  269. public int nLength;
  270. [MarshalAs(UnmanagedType.I4)]
  271. public int nType;
  272. [MarshalAs(UnmanagedType.I4)]
  273. public int nSubType;
  274. [MarshalAs(UnmanagedType.I4)]
  275. public int nChannel;
  276. [MarshalAs(UnmanagedType.I4)]
  277. public int nController;
  278. [MarshalAs(UnmanagedType.I4)]
  279. public int nDataType;
  280. [MarshalAs(UnmanagedType.I4)]
  281. public int nPoint;
  282. [MarshalAs(UnmanagedType.I4)]
  283. public int nState;
  284. [MarshalAs(UnmanagedType.I4)]
  285. public int nReserved1;
  286. [MarshalAs(UnmanagedType.I4)]
  287. public int nReserved2;
  288. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  289. public string szTextValue;
  290. public byte[] Serialize()
  291. {
  292. var buffer = new byte[Marshal.SizeOf(typeof(iCosMonitorText))];
  293. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  294. var pBuffer = gch.AddrOfPinnedObject();
  295. Marshal.StructureToPtr(this, pBuffer, false);
  296. gch.Free();
  297. return buffer;
  298. }
  299. public void Deserialize(byte[] data)
  300. {
  301. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  302. this = (iCosMonitorText)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosMonitorText));
  303. gch.Free();
  304. }
  305. }
  306. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  307. public struct iCosMonitorValueArray
  308. {
  309. [MarshalAs(UnmanagedType.I4)]
  310. public int nLength;
  311. [MarshalAs(UnmanagedType.I4)]
  312. public int nType;
  313. [MarshalAs(UnmanagedType.I4)]
  314. public int nSubType;
  315. [MarshalAs(UnmanagedType.I4)]
  316. public int nPntCnt;
  317. [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 50)]
  318. public PointValue[] Values;
  319. public byte[] Serialize()
  320. {
  321. var buffer = new byte[Marshal.SizeOf(typeof(iCosMonitorValueArray))];
  322. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  323. var pBuffer = gch.AddrOfPinnedObject();
  324. Marshal.StructureToPtr(this, pBuffer, false);
  325. gch.Free();
  326. return buffer;
  327. }
  328. public void Deserialize(byte[] data)
  329. {
  330. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  331. this = (iCosMonitorValueArray)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosMonitorValueArray));
  332. gch.Free();
  333. }
  334. }
  335. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  336. public struct iCosMonitorTextArray
  337. {
  338. [MarshalAs(UnmanagedType.I4)]
  339. public int nLength;
  340. [MarshalAs(UnmanagedType.I4)]
  341. public int nType;
  342. [MarshalAs(UnmanagedType.I4)]
  343. public int nSubType;
  344. [MarshalAs(UnmanagedType.I4)]
  345. public int nPntCnt;
  346. [MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.Struct, SizeConst = 5)]
  347. public PointText[] Values;
  348. public byte[] Serialize()
  349. {
  350. var buffer = new byte[Marshal.SizeOf(typeof(iCosMonitorTextArray))];
  351. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  352. var pBuffer = gch.AddrOfPinnedObject();
  353. Marshal.StructureToPtr(this, pBuffer, false);
  354. gch.Free();
  355. return buffer;
  356. }
  357. public void Deserialize(byte[] data)
  358. {
  359. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  360. this = (iCosMonitorTextArray)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosMonitorTextArray));
  361. gch.Free();
  362. }
  363. }
  364. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
  365. public struct iCosMonitorNetStatus
  366. {
  367. [MarshalAs(UnmanagedType.I4)]
  368. public int nLength;
  369. [MarshalAs(UnmanagedType.I4)]
  370. public int nType;
  371. [MarshalAs(UnmanagedType.I4)]
  372. public int nSubType;
  373. [MarshalAs(UnmanagedType.I4)]
  374. public int nTotalCount;
  375. [MarshalAs(UnmanagedType.I4)]
  376. public int nConnectionCount;
  377. [MarshalAs(UnmanagedType.I4)]
  378. public int nIconId;
  379. public byte[] Serialize()
  380. {
  381. var buffer = new byte[Marshal.SizeOf(typeof(iCosMonitorNetStatus))];
  382. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  383. var pBuffer = gch.AddrOfPinnedObject();
  384. Marshal.StructureToPtr(this, pBuffer, false);
  385. gch.Free();
  386. return buffer;
  387. }
  388. public void Deserialize(byte[] data)
  389. {
  390. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  391. this = (iCosMonitorNetStatus)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosMonitorNetStatus));
  392. gch.Free();
  393. }
  394. }
  395. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  396. public struct iCosMonitorTimeSync
  397. {
  398. [MarshalAs(UnmanagedType.I4)]
  399. public int nLength;
  400. [MarshalAs(UnmanagedType.I4)]
  401. public int nType;
  402. [MarshalAs(UnmanagedType.I4)]
  403. public int nSubType;
  404. [MarshalAs(UnmanagedType.Struct, SizeConst = 16)]
  405. public SYSTEMTIME tmAck;
  406. public byte[] Serialize()
  407. {
  408. var buffer = new byte[Marshal.SizeOf(typeof(iCosMonitorTimeSync))];
  409. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  410. var pBuffer = gch.AddrOfPinnedObject();
  411. Marshal.StructureToPtr(this, pBuffer, false);
  412. gch.Free();
  413. return buffer;
  414. }
  415. public void Deserialize(byte[] data)
  416. {
  417. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  418. this = (iCosMonitorTimeSync)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosMonitorTimeSync));
  419. gch.Free();
  420. }
  421. }
  422. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  423. public struct iCosAlarmPointValue
  424. {
  425. [MarshalAs(UnmanagedType.I4)]
  426. public int nLength;
  427. [MarshalAs(UnmanagedType.I4)]
  428. public int nType;
  429. [MarshalAs(UnmanagedType.I4)]
  430. public int nSubType;
  431. [MarshalAs(UnmanagedType.I8)]
  432. public Int64 tmDateTime;
  433. [MarshalAs(UnmanagedType.I4)]
  434. public int nChannel;
  435. [MarshalAs(UnmanagedType.I4)]
  436. public int nController;
  437. [MarshalAs(UnmanagedType.I4)]
  438. public int nDataType;
  439. [MarshalAs(UnmanagedType.I4)]
  440. public int nPoint;
  441. [MarshalAs(UnmanagedType.U1)]
  442. public byte byAlarmLevel;
  443. [MarshalAs(UnmanagedType.U1)]
  444. public byte byStatus;
  445. [MarshalAs(UnmanagedType.U1)]
  446. public byte bySound;
  447. [MarshalAs(UnmanagedType.U1)]
  448. public byte byIsAck;
  449. [MarshalAs(UnmanagedType.R8)]
  450. public double fAlarmValue;
  451. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  452. public string szSoundFile;
  453. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  454. public string szAlarmMessage;
  455. public byte[] Serialize()
  456. {
  457. var buffer = new byte[Marshal.SizeOf(typeof(iCosAlarmPointValue))];
  458. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  459. var pBuffer = gch.AddrOfPinnedObject();
  460. Marshal.StructureToPtr(this, pBuffer, false);
  461. gch.Free();
  462. return buffer;
  463. }
  464. public void Deserialize(byte[] data)
  465. {
  466. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  467. this = (iCosAlarmPointValue)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosAlarmPointValue));
  468. gch.Free();
  469. }
  470. }
  471. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  472. public struct iCosAlarmPointAck
  473. {
  474. [MarshalAs(UnmanagedType.I4)]
  475. public int nLength;
  476. [MarshalAs(UnmanagedType.I4)]
  477. public int nType;
  478. [MarshalAs(UnmanagedType.I4)]
  479. public int nSubType;
  480. [MarshalAs(UnmanagedType.I4)]
  481. public int nChannel;
  482. [MarshalAs(UnmanagedType.I4)]
  483. public int nController;
  484. [MarshalAs(UnmanagedType.I4)]
  485. public int nDataType;
  486. [MarshalAs(UnmanagedType.I4)]
  487. public int nPoint;
  488. public byte[] Serialize()
  489. {
  490. var buffer = new byte[Marshal.SizeOf(typeof(iCosAlarmPointAck))];
  491. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  492. var pBuffer = gch.AddrOfPinnedObject();
  493. Marshal.StructureToPtr(this, pBuffer, false);
  494. gch.Free();
  495. return buffer;
  496. }
  497. public void Deserialize(byte[] data)
  498. {
  499. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  500. this = (iCosAlarmPointAck)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosAlarmPointAck));
  501. gch.Free();
  502. }
  503. }
  504. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  505. public struct iCosAlarmAckFromServer
  506. {
  507. [MarshalAs(UnmanagedType.I4)]
  508. public int nLength;
  509. [MarshalAs(UnmanagedType.I4)]
  510. public int nType;
  511. [MarshalAs(UnmanagedType.I4)]
  512. public int nSubType;
  513. [MarshalAs(UnmanagedType.Struct, SizeConst = 16)]
  514. public SYSTEMTIME tmAlarm;
  515. [MarshalAs(UnmanagedType.I4)]
  516. public int nChannel;
  517. [MarshalAs(UnmanagedType.I4)]
  518. public int nController;
  519. [MarshalAs(UnmanagedType.I4)]
  520. public int nDataType;
  521. [MarshalAs(UnmanagedType.I4)]
  522. public int nPoint;
  523. [MarshalAs(UnmanagedType.Struct, SizeConst = 16)]
  524. public SYSTEMTIME tmAck;
  525. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  526. public string szAckUser;
  527. public byte[] Serialize()
  528. {
  529. var buffer = new byte[Marshal.SizeOf(typeof(iCosAlarmAckFromServer))];
  530. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  531. var pBuffer = gch.AddrOfPinnedObject();
  532. Marshal.StructureToPtr(this, pBuffer, false);
  533. gch.Free();
  534. return buffer;
  535. }
  536. public void Deserialize(byte[] data)
  537. {
  538. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  539. this = (iCosAlarmAckFromServer)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosAlarmAckFromServer));
  540. gch.Free();
  541. }
  542. }
  543. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  544. public struct iCosAlarmNotify
  545. {
  546. [MarshalAs(UnmanagedType.I4)]
  547. public int nLength;
  548. [MarshalAs(UnmanagedType.I4)]
  549. public int nType;
  550. [MarshalAs(UnmanagedType.I4)]
  551. public int nSubType;
  552. [MarshalAs(UnmanagedType.Struct, SizeConst = 16)]
  553. public SYSTEMTIME tmAck;
  554. [MarshalAs(UnmanagedType.Struct, SizeConst = 16)]
  555. public SYSTEMTIME tmDateTime;
  556. [MarshalAs(UnmanagedType.I4)]
  557. public int nChannel;
  558. [MarshalAs(UnmanagedType.I4)]
  559. public int nController;
  560. [MarshalAs(UnmanagedType.I4)]
  561. public int nDataType;
  562. [MarshalAs(UnmanagedType.I4)]
  563. public int nPoint;
  564. [MarshalAs(UnmanagedType.U1)]
  565. public byte byAlarmType;
  566. [MarshalAs(UnmanagedType.U1)]
  567. public byte byAlarmLevel;
  568. [MarshalAs(UnmanagedType.U1)]
  569. public byte byStatus;
  570. [MarshalAs(UnmanagedType.U1)]
  571. public byte bySound;
  572. [MarshalAs(UnmanagedType.U1)]
  573. public byte byIsClear;
  574. //public double fAlarmValue;
  575. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
  576. public byte[] byTemp;
  577. [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
  578. public byte[] byVal;
  579. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  580. public string szAckUser;
  581. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  582. public string szAlarmMessage;
  583. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  584. public string szSoundFile;
  585. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  586. public string szAlarmScript;
  587. public byte[] Serialize()
  588. {
  589. var buffer = new byte[Marshal.SizeOf(typeof(iCosAlarmNotify))];
  590. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  591. var pBuffer = gch.AddrOfPinnedObject();
  592. Marshal.StructureToPtr(this, pBuffer, false);
  593. gch.Free();
  594. return buffer;
  595. }
  596. public void Deserialize(byte[] data)
  597. {
  598. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  599. this = (iCosAlarmNotify)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosAlarmNotify));
  600. gch.Free();
  601. }
  602. }
  603. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  604. public struct iCosAlarmSet
  605. {
  606. [MarshalAs(UnmanagedType.I4)]
  607. public int nLength;
  608. [MarshalAs(UnmanagedType.I4)]
  609. public int nType;
  610. [MarshalAs(UnmanagedType.I4)]
  611. public int nSubType;
  612. [MarshalAs(UnmanagedType.I4)]
  613. public int nChannel;
  614. [MarshalAs(UnmanagedType.I4)]
  615. public int nController;
  616. [MarshalAs(UnmanagedType.I4)]
  617. public int nDataType;
  618. [MarshalAs(UnmanagedType.I4)]
  619. public int nPoint;
  620. [MarshalAs(UnmanagedType.U1)]
  621. public byte byAlarmType;
  622. [MarshalAs(UnmanagedType.R8)]
  623. public double fAlarmValue;
  624. public byte[] Serialize()
  625. {
  626. var buffer = new byte[Marshal.SizeOf(typeof(iCosAlarmSet))];
  627. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  628. var pBuffer = gch.AddrOfPinnedObject();
  629. Marshal.StructureToPtr(this, pBuffer, false);
  630. gch.Free();
  631. return buffer;
  632. }
  633. public void Deserialize(byte[] data)
  634. {
  635. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  636. this = (iCosAlarmSet)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosAlarmSet));
  637. gch.Free();
  638. }
  639. }
  640. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  641. public struct iCosAlarmAckNotify
  642. {
  643. [MarshalAs(UnmanagedType.I4)]
  644. public int nLength;
  645. [MarshalAs(UnmanagedType.I4)]
  646. public int nType;
  647. [MarshalAs(UnmanagedType.I4)]
  648. public int nSubType;
  649. [MarshalAs(UnmanagedType.Struct, SizeConst = 16)]
  650. public SYSTEMTIME tmAlarm;
  651. [MarshalAs(UnmanagedType.I4)]
  652. public int nChannel;
  653. [MarshalAs(UnmanagedType.I4)]
  654. public int nController;
  655. [MarshalAs(UnmanagedType.I4)]
  656. public int nDataType;
  657. [MarshalAs(UnmanagedType.I4)]
  658. public int nPoint;
  659. [MarshalAs(UnmanagedType.Struct, SizeConst = 16)]
  660. public SYSTEMTIME tmAck;
  661. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  662. public string szName;
  663. public byte[] Serialize()
  664. {
  665. var buffer = new byte[Marshal.SizeOf(typeof(iCosAlarmAckNotify))];
  666. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  667. var pBuffer = gch.AddrOfPinnedObject();
  668. Marshal.StructureToPtr(this, pBuffer, false);
  669. gch.Free();
  670. return buffer;
  671. }
  672. public void Deserialize(byte[] data)
  673. {
  674. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  675. this = (iCosAlarmAckNotify)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosAlarmAckNotify));
  676. gch.Free();
  677. }
  678. }
  679. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  680. public struct iCosAlarmDelete
  681. {
  682. [MarshalAs(UnmanagedType.I4)]
  683. public int nLength;
  684. [MarshalAs(UnmanagedType.I4)]
  685. public int nType;
  686. [MarshalAs(UnmanagedType.I4)]
  687. public int nSubType;
  688. [MarshalAs(UnmanagedType.Struct, SizeConst = 16)]
  689. public SYSTEMTIME tmAlarm;
  690. [MarshalAs(UnmanagedType.I4)]
  691. public int nChannel;
  692. [MarshalAs(UnmanagedType.I4)]
  693. public int nController;
  694. [MarshalAs(UnmanagedType.I4)]
  695. public int nDataType;
  696. [MarshalAs(UnmanagedType.I4)]
  697. public int nPoint;
  698. public byte[] Serialize()
  699. {
  700. var buffer = new byte[Marshal.SizeOf(typeof(iCosAlarmDelete))];
  701. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  702. var pBuffer = gch.AddrOfPinnedObject();
  703. Marshal.StructureToPtr(this, pBuffer, false);
  704. gch.Free();
  705. return buffer;
  706. }
  707. public void Deserialize(byte[] data)
  708. {
  709. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  710. this = (iCosAlarmDelete)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosAlarmDelete));
  711. gch.Free();
  712. }
  713. }
  714. [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
  715. public struct iCosAlarmAllAck
  716. {
  717. [MarshalAs(UnmanagedType.I4)]
  718. public int nLength;
  719. [MarshalAs(UnmanagedType.I4)]
  720. public int nType;
  721. [MarshalAs(UnmanagedType.I4)]
  722. public int nSubType;
  723. [MarshalAs(UnmanagedType.Struct, SizeConst = 16)]
  724. public SYSTEMTIME tmAck;
  725. [MarshalAs(UnmanagedType.I4)]
  726. public int nUserLevel;
  727. [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
  728. public string szAckUser;
  729. public byte[] Serialize()
  730. {
  731. var buffer = new byte[Marshal.SizeOf(typeof(iCosAlarmAllAck))];
  732. var gch = GCHandle.Alloc(buffer, GCHandleType.Pinned);
  733. var pBuffer = gch.AddrOfPinnedObject();
  734. Marshal.StructureToPtr(this, pBuffer, false);
  735. gch.Free();
  736. return buffer;
  737. }
  738. public void Deserialize(byte[] data)
  739. {
  740. var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
  741. this = (iCosAlarmAllAck)Marshal.PtrToStructure(gch.AddrOfPinnedObject(), typeof(iCosAlarmAllAck));
  742. gch.Free();
  743. }
  744. }
  745. public class iCosTag
  746. {
  747. public int nChannel;
  748. public int nController;
  749. public int nDataType;
  750. public int nPoint;
  751. public int nState;
  752. public byte digital;
  753. public double analog;
  754. public string szText;
  755. }
  756. public class iCosTagIndex
  757. {
  758. public string szTag;
  759. public int nChannel;
  760. public int nController;
  761. public int nDataType;
  762. public int nPoint;
  763. }
  764. public class ClientData
  765. {
  766. public Socket clientSocket;
  767. public NetworkStream readStream;
  768. public string ipAddress;
  769. public int nPort;
  770. public string icosId;
  771. public string icosPassword;
  772. public List<string> RegTag = new List<string>();
  773. }
  774. }