| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #pragma once
- //准点计算类型定义
- enum ONTIME_CAL_TYPE
- {
- ONTIME_CALTYPE_HSR = 1, //准点计算类型-国铁
- ONTIME_CALTYPE_METRO = 2 //准点计算类型-地铁
- };
- //基本定义
- const int MAX_LMTSP_CNT = 50; //单个区间限速个数最大值
- const int MAX_POINT_CNT = 10000; //单个曲线最大记录个数
- const int MAX_STRING_LENGTH = 20; //字符串最大长度
- //限速数据
- struct Limit_Speed
- {
- double dStartMile; //起点里程 单位:m
- double dEndMile; //终点里程 单位:m
- double dLimitSpeed; //限速值 单位:km/h
- Limit_Speed() { memset(this,0,sizeof(Limit_Speed));}
- };
- //线路数据
- struct TrackProfileData
- {
- char m_StrTrainName[MAX_STRING_LENGTH]; //车型名称
- double nRunTime; //区间运行时分
- double dLength; //当前区间长度
- double dDepartureMile; //列车发车位置
- double dArriveMile; //列车到达位置
- double dStartSpeed; //列车发车速度
- double dEndSpeed; //列车到达速度
- int nLmtSpCnt; //当前区间限速个数
- Limit_Speed LimitSpeed[MAX_LMTSP_CNT]; //当前区间限速数据
- TrackProfileData() { memset(this,0,sizeof(TrackProfileData)); }
- };
- struct Single_OnTime_Curve
- {
- double dRealRunTime;
- int nPointCnt; //输出曲线点个数
- double dTime[MAX_POINT_CNT]; //时间,单位:s
- double dMile[MAX_POINT_CNT]; //里程(绝对距离),单位:s
- float fSpeed[MAX_POINT_CNT]; //速度,单位:m/s
- float fAcc[MAX_POINT_CNT]; //加速度,单位:m/s^2
- float fMaxSpeed[MAX_POINT_CNT]; //最大速度,单位:m/s
- short nWorkStatus[MAX_POINT_CNT]; //工况
- void Reset() { memset(this,0,sizeof(Single_OnTime_Curve)); }
- Single_OnTime_Curve() { Reset(); }
- };
- class COnTime_CurvesCal_I
- {
- public:
- virtual ~COnTime_CurvesCal_I() {};
- public:
- virtual BOOL Make_OnTime_Curve( TrackProfileData RoadData ) = 0;
- virtual void Get_OnTime_Curve( Single_OnTime_Curve& OnTimeCurve ) = 0;
- };
- typedef void* (__stdcall *ONTIMECAL_CREATE)(int nOnTimeCalType); //创建实例
- typedef void (__stdcall *ONTIMECAL_RELEASE)(LPVOID lpInstance); //删除实例
|