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

📄 template.c

📁 综合实验源代码-汉诺塔
💻 C
📖 第 1 页 / 共 2 页
字号:

// Template.c
//用途: 提供可套用的模板,
//主要包括: 名称+"开、关" ;名称+数字+单位; 
//                        图标+文字; 图标+ 矩形条+单位
//                        光照效果的实现
//使用: 三级界面
//界面一: 显示模拟量
//界面二: 开关量控制
//界面三: 帮助信息显示
#include"..\ucos-ii\includes.h"               /* uC/OS interface */
#include "..\ucos-ii\add\osaddition.h"
#include"..\inc\osfile.h"
#include"..\inc\drv\rtc.h"
#include "..\inc\drv.h"
#include <string.h>
#include "..\ucos-ii\add\list.h"
#include "..\inc\drv\figure.h"
#include "..\inc\drv\display.h"
#include "..\inc\maro.h"
#include "..\template.h"


//////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////     基本API函数   //////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
void strChar2U8(U8 ch2[], const  char ch1[])
{
	while(*ch1){
		*ch2=*ch1;     
		ch2++;
		ch1++;
	}
	*ch2=0;
}
void U82strChar(char ch2[], const U8 ch1[] )
{
	while(*ch1){
		*ch2=*ch1;
		ch2++;
		ch1++;
	}
	*ch2=0;
}

void Int2strChar(char ch[], const int number)
{ 
       u16 str[256];
       Int2Unicode( number, str);
       Unicode2strChar(ch, str);
}

int strChar2Int(char ch[])
{
       u16 str[256];
       int i;
       strChar2Unicode(str, ch);
       i=Unicode2Int( str );
       return i;
}
//strChar2Unicode(U16 ch2 [ ], const char ch1 [ ]);
void Unicode2strChar(char ch2[], const u16 ch1[])
{
      while(*ch1){
      	*ch2=*ch1;
      	ch2++;
      	ch1++;                       //问题1:该函数在c++中通不过
      	}
      *ch2=0;
}

int  CntUstrNum(u16 *ustr)  // 计算Unicode 串的字数
{
     int  UstrNum=0;
     while(*ustr!=0){
     	UstrNum++; 
     	ustr++;                          ////问题1:该函数在c++中通不过
     	}
     return  UstrNum;
}
//////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////  简单图形API函数 (new)   /////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
void UniformLine(PDC pdc, int Point1x, int Point1y, int Point2x, int Point2y, int PenWidth)
{
int i;
       for(i=0;i<PenWidth;i++){
       	SetPenColor( pdc, RGB(127,127,127));
       	MoveTo( pdc, Point1x, Point1y+i);
       	LineTo( pdc, Point2x, Point2y+i); 
       	}
}

void VerticalLine(PDC pdc, int Point1x, int Point1y, int Point2x, int Point2y)
{
int i=0;
      SetPenColor( pdc, RGB(192,192,192));
      MoveTo( pdc, Point1x+i, Point1y);
      LineTo( pdc, Point2x+i, Point2y); 
      i++;
       SetPenColor( pdc, RGB(192,192,192));
      MoveTo( pdc, Point1x+i, Point1y);
      LineTo( pdc, Point2x+i, Point2y); 
      i++;
      SetPenColor( pdc, RGB(255,255,255));
      MoveTo( pdc, Point1x+i, Point1y);
      LineTo( pdc, Point2x+i, Point2y); 
      i++;
      SetPenColor( pdc, RGB(0,0,0));
      MoveTo( pdc, Point1x+i, Point1y);
      LineTo( pdc, Point2x+i, Point2y); 
      i++;
      SetPenColor( pdc, RGB(0,0,0));
      MoveTo( pdc, Point1x+i, Point1y);
      LineTo( pdc, Point2x+i, Point2y); 
       
}

void HorizonLine(PDC pdc, int Point1x, int Point1y, int Point2x, int Point2y)
{
int i=0;
      SetPenColor( pdc, RGB(192,192,192));
      MoveTo( pdc, Point1x, Point1y+i);
      LineTo( pdc, Point2x, Point2y+i); 
      i++;
       SetPenColor( pdc, RGB(192,192,192));
      MoveTo( pdc, Point1x, Point1y+i);
      LineTo( pdc, Point2x, Point2y+i); 
      i++;
      SetPenColor( pdc, RGB(128,128,128));
      MoveTo( pdc, Point1x, Point1y+i);
      LineTo( pdc, Point2x, Point2y+i); 
      i++;
      SetPenColor( pdc, RGB(255,255,255));
      MoveTo( pdc, Point1x, Point1y+i);
      LineTo( pdc, Point2x, Point2y+i); 
      i++;
      SetPenColor( pdc, RGB(128,128,128));
      MoveTo( pdc, Point1x, Point1y+i);
      LineTo( pdc, Point2x, Point2y+i); 
      i++;
      SetPenColor( pdc, RGB(0,0,0));
      MoveTo( pdc, Point1x, Point1y+i);
      LineTo( pdc, Point2x, Point2y+i); 
       
}

void Draw3DUpRect(PDC pdc, int Textx,int Texty,int TextNum, u8 fnt) //画3D 凹矩形,用于模拟量数字的显示
{
       structRECT TextRect;
       SetRect(&TextRect, Textx, Texty, Textx+OSFontSize[fnt]*TextNum, Texty+OSFontSize[fnt]);
       InflateRect(&TextRect, 3,3);
       Draw3DRect2(pdc, &TextRect, RGB(192,192,192), RGB(0,0,0));
	InflateRect(&TextRect, -1,-1);
	Draw3DRect2(pdc, &TextRect, RGB(192,192,192), RGB(0,0,0));
	InflateRect(&TextRect, -1,-1);
	Draw3DRect2(pdc, &TextRect, RGB(128,128,128), RGB(0,0,0));
}

void Draw3DUpRect2(PDC pdc, structRECT * prect)  ////画3D 凸矩形,用于开关量显示
{
       Draw3DRect2(pdc, prect, RGB(192,192,192), RGB(0,0,0));
	InflateRect(prect, -1,-1);
	Draw3DRect2(pdc, prect, RGB(192,192,192), RGB(0,0,0));
	InflateRect(prect, -1,-1);
	Draw3DRect2(pdc, prect, RGB(128,128,128), RGB(0,0,0));
       
}

void Draw3DDownRect(PDC pdc, int Textx,int Texty,int TextNum, u8 fnt) //画3D 凹矩形,用于模拟量数字的显示
{
       structRECT TextRect;
       SetRect(&TextRect, Textx, Texty, Textx+OSFontSize[fnt]*TextNum, Texty+OSFontSize[fnt]);  
       TextRect.left-=3;       TextRect.top-=2;       TextRect.right+=2;       TextRect.bottom+=1;
       Draw3DRect2(pdc, &TextRect, RGB(255,255,255), RGB(255,255,255));
	InflateRect(&TextRect, -1,-1);
	Draw3DRect2(pdc, &TextRect, RGB(128,128,128), RGB(192,192,192));
	InflateRect(&TextRect, -1,-1);
	Draw3DRect2(pdc, &TextRect, RGB(0,0,0), RGB(192,192,192));
}

void Draw3DDownRect2(PDC pdc, structRECT * prect) //画3D 凹矩形,用于模拟量数字的显示
{
       Draw3DRect2(pdc, prect, RGB(255,255,255), RGB(255,255,255));
	InflateRect(prect, -1,-1);
	Draw3DRect2(pdc, prect, RGB(128,128,128), RGB(192,192,192));
	InflateRect(prect, -1,-1);
	Draw3DRect2(pdc, prect, RGB(0,0,0), RGB(192,192,192));
}

void DrawDBFrameRect(PDC pdc, int Textx,int Texty,int TextNum, u8 fnt) //画3D 凹矩形,用于模拟量数字的显示
{
       structRECT rect;
       SetRect(&rect, Textx, Texty, Textx+OSFontSize[fnt]*TextNum, Texty+OSFontSize[fnt]); 
       Draw3DRect2(pdc, &rect, RGB(192,192,192), RGB(0,0,0));
	InflateRect(&rect, -1,-1);
	Draw3DRect2(pdc, &rect, RGB(192,192,192), RGB(0,0,0));
	InflateRect(&rect, -1,-1);
	Draw3DRect2(pdc, &rect, RGB(128,128,128), RGB(0,0,0));
	InflateRect(&rect, -1,-1);
	Draw3DRect2(pdc, &rect, RGB(255,255,255), RGB(255,255,255));
	InflateRect(&rect, -1,-1);
	Draw3DRect2(pdc, &rect, RGB(128,128,128), RGB(192,192,192));
	InflateRect(&rect, -1,-1);
	Draw3DRect2(pdc, &rect, RGB(0,0,0), RGB(192,192,192));
  }

void DrawDBFrameRect2(PDC pdc, structRECT * prect) //画3D 凹矩形,用于模拟量数字的显示
{
       Draw3DRect2(pdc,prect, RGB(192,192,192), RGB(0,0,0));
	InflateRect(prect, -1,-1);
	Draw3DRect2(pdc, prect, RGB(192,192,192), RGB(0,0,0));
	InflateRect(prect, -1,-1);
	Draw3DRect2(pdc, prect, RGB(128,128,128), RGB(0,0,0));
	InflateRect(prect, -1,-1);
	Draw3DRect2(pdc, prect, RGB(255,255,255), RGB(255,255,255));
	InflateRect(prect, -1,-1);
	Draw3DRect2(pdc, prect, RGB(128,128,128), RGB(192,192,192));
	InflateRect(prect, -1,-1);
	Draw3DRect2(pdc, prect, RGB(0,0,0), RGB(192,192,192));
}

//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////    状态量显示函数:模拟量+开关量   //////////////////////////
///////////////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////  多行字符串显示函数  ////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////
// 在矩形框内显示多行字符串,-------------------------可自动换行,可返回错误信息
void TextOutRect2(PDC pdc, structRECT * prect, U16 * ch, U8 bunicode, U8 fnt)
{
      int i,j; //计算位置使用
      int x,y;

⌨️ 快捷键说明

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