📄 template.c
字号:
// 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 + -