Program.cs 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Threading;
  3. using Wayne.ForecourtControl;
  4. using Wayne.ForecourtControl.Fusion;
  5. using Wayne.Lib;
  6. namespace TestRun
  7. {
  8. class Program
  9. {
  10. static NLog.Logger mainLogger = NLog.LogManager.LoadConfiguration("nlog.config").GetLogger("Main");
  11. static string DEFAULT_FDC_SERVER_CONNECT_STRING = "Host=192.168.50.238,Port=4711,ClientId=101,ClientName=PetroChinaProxy,PortB=4711,PortC=4711";
  12. static IForecourtControl forecourtControl;
  13. static void Main(string[] args)
  14. {
  15. Console.WriteLine("Hello World!");
  16. var concreteFdcServerConnString = DEFAULT_FDC_SERVER_CONNECT_STRING.Replace("127.0.0.1", "127.0.0.1")
  17. .Replace("ClientId=101", "ClientId=" + "109");
  18. forecourtControl = Wayne.ForecourtControl.Fusion.FUSIONFactory.CreateForecourtControl(0);
  19. forecourtControl.OnConnectionStateChange += forecourtControl_OnConnectionStateChange;
  20. forecourtControl.Connect(concreteFdcServerConnString);
  21. while (true)
  22. Console.ReadLine();
  23. }
  24. static void forecourtControl_OnConnectionStateChange(object sender, ConnectionChangedEventArgs e)
  25. {
  26. mainLogger.Debug("forecourtControl_OnConnectionStateChange(), new state: " + e.ConnectionState);
  27. if (e.ConnectionState == Wayne.Lib.DeviceConnectionState.Disconnected)
  28. {
  29. Console.WriteLine("Disconnected to FC!");
  30. foreach (var pump in forecourtControl.Pumps)
  31. {
  32. pump.OnFuellingStateChange -= FdcCommunicator_OnFuellingStateChange;
  33. pump.OnNozzleStateChange -= FdcCommunicator_OnNozzleStateChange;
  34. pump.OnEventOccured -= FdcCommunicator_OnEventOccured;
  35. }
  36. }
  37. else if (e.ConnectionState == Wayne.Lib.DeviceConnectionState.Connected)
  38. {
  39. var fc = forecourtControl as FUSIONForecourtControl;
  40. //fc.manager.ifsfManager.LogOnSend("pos119");
  41. fc.manager.ifsfManager.GetDSPConfiguration((a, b) =>
  42. {
  43. Console.Write("GetDSPConfiguration response");
  44. }, 111, 111);
  45. // sometimes could not receive any notification from FDC server even attached the event handler,
  46. // suspect some underlying bug in communication layer, so here try sleep a while to avoid(probably) this.
  47. //
  48. Thread.Sleep(500);
  49. Console.WriteLine("Connected to FC!");
  50. foreach (var pump in forecourtControl.Pumps)
  51. {
  52. pump.OnFuellingStateChange += FdcCommunicator_OnFuellingStateChange;
  53. pump.OnNozzleStateChange += FdcCommunicator_OnNozzleStateChange;
  54. pump.OnEventOccured += FdcCommunicator_OnEventOccured;
  55. }
  56. //forecourtControl.SetSiteOpenedAsync(true, (_, __) => { }, null);
  57. }
  58. }
  59. private static void FdcCommunicator_OnEventOccured(object sender, PumpEventOccuredEventArgs e)
  60. {
  61. Console.WriteLine("fdc on event occured: " + e.EventType);
  62. }
  63. private static void FdcCommunicator_OnNozzleStateChange(object sender, NozzleStateChangeEventArgs e)
  64. {
  65. var pump = sender as IPump;
  66. Console.WriteLine("fdc OnNozzleStateChange, pump: " + pump.Id + ", nozzle: " + e.Nozzle.Id + ", nozzle state: " + e.NozzleState);
  67. }
  68. private static void FdcCommunicator_OnFuellingStateChange(object sender, FuellingStateChangeEventArgs e)
  69. {
  70. var pump = sender as IPump;
  71. Console.WriteLine("fdc OnFuellingStateChange, pump: " + pump.Id + ", nozzle: " + e.Fuelling.Nozzle.Id
  72. + ", nozzle state: " + e.State + ", amt: " + e.Fuelling.Amount + ", qty: " + e.Fuelling.Quantity
  73. + ", price: " + e.Fuelling.Price + ", seqNo.: " + e.Fuelling.FuellingSequenceNumber);
  74. }
  75. }
  76. }