⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rudderdevice.h

📁 上位机图形显示程序,可用于8051单片机的开发,通信及控制
💻 H
字号:
/////////////////////////////////////////////////////////
//			舵型指示设备RudderDevice封装类
//	版本:1.05
//	最后修改日期:2002.1.25
/////////////////////////////////////////////////////////

#if !defined(AFX_RUDDERDEVICE_H__A0E65EC3_ED3F_426E_ACCE_6B554EC12456__INCLUDED_)
#define AFX_RUDDERDEVICE_H__A0E65EC3_ED3F_426E_ACCE_6B554EC12456__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// RudderDevice.h : header file
//

#define PI	3.14159265	//圆周率
#define ANG	PI/180 		//1度的角度相对的弧度值

//下面的宏定义仪表的工作状态
#define RD_TEST		0	//仪表的自检状态
#define RD_UPDATED	1	//仪表的工作状态之一,表示档位已经到达正确位置
#define RD_UPDATING	2	//仪表的工作状态之一,表示档位位置正在更新
#define RD_SHUTDOWN	3	//仪表的关闭状态,不作任何动作

/////////////////////////////////////////////////////////////////////////////
// RudderDevice window

class RudderDevice : public CStatic
{
// Construction
public:
	RudderDevice(CWnd * parent);

// Attributes
public:

// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(RudderDevice)
	//}}AFX_VIRTUAL

// Implementation
public:
	void RD_SetAxleRadius(UINT radius);
	void RD_SetFrameThick(UINT thick);
	void RD_SetTextDarkColor(COLORREF color);
	void RD_SetTextLightColor(COLORREF color);
	void RD_SetHasAxle(UINT command);
	void RD_SetText(CString textleft, CString textright);
	void RD_SetFontSize(UINT size);
	void RD_SetLampSize(UINT width, UINT height);
	void RD_SetLampOffset(int x, int y);
	void RD_SetOrigin(int x, int y);
	void RD_SetFrameRadius(UINT radius);
	void RD_SetSize(UINT width, UINT height);
	void RD_SetAxleLength(UINT length);
	void RD_SetSweepAngle(double angle);
	void RD_SetCurrentLevel(int level);
	void RD_SetLevelRange(int minlv, int maxlv);
	void RD_SetLampLightColor(COLORREF color);
	void RD_SetLampDarkColor(COLORREF color);
	void RD_SetBkColor(COLORREF color);
	void RD_SetColor(COLORREF color);
	void RD_SetStatus(UINT status);
	void RD_Update(void);
	void RD_MoveWindow(int x, int y);
	virtual ~RudderDevice();

	// Generated message map functions
protected:
	//{{AFX_MSG(RudderDevice)
	afx_msg void OnPaint();
	afx_msg void OnTimer(UINT nIDEvent);
	//}}AFX_MSG

	DECLARE_MESSAGE_MAP()
private:
	int RD_RotateDirection;	//仪表当前的转动状态,1表示向变大方向,-1则相反
	UINT RD_Height;			//仪表的高度
	UINT RD_Width;			//仪表的宽度
	UINT RD_Status;			//仪表的当前状态
	UINT RD_HasAxle;		//标志仪表是否具有摆动轴的变量
	COLORREF RD_BkColor;	//仪表的背景颜色
	COLORREF RD_Color;		//仪表的颜色
	CPoint RD_Origin;		//仪表的参考系原点

	UINT RD_FontSize;			//标注文字的大小
	COLORREF RD_TextDarkColor;	//未选中档对应的文字的颜色
	COLORREF RD_TextLightColor;	//当前档对应的文字的颜色
	CString RD_TextLeft;		//左侧文字标注的字符串,各档的文字用","号分割开
	CString RD_TextRight;		//右侧标注文字的内容
	CPoint RD_TextOffset;		//左侧标注文字的内容
	CFont RD_Font;				//两侧标注文字的字体
	
	UINT RD_LampHeight;			//指示灯的高度
	UINT RD_LampWidth;			//指示灯的宽度
	COLORREF RD_LampDarkColor;	//指示灯熄灭状态的颜色
	COLORREF RD_LampLightColor;	//指示灯点亮转头的颜色
	CPoint RD_LampOffset;		//最低档位的(右侧)指示灯相对于内部坐标系原点的坐标偏移量
	
	UINT RD_FrameRadius;	//仪表弧形表面的半径
	UINT RD_FrameThick;		//仪表弧线表面的宽度

	int RD_ObjectLevel;		//仪表要显示的目标档位
	int RD_CurrentLevel;	//仪表的当前档位
	int RD_MinLevel;		//仪表内的最低档位
	int RD_MaxLevel;		//仪表内的最高档位
	UINT RD_SweepLevel;		//仪表的档位总数
	
	double RD_SweepAngle;	//摆动轴的摆动幅度,采用角度值
	double RD_CurrentAngle;	//摆动轴的当前夹角,相对于Z轴正向,采用角度值
	double RD_AnglePerLevel;//仪表每变化一个档位转过的角度
	
	UINT RD_AxleRadius;		//仪表摆动轴的截面半径
	UINT RD_AxleLength;		//仪表摆动轴的长度
	CPoint RD_AxleCenter;	//摆动轴的端面中心位置
	
	COLORREF GetNextColor(COLORREF current_color, int delta);
	COLORREF GetNextColor(COLORREF color, double ratio);
	void DrawFace(void);};	//该函数绘制仪表的界面

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_RUDDERDEVICE_H__A0E65EC3_ED3F_426E_ACCE_6B554EC12456__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -