BlPlcInfo.cs 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using Newtonsoft.Json.Linq;
  2. using ProjectBase.Data.BaseDAL;
  3. using SIMDP.DAL.IDALSQL;
  4. using SIMDP.Model;
  5. using System;
  6. using System.Collections.Generic;
  7. namespace SIMDP.BLL
  8. {
  9. /// <summary>
  10. /// Plc配置信息
  11. /// </summary>
  12. public class BlPlcInfo : BaseBLL<MoPlcInfo>
  13. {
  14. private IDalPlcInfo dalPlcInfo;
  15. /// <summary>
  16. /// 构造函数
  17. /// </summary>
  18. public BlPlcInfo() : base()
  19. {
  20. base.Init(this.GetType().FullName, System.Reflection.Assembly.GetExecutingAssembly().GetName().Name);
  21. dalPlcInfo = baseDal as IDalPlcInfo;
  22. dalPlcInfo.OnOperationLog += new OperationLogEventHandler(BlLogOperation.OnOperationLog);
  23. }
  24. /// <summary>
  25. /// 获取PLC配置信息
  26. /// </summary>
  27. /// <param name="id">plc id</param>
  28. /// <param name="name">plc名称</param>
  29. /// <returns></returns>
  30. public List<MoPlcInfo> GetActivePLC()
  31. {
  32. string sql = string.Format("SELECT * FROM plc_info where link_type <> 99");
  33. return dalPlcInfo.GetList(sql, null);
  34. }
  35. /// <summary>
  36. /// 从PLC表中获取扫码枪的IP端口号
  37. /// </summary>
  38. /// <returns></returns>
  39. public bool GetScannerParams(string plc_name, out string Ip, out int port)
  40. {
  41. Ip = "";
  42. port = 0;
  43. string sql = $"select top 1 link_config from plc_info where plc_name like '{plc_name}%' ";
  44. string linkconfig = dalPlcInfo.SqlValueList(sql);
  45. if (string.IsNullOrEmpty(linkconfig)) return false;
  46. try
  47. {
  48. ScannerInfo info = new ScannerInfo(linkconfig);
  49. Ip = info.Ip;
  50. port = info.Port;
  51. return true;
  52. }
  53. catch
  54. {
  55. return false;
  56. }
  57. }
  58. internal class ScannerInfo
  59. {
  60. internal ScannerInfo(string json)
  61. {
  62. JObject jObject = JObject.Parse(json);
  63. JToken token = jObject["Ip"];
  64. if (token != null) Ip = token.ToString();
  65. token = jObject["Port"];
  66. if (token != null) Port = Convert.ToInt32(token);
  67. }
  68. internal string Ip { get; set; }
  69. internal int Port { get; set; }
  70. }
  71. }
  72. }