JsonExtensions.cs 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Converters;
  3. using Newtonsoft.Json.Linq;
  4. using System.Collections.Generic;
  5. using System.ComponentModel;
  6. using System.Data;
  7. using System.Reflection;
  8. using WCS.Entity.Protocol;
  9. namespace WCS_Client
  10. {
  11. /// <summary>
  12. /// 扩展.json序列反序列化
  13. /// </summary>
  14. public static partial class JsonExtensions
  15. {
  16. /// <summary>
  17. /// 转成json对象
  18. /// </summary>
  19. /// <param name="Json">json字串</param>
  20. /// <returns></returns>
  21. public static object ToJson(this string Json)
  22. {
  23. return Json == null ? null : JsonConvert.DeserializeObject(Json);
  24. }
  25. /// <summary>
  26. /// 转成json字串
  27. /// </summary>
  28. /// <param name="obj">对象</param>
  29. /// <returns></returns>
  30. public static string ToJson(this object obj)
  31. {
  32. var timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };
  33. return JsonConvert.SerializeObject(obj, timeConverter);
  34. }
  35. /// <summary>
  36. /// 转成json字串
  37. /// </summary>
  38. /// <param name="obj">对象</param>
  39. /// <param name="datetimeformats">时间格式化</param>
  40. /// <returns></returns>
  41. public static string ToJson(this object obj, string datetimeformats)
  42. {
  43. var timeConverter = new IsoDateTimeConverter { DateTimeFormat = datetimeformats };
  44. return JsonConvert.SerializeObject(obj, timeConverter);
  45. }
  46. /// <summary>
  47. /// 字串反序列化成指定对象实体
  48. /// </summary>
  49. /// <typeparam name="T">实体类型</typeparam>
  50. /// <param name="Json">字串</param>
  51. /// <returns></returns>
  52. public static T ToObject<T>(this string Json)
  53. {
  54. return Json == null ? default(T) : JsonConvert.DeserializeObject<T>(Json);
  55. }
  56. /// <summary>
  57. /// 字串反序列化成指定对象实体(列表)
  58. /// </summary>
  59. /// <typeparam name="T">实体类型</typeparam>
  60. /// <param name="Json">字串</param>
  61. /// <returns></returns>
  62. public static List<T> ToList<T>(this string Json)
  63. {
  64. return Json == null ? null : JsonConvert.DeserializeObject<List<T>>(Json);
  65. }
  66. /// <summary>
  67. /// 字串反序列化成DataTable
  68. /// </summary>
  69. /// <param name="Json">字串</param>
  70. /// <returns></returns>
  71. public static DataTable ToTable(this string Json)
  72. {
  73. return Json == null ? null : JsonConvert.DeserializeObject<DataTable>(Json);
  74. }
  75. /// <summary>
  76. /// 字串反序列化成linq对象
  77. /// </summary>
  78. /// <param name="Json">字串</param>
  79. /// <returns></returns>
  80. public static JObject ToJObject(this string Json)
  81. {
  82. return Json == null ? JObject.Parse("{}") : JObject.Parse(Json.Replace("&nbsp;", ""));
  83. }
  84. public static DataTable GetAttributesDataTable(this SCData obj)
  85. {
  86. var tb = new DataTable(obj.GetType().Name);
  87. tb.Columns.Add("信号说明", typeof(string));
  88. tb.Columns.Add("信号名称", typeof(string));
  89. tb.Columns.Add("信号值", typeof(string));
  90. foreach (PropertyInfo pi in obj.D521.GetType().GetProperties())
  91. {
  92. AttributeCollection attributes = TypeDescriptor.GetProperties(obj.D521.GetType())[pi.Name].Attributes;
  93. DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];
  94. string describle = myAttribute.Description;
  95. string proname = pi.Name;
  96. var abc = pi.GetValue(obj.D521, null);
  97. switch (proname)
  98. {
  99. case "Alarm":
  100. describle = "警报";
  101. break;
  102. case "Col_1":
  103. describle = "当前列";
  104. break;
  105. case "Col_2":
  106. describle = "当前列";
  107. break;
  108. case "DEVICE":
  109. describle = "设备";
  110. break;
  111. case "ECol_1":
  112. describle = "目标列";
  113. break;
  114. case "ECol_2":
  115. describle = "目标列";
  116. break;
  117. case "EDepth_1":
  118. describle = "目标深度";
  119. break;
  120. case "EDepth_2":
  121. describle = "目标深度";
  122. break;
  123. case "ELayer_1":
  124. describle = "目标层";
  125. break;
  126. case "ELayer_2":
  127. describle = "目标层";
  128. break;
  129. case "ELine_1":
  130. describle = "目标行";
  131. break;
  132. case "ELine_2":
  133. describle = "目标行";
  134. break;
  135. case "ENALBLE":
  136. describle = "是否可用";
  137. break;
  138. case "FRAME":
  139. describle = "时间";
  140. break;
  141. case "FinishedTask_1":
  142. describle = "已完成任务号";
  143. break;
  144. case "FinishedTask_2":
  145. describle = "已完成任务号";
  146. break;
  147. case "ForkPos_1":
  148. describle = "Z轴位置 货叉";
  149. break;
  150. case "ForkPos_2":
  151. describle = "Z轴位置 货叉";
  152. break;
  153. case "ForkStatus_1":
  154. describle = "货叉状态";
  155. break;
  156. case "ForkStatus_2":
  157. describle = "货叉状态";
  158. break;
  159. case "GoodsType_1":
  160. describle = "货物类型";
  161. break;
  162. case "GoodsType_2":
  163. describle = "货物类型";
  164. break;
  165. case "ID":
  166. describle = "";
  167. break;
  168. case "ISLAST":
  169. describle = "";
  170. break;
  171. case "Layer_1":
  172. describle = "当前层";
  173. break;
  174. case "Layer_2":
  175. describle = "当前层";
  176. break;
  177. case "LiftPos_1":
  178. describle = "Y轴位置 提升";
  179. break;
  180. case "LiftPos_2":
  181. describle = "Y轴位置 提升";
  182. break;
  183. case "Line_1":
  184. describle = "当前行";
  185. break;
  186. case "Line_2":
  187. describle = "当前行";
  188. break;
  189. case "Mode_1":
  190. describle = "模式";
  191. break;
  192. case "Mode_2":
  193. describle = "模式";
  194. break;
  195. case "RES9_1":
  196. describle = "备用 PLCname=Start_number1";
  197. break;
  198. case "RES9_2":
  199. describle = "备用 PLCname=Start_number2";
  200. break;
  201. case "RES10_1":
  202. describle = "备用 PLCname=End_number1";
  203. break;
  204. case "RES10_2":
  205. describle = "备用 PLCname=End_number2";
  206. break;
  207. case "RES11_1":
  208. describle = "备用";
  209. break;
  210. case "RES11_2":
  211. describle = "备用";
  212. break;
  213. case "RES12_1":
  214. describle = "备用";
  215. break;
  216. case "RES12_2":
  217. describle = "备用";
  218. break;
  219. case "RES13_1":
  220. describle = "备用";
  221. break;
  222. case "RES13_2":
  223. describle = "备用";
  224. break;
  225. case "RES14_1":
  226. describle = "备用";
  227. break;
  228. case "RES14_2":
  229. describle = "备用";
  230. break;
  231. case "RunTime":
  232. describle = "运行时间";
  233. break;
  234. case "RunTime_1":
  235. describle = "运行时长";
  236. break;
  237. case "RunTime_2":
  238. describle = "运行时长";
  239. break;
  240. case "SCol_1":
  241. describle = "起始列";
  242. break;
  243. case "SCol_2":
  244. describle = "起始列";
  245. break;
  246. case "SDepth_1":
  247. describle = "起始深度";
  248. break;
  249. case "SDepth_2":
  250. describle = "起始深度";
  251. break;
  252. case "SLayer_1":
  253. describle = "起始层";
  254. break;
  255. case "SLayer_2":
  256. describle = "起始层";
  257. break;
  258. case "SLine_1":
  259. describle = "起始行";
  260. break;
  261. case "SLine_2":
  262. describle = "起始行";
  263. break;
  264. case "SRMMode":
  265. describle = "模式";
  266. break;
  267. case "SRMStatus":
  268. describle = "状态";
  269. break;
  270. case "Status_1":
  271. describle = "2状态";
  272. break;
  273. case "Status_2":
  274. describle = "1状态";
  275. break;
  276. case "TaskID_1":
  277. describle = "任务号";
  278. break;
  279. case "TaskID_2":
  280. describle = "任务号";
  281. break;
  282. case "TotalKM_1":
  283. describle = "总里程";
  284. break;
  285. case "TotalKM_2":
  286. describle = "总里程";
  287. break;
  288. case "TralelPos_1":
  289. describle = "X轴位置(0.1毫米) 行走";
  290. break;
  291. case "TralelPos_2":
  292. describle = "X轴位置(0.1毫米) 行走";
  293. break;
  294. case "UPDATETIME":
  295. describle = "更新时间";
  296. break;
  297. case "UPDATEUSER":
  298. describle = "更新用户";
  299. break;
  300. case "VER":
  301. describle = "版本";
  302. break;
  303. case "VoucherNo_1":
  304. describle = "触发信号";
  305. break;
  306. case "VoucherNo_2":
  307. describle = "触发信号";
  308. break;
  309. case "WCSVERSION":
  310. describle = "WCS版本";
  311. break;
  312. }
  313. var values = new object[3];
  314. values[0] = describle;
  315. values[1] = "DB521_" + proname;
  316. values[2] = abc;
  317. tb.Rows.Add(values);
  318. }
  319. foreach (PropertyInfo pi in obj.D520.GetType().GetProperties())
  320. {
  321. AttributeCollection attributes = TypeDescriptor.GetProperties(obj.D520.GetType())[pi.Name].Attributes;
  322. DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];
  323. string describle = myAttribute.Description;
  324. string proname = pi.Name;
  325. var abc = pi.GetValue(obj.D520, null);
  326. switch (proname)
  327. {
  328. case "SLine_1":
  329. describle = "起始行";
  330. break;
  331. case "SLine_2":
  332. describle = "起始行";
  333. break;
  334. case "SCol_1":
  335. describle = "起始列";
  336. break;
  337. case "SCol_2":
  338. describle = "起始列";
  339. break;
  340. case "SLayer_1":
  341. describle = "起始层";
  342. break;
  343. case "SLayer_2":
  344. describle = "起始层";
  345. break;
  346. case "SDepth_1":
  347. describle = "起始深度";
  348. break;
  349. case "SDepth_2":
  350. describle = "起始深度";
  351. break;
  352. case "Col_1":
  353. describle = "当前列";
  354. break;
  355. case "Col_2":
  356. describle = "当前列";
  357. break;
  358. case "ELine_1":
  359. describle = "目标行";
  360. break;
  361. case "ELine_2":
  362. describle = "目标行";
  363. break;
  364. case "ECol_1":
  365. describle = "目标列";
  366. break;
  367. case "ECol_2":
  368. describle = "目标列";
  369. break;
  370. case "ELayer_1":
  371. describle = "目标层";
  372. break;
  373. case "ELayer_2":
  374. describle = "目标层";
  375. break;
  376. case "EDepth_1":
  377. describle = "目标深度";
  378. break;
  379. case "EDepth_2":
  380. describle = "目标深度";
  381. break;
  382. case "DEVICE":
  383. describle = "设备";
  384. break;
  385. case "ENALBLE":
  386. describle = "是否可用";
  387. break;
  388. case "FRAME":
  389. describle = "时间";
  390. break;
  391. case "FinishedACK_1":
  392. describle = "完成任务触发";
  393. break;
  394. case "FinishedACK_2":
  395. describle = "完成任务触发";
  396. break;
  397. case "GoodsType_1":
  398. describle = "货物类型";
  399. break;
  400. case "GoodsType_2":
  401. describle = "货物类型";
  402. break;
  403. case "Handshake_1":
  404. describle = "WCS心跳信号";
  405. break;
  406. case "Handshake_2":
  407. describle = "WCS心跳信号";
  408. break;
  409. case "ID":
  410. describle = "ID";
  411. break;
  412. case "ISLAST":
  413. describle = "";
  414. break;
  415. case "RES1_1":
  416. describle = "货物数量";
  417. break;
  418. case "RES1_2":
  419. describle = "货物数量";
  420. break;
  421. case "RES2_1":
  422. describle = "备用";
  423. break;
  424. case "RES2_2":
  425. describle = "备用";
  426. break;
  427. case "RES3_1":
  428. describle = "备用";
  429. break;
  430. case "RES3_2":
  431. describle = "备用";
  432. break;
  433. case "RES4_1":
  434. describle = "备用";
  435. break;
  436. case "RES4_2":
  437. describle = "备用";
  438. break;
  439. case "SCSpeedMode_1":
  440. describle = "行驶速度";
  441. break;
  442. case "SCSpeedMode_2":
  443. describle = "行驶速度";
  444. break;
  445. case "TaskID_1":
  446. describle = "任务号";
  447. break;
  448. case "TaskID_2":
  449. describle = "任务号";
  450. break;
  451. case "UPDATETIME":
  452. describle = "更新时间";
  453. break;
  454. case "UPDATEUSER":
  455. describle = "更新用户";
  456. break;
  457. case "VER":
  458. describle = "版本";
  459. break;
  460. case "VoucherNo_1":
  461. describle = "触发信号";
  462. break;
  463. case "VoucherNo_2":
  464. describle = "触发信号";
  465. break;
  466. case "WCSVERSION":
  467. describle = "WCS版本";
  468. break;
  469. }
  470. var values = new object[3];
  471. values[0] = describle;
  472. values[1] = "DB520_" + proname;
  473. values[2] = abc;
  474. tb.Rows.Add(values);
  475. }
  476. foreach (PropertyInfo pi in obj.D537.GetType().GetProperties())
  477. {
  478. AttributeCollection attributes = TypeDescriptor.GetProperties(obj.D537.GetType())[pi.Name].Attributes;
  479. DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];
  480. string describle = myAttribute.Description;
  481. string proname = "DB537_" + pi.Name;
  482. var abc = pi.GetValue(obj.D537, null);
  483. switch (pi.Name)
  484. {
  485. case "DEVICE":
  486. describle = "设备";
  487. break;
  488. case "ENALBLE":
  489. describle = "是否可用";
  490. break;
  491. case "FRAME":
  492. describle = "时间";
  493. break;
  494. case "ID":
  495. describle = "ID";
  496. break;
  497. case "ISLAST":
  498. describle = "";
  499. break;
  500. case "SCAlarm":
  501. describle = "警报";
  502. break;
  503. case "UPDATETIME":
  504. describle = "更新时间";
  505. break;
  506. case "UPDATEUSER":
  507. describle = "更新用户";
  508. break;
  509. case "VER":
  510. describle = "版本";
  511. break;
  512. case "WCSVERSION":
  513. describle = "WCS版本";
  514. break;
  515. }
  516. var values = new object[3];
  517. values[0] = describle;
  518. values[1] = proname;
  519. values[2] = abc;
  520. tb.Rows.Add(values);
  521. }
  522. //属性遍历
  523. return tb;
  524. }
  525. public static DataTable GetAttributesDataTable(this StationData obj)
  526. {
  527. var tb = new DataTable(obj.GetType().Name);
  528. tb.Columns.Add("信号说明", typeof(string));
  529. tb.Columns.Add("信号名称", typeof(string));
  530. tb.Columns.Add("信号值", typeof(string));
  531. foreach (PropertyInfo pi in obj.D521.GetType().GetProperties())
  532. {
  533. AttributeCollection attributes = TypeDescriptor.GetProperties(obj.D521.GetType())[pi.Name].Attributes;
  534. DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];
  535. string describle = myAttribute.Description;
  536. string proname = pi.Name;
  537. var abc = pi.GetValue(obj.D521, null);
  538. switch (proname)
  539. {
  540. case "Tasknum":
  541. describle = "任务号";
  542. break;
  543. case "CmdType":
  544. describle = "命令类型";
  545. break;
  546. case "DEVICE":
  547. describle = "设备";
  548. break;
  549. case "ENABLED":
  550. describle = "";
  551. break;
  552. case "FRAME":
  553. describle = "";
  554. break;
  555. case "GoodsSize":
  556. describle = "货物高度";
  557. break;
  558. case "Goodscode":
  559. describle = "货物数条码";
  560. break;
  561. case "Goodsend":
  562. describle = "目标地址";
  563. break;
  564. case "Goodsnum":
  565. describle = "货物数量(1.两个位置放1个货物,2.两个位置放2个货物)";
  566. break;
  567. case "Goodsstart":
  568. describle = "起始地址";
  569. break;
  570. case "ID":
  571. describle = "";
  572. break;
  573. case "ISLAST":
  574. describle = "";
  575. break;
  576. case "Request":
  577. describle = "请求";
  578. break;
  579. case "Status":
  580. describle = "输送机状态";
  581. break;
  582. case "UPTATETIME":
  583. describle = "更新时间";
  584. break;
  585. case "UPDATEUSER":
  586. describle = "更新用户";
  587. break;
  588. case "VER":
  589. describle = "";
  590. break;
  591. case "VoucherNo":
  592. describle = "凭证号 每次累加";
  593. break;
  594. case "WCSVERSION":
  595. describle = "WCS版本";
  596. break;
  597. }
  598. var values = new object[3];
  599. values[0] = describle;
  600. values[1] = "DB521_" + proname;
  601. values[2] = abc;
  602. tb.Rows.Add(values);
  603. }
  604. foreach (PropertyInfo pi in obj.D520.GetType().GetProperties())
  605. {
  606. AttributeCollection attributes = TypeDescriptor.GetProperties(obj.D520.GetType())[pi.Name].Attributes;
  607. DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];
  608. string describle = myAttribute.Description;
  609. string proname = pi.Name;
  610. var abc = pi.GetValue(obj.D520, null);
  611. switch (proname)
  612. {
  613. case "Tasknum":
  614. describle = "任务号";
  615. break;
  616. case "CmdType":
  617. describle = "命令类型";
  618. break;
  619. case "DEVICE":
  620. describle = "设备";
  621. break;
  622. case "ENABLED":
  623. describle = "";
  624. break;
  625. case "FRAME":
  626. describle = "";
  627. break;
  628. case "GoodsSize":
  629. describle = "货物高度";
  630. break;
  631. case "Goodscode":
  632. describle = "货物数条码";
  633. break;
  634. case "Goodsend":
  635. describle = "目标地址";
  636. break;
  637. case "Goodsnum":
  638. describle = "货物数量(1.两个位置放1个货物,2.两个位置放2个货物)";
  639. break;
  640. case "Goodsstart":
  641. describle = "起始地址";
  642. break;
  643. case "ID":
  644. describle = "";
  645. break;
  646. case "ISLAST":
  647. describle = "";
  648. break;
  649. case "Request":
  650. describle = "请求";
  651. break;
  652. case "Istation521Status":
  653. describle = "输送机状态";
  654. break;
  655. case "UPTATETIME":
  656. describle = "更新时间";
  657. break;
  658. case "UPDATEUSER":
  659. describle = "更新用户";
  660. break;
  661. case "VER":
  662. describle = "";
  663. break;
  664. case "VoucherNo":
  665. describle = "凭证号 每次累加";
  666. break;
  667. case "WCSVERSION":
  668. describle = "WCS版本";
  669. break;
  670. }
  671. var values = new object[3];
  672. values[0] = describle;
  673. values[1] = "DB520_" + proname;
  674. values[2] = abc;
  675. tb.Rows.Add(values);
  676. }
  677. foreach (PropertyInfo pi in obj.D523.GetType().GetProperties())
  678. {
  679. AttributeCollection attributes = TypeDescriptor.GetProperties(obj.D523.GetType())[pi.Name].Attributes;
  680. DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];
  681. string describle = myAttribute.Description;
  682. string proname = "DB523_" + pi.Name;
  683. var abc = pi.GetValue(obj.D523, null);
  684. switch (pi.Name)
  685. {
  686. case "Alarm":
  687. describle = "警报";
  688. break;
  689. case "DEVICE":
  690. describle = "设备";
  691. break;
  692. case "ENABLED":
  693. describle = "是否可用";
  694. break;
  695. case "FRAME":
  696. describle = "时间";
  697. break;
  698. case "ID":
  699. describle = "编码";
  700. break;
  701. case "ISLAST":
  702. describle = "";
  703. break;
  704. case "RES":
  705. describle = "备用";
  706. break;
  707. case "RunTime":
  708. describle = "运行时间";
  709. break;
  710. case "Status":
  711. describle = "输送机状态";
  712. break;
  713. case "UPDATETIME":
  714. describle = "更新时间";
  715. break;
  716. case "UPDATEUSER":
  717. describle = "更新用户";
  718. break;
  719. case "VER":
  720. describle = "版本";
  721. break;
  722. case "WCSVERSION":
  723. describle = "WCS版本";
  724. break;
  725. }
  726. var values = new object[3];
  727. values[0] = describle;
  728. values[1] = proname;
  729. values[2] = abc;
  730. tb.Rows.Add(values);
  731. }
  732. //属性遍历
  733. return tb;
  734. }
  735. public static DataTable GetAttributesDataTable(this RGVData obj)
  736. {
  737. var tb = new DataTable(obj.GetType().Name);
  738. tb.Columns.Add("信号说明", typeof(string));
  739. tb.Columns.Add("信号名称", typeof(string));
  740. tb.Columns.Add("信号值", typeof(string));
  741. foreach (PropertyInfo pi in obj.D521.GetType().GetProperties())
  742. {
  743. AttributeCollection attributes = TypeDescriptor.GetProperties(obj.D521.GetType())[pi.Name].Attributes;
  744. DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];
  745. string describle = myAttribute.Description;
  746. string proname = pi.Name;
  747. var abc = pi.GetValue(obj.D521, null);
  748. switch (proname)
  749. {
  750. case "DEVICE":
  751. describle = "设备";
  752. break;
  753. case "DestPosition_1":
  754. describle = "目标站台";
  755. break;
  756. case "DestPosition_2":
  757. describle = "目标站台";
  758. break;
  759. case "ENALBLE":
  760. describle = "是否可用";
  761. break;
  762. case "FRAME":
  763. describle = "时间";
  764. break;
  765. case "ID":
  766. describle = "ID";
  767. break;
  768. case "ISLAST":
  769. describle = "";
  770. break;
  771. case "Mileage":
  772. describle = "里程";
  773. break;
  774. case "PRIORITY_1":
  775. describle = "优先级";
  776. break;
  777. case "PRIORITY_2":
  778. describle = "优先级";
  779. break;
  780. case "Position":
  781. describle = "位置";
  782. break;
  783. case "RES1_1":
  784. describle = "备用";
  785. break;
  786. case "RES1_2":
  787. describle = "备用";
  788. break;
  789. case "RES2_1":
  790. describle = "备用";
  791. break;
  792. case "RES2_2":
  793. describle = "备用";
  794. break;
  795. case "RES_6":
  796. describle = "备用";
  797. break;
  798. case "RunTime":
  799. describle = "运行时间";
  800. break;
  801. case "StartPosition_1":
  802. describle = "起始站台";
  803. break;
  804. case "StartPosition_2":
  805. describle = "起始站台";
  806. break;
  807. case "Status_1":
  808. describle = "RGV运行状态";
  809. break;
  810. case "Status_2":
  811. describle = "RGV运行状态";
  812. break;
  813. case "SystemStatus":
  814. describle = "系统状态";
  815. break;
  816. case "TaskID_1":
  817. describle = "任务号";
  818. break;
  819. case "TaskID_2":
  820. describle = "任务号";
  821. break;
  822. case "TaskType_1":
  823. describle = "任务类型";
  824. break;
  825. case "TaskType_2":
  826. describle = "任务类型";
  827. break;
  828. case "Trigger_1":
  829. describle = "触发信号";
  830. break;
  831. case "Trigger_2":
  832. describle = "触发信号";
  833. break;
  834. case "UPDATETIME":
  835. describle = "更新时间";
  836. break;
  837. case "UPDATEUSER":
  838. describle = "更新用户";
  839. break;
  840. case "VER":
  841. describle = "版本";
  842. break;
  843. case "WCSVERSION":
  844. describle = "WCS版本";
  845. break;
  846. case "WorkMode":
  847. describle = "RGV运行模式";
  848. break;
  849. }
  850. var values = new object[3];
  851. values[0] = describle;
  852. values[1] = "DB521_" + proname;
  853. values[2] = abc;
  854. tb.Rows.Add(values);
  855. }
  856. foreach (PropertyInfo pi in obj.D520.GetType().GetProperties())
  857. {
  858. AttributeCollection attributes = TypeDescriptor.GetProperties(obj.D520.GetType())[pi.Name].Attributes;
  859. DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];
  860. string describle = myAttribute.Description;
  861. string proname = pi.Name;
  862. var abc = pi.GetValue(obj.D520, null);
  863. switch (proname)
  864. {
  865. case "DEVICE":
  866. describle = "设备";
  867. break;
  868. case "DestPosition_1":
  869. describle = "目标站台";
  870. break;
  871. case "DestPosition_2":
  872. describle = "目标站台";
  873. break;
  874. case "ENALBLE":
  875. describle = "是否可用";
  876. break;
  877. case "FRAME":
  878. describle = "时间";
  879. break;
  880. case "ID":
  881. describle = "ID";
  882. break;
  883. case "ISLAST":
  884. describle = "";
  885. break;
  886. case "PRIORITY_1":
  887. describle = "优先级";
  888. break;
  889. case "PRIORITY_2":
  890. describle = "优先级";
  891. break;
  892. case "Position":
  893. describle = "位置";
  894. break;
  895. case "RES1_1":
  896. describle = "备用";
  897. break;
  898. case "RES1_2":
  899. describle = "备用";
  900. break;
  901. case "RES2_1":
  902. describle = "备用";
  903. break;
  904. case "RES2_2":
  905. describle = "备用";
  906. break;
  907. case "StartPosition_1":
  908. describle = "起始地址,环穿RGV无起始地址,只有目标地址";
  909. break;
  910. case "StartPosition_2":
  911. describle = "起始地址,环穿RGV无起始地址,只有目标地址";
  912. break;
  913. case "TaskID_1":
  914. describle = "任务号";
  915. break;
  916. case "TaskID_2":
  917. describle = "任务号";
  918. break;
  919. case "TaskType_1":
  920. describle = "任务类型";
  921. break;
  922. case "TaskType_2":
  923. describle = "任务类型";
  924. break;
  925. case "Trigger_1":
  926. describle = "触发信号";
  927. break;
  928. case "Trigger_2":
  929. describle = "触发信号";
  930. break;
  931. case "UPDATETIME":
  932. describle = "更新时间";
  933. break;
  934. case "UPDATEUSER":
  935. describle = "更新用户";
  936. break;
  937. case "VER":
  938. describle = "版本";
  939. break;
  940. case "WCSVERSION":
  941. describle = "WCS版本";
  942. break;
  943. }
  944. var values = new object[3];
  945. values[0] = describle;
  946. values[1] = "DB520_" + proname;
  947. values[2] = abc;
  948. tb.Rows.Add(values);
  949. }
  950. foreach (PropertyInfo pi in obj.D523.GetType().GetProperties())
  951. {
  952. AttributeCollection attributes = TypeDescriptor.GetProperties(obj.D523.GetType())[pi.Name].Attributes;
  953. DescriptionAttribute myAttribute = (DescriptionAttribute)attributes[typeof(DescriptionAttribute)];
  954. string describle = myAttribute.Description;
  955. string proname = "DB523_" + pi.Name;
  956. var abc = pi.GetValue(obj.D523, null);
  957. switch (pi.Name)
  958. {
  959. case "DEVICE":
  960. describle = "设备";
  961. break;
  962. case "ENALBLE":
  963. describle = "是否可用";
  964. break;
  965. case "FRAME":
  966. describle = "时间";
  967. break;
  968. case "Fault":
  969. describle = "RGV故障";
  970. break;
  971. case "Fault_1":
  972. describle = "RGV1工位故障";
  973. break;
  974. case "Fault_2":
  975. describle = "RGV2工位故障";
  976. break;
  977. case "ISLAST":
  978. describle = "";
  979. break;
  980. case "Status":
  981. describle = "环穿状态";
  982. break;
  983. case "Status_1":
  984. describle = "1工位状态";
  985. break;
  986. case "Status_2":
  987. describle = "2工位状态";
  988. break;
  989. case "ID":
  990. describle = "ID";
  991. break;
  992. case "UPDATETIME":
  993. describle = "更新时间";
  994. break;
  995. case "UPDATEUSER":
  996. describle = "更新用户";
  997. break;
  998. case "VER":
  999. describle = "版本";
  1000. break;
  1001. case "WCSVERSION":
  1002. describle = "WCS版本";
  1003. break;
  1004. }
  1005. var values = new object[3];
  1006. values[0] = describle;
  1007. values[1] = proname;
  1008. values[2] = abc;
  1009. tb.Rows.Add(values);
  1010. }
  1011. //属性遍历
  1012. return tb;
  1013. }
  1014. }
  1015. }