📄 edfscheduledlg.h
字号:
// EDFScheduleDlg.h : 头文件
//
#pragma once
#include "TimeStatusBar.h"
#include "ExpandingDialog.h"
#include "BitMapWnd.h"
#include "afxcmn.h"
#include "afxwin.h"
#define CLOCK_TIMER 1
//
#define LEFTOFFSET 25
#define RIGHTOFFSET 50
#define BOTTOMOFFSET 50
#define BLOCKHEIGHT 15
#define BLOCKWIDTH 45
#define LINEHEIGHT 40
//
typedef struct tagTCB{
CString TaskName;//任务名称
double Period;//任务周期
double CPUTime;//任务所需的CPU时间
double RemainTime;//剩下需要的CPU时间
UINT nCount;//任务执行过了的次数
UINT nCountNT;//任务执行过了的次数,用于计数驱动。
double RemainTimeNT;//剩下需要的CPU时间,用于计数驱动。
}TCB;
// CEDFScheduleDlg 对话框
class CEDFScheduleDlg : public CExpandingDialog
{
// 构造
public:
CEDFScheduleDlg(CWnd* pParent = NULL); // 标准构造函数
// 对话框数据
enum { IDD = IDD_EDFSCHEDULE_DIALOG };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
protected:
BOOL m_bWorking;
CTimeStatusBar m_TSB;
CPtrArray m_TCBPtrArray;//保存着指向TCB指针的动态数组。
CString m_TaskName;
double m_Period;
double m_CPUTime;
double m_U;//当前所有任务的CPU利用率。
int m_Tid;//当前运行的任务的下标。-1表示让CPU空跑
unsigned long m_TimeCounter;//计时器,计算本次调度已经经过的秒数。
HICON m_hIcon;
CProgressCtrl m_TCBProgress;//任务进度条
CStatic m_TCBTitle;
protected:
//以下为非时间驱动调度及显示调度流程所用到数据成员。
CBitMapWnd m_BitmapCtrl;//显示绘制结果的控件。
CBitmap m_ShowFlowBitmap;//显示流程的位图。
CDC m_dcMem;
CBitmap* m_pOldBitmap;
int m_TidNT;//在计数驱动调度里面的当前正在执行的任务。-1表示让CPU空跑
unsigned long m_TimeCounterNT;//计时器,计算本次调度已经经过的秒数。
// 实现
protected:
// 生成的消息映射函数
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()
virtual void OnOK();
public:
BOOL Satisfy();//判断是否能把新的任务添加进来
void SelectTask();//选择下一个运行的任务
void StartToRun();
void EnableCtrls();//调度时把一些按钮会化掉
void ResetTask();//重新设置任务的信息。
public:
//以下为非时间驱动调度及显示调度流程的函数。
virtual BOOL OnDialogExpanding(BOOL bExpanded);
virtual void OnDialogExpanded(BOOL bExpanded);
BOOL CreateBitmapCtrl();
void ScheduleNotTimeDrived();
double GetMaxPeriod();
void SelectTaskNT();
void ResetTaskNT();
void DrawFitBitmap(double MaxCounter);
void DrawThePeriod();
public:
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnBnClickedRun();
afx_msg void OnBnClickedAdd();
afx_msg void OnBnClickedEnd();
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnDestroy();
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -