OnTime_CurvesCal_I.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #pragma once
  2. //准点计算类型定义
  3. enum ONTIME_CAL_TYPE
  4. {
  5. ONTIME_CALTYPE_HSR = 1, //准点计算类型-国铁
  6. ONTIME_CALTYPE_METRO = 2 //准点计算类型-地铁
  7. };
  8. //基本定义
  9. const int MAX_LMTSP_CNT = 50; //单个区间限速个数最大值
  10. const int MAX_POINT_CNT = 10000; //单个曲线最大记录个数
  11. const int MAX_STRING_LENGTH = 20; //字符串最大长度
  12. //限速数据
  13. struct Limit_Speed
  14. {
  15. double dStartMile; //起点里程 单位:m
  16. double dEndMile; //终点里程 单位:m
  17. double dLimitSpeed; //限速值 单位:km/h
  18. Limit_Speed() { memset(this,0,sizeof(Limit_Speed));}
  19. };
  20. //线路数据
  21. struct TrackProfileData
  22. {
  23. char m_StrTrainName[MAX_STRING_LENGTH]; //车型名称
  24. double nRunTime; //区间运行时分
  25. double dLength; //当前区间长度
  26. double dDepartureMile; //列车发车位置
  27. double dArriveMile; //列车到达位置
  28. double dStartSpeed; //列车发车速度
  29. double dEndSpeed; //列车到达速度
  30. int nLmtSpCnt; //当前区间限速个数
  31. Limit_Speed LimitSpeed[MAX_LMTSP_CNT]; //当前区间限速数据
  32. TrackProfileData() { memset(this,0,sizeof(TrackProfileData)); }
  33. };
  34. struct Single_OnTime_Curve
  35. {
  36. double dRealRunTime;
  37. int nPointCnt; //输出曲线点个数
  38. double dTime[MAX_POINT_CNT]; //时间,单位:s
  39. double dMile[MAX_POINT_CNT]; //里程(绝对距离),单位:s
  40. float fSpeed[MAX_POINT_CNT]; //速度,单位:m/s
  41. float fAcc[MAX_POINT_CNT]; //加速度,单位:m/s^2
  42. float fMaxSpeed[MAX_POINT_CNT]; //最大速度,单位:m/s
  43. short nWorkStatus[MAX_POINT_CNT]; //工况
  44. void Reset() { memset(this,0,sizeof(Single_OnTime_Curve)); }
  45. Single_OnTime_Curve() { Reset(); }
  46. };
  47. class COnTime_CurvesCal_I
  48. {
  49. public:
  50. virtual ~COnTime_CurvesCal_I() {};
  51. public:
  52. virtual BOOL Make_OnTime_Curve( TrackProfileData RoadData ) = 0;
  53. virtual void Get_OnTime_Curve( Single_OnTime_Curve& OnTimeCurve ) = 0;
  54. };
  55. typedef void* (__stdcall *ONTIMECAL_CREATE)(int nOnTimeCalType); //创建实例
  56. typedef void (__stdcall *ONTIMECAL_RELEASE)(LPVOID lpInstance); //删除实例