?? globle.c
字號:
ShowFont(startregionx,y,str); //根據點陳坐標顯示漢字
}
void DispPhoto (INT16U x, INT16U y, char *str, uint8 mode)
{
INT16U ShowLen,fontx; //入參字符串的長度
INT16U startregionx,endregionx,startregiony,endregiony;
ShowLen = strlen(str);
if(ShowLen ==2)
fontx = x+1;
else
fontx = x;
if(NULL == str || ShowLen >8)
{
DispString(0,0,(char *)"系統錯誤",0);
if(debug)
DispString(0,0,(char *)"DispPhoto入參為空",0);
return;
}
if ((y < 1 || y > 23) || (x < 1 || x > 78))
{
DispString(0,0,(char *)"系統錯誤",0);
if(debug)
DispString(0,0,(char *)"DispPhoto畫點時的邊距參數錯誤",0);
return;
}
if(mode ==0)
{
ShowMatrix(x-1,y-1,x+9,y+1,DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr(fontx, y, str, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
}
else
{
ShowMatrix(x-1,y-1,x+9,y+1,DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr(fontx, y, str, DISP_FGND_YELLOW + DISP_BGND_BLUE);
}
}
//先畫矩陣框,再顯示字體
/*ShowMatrix(startregionx,startregiony,endregionx,endregiony,backcolor);
startregionx = x - (INT16U)((8 - ShowLen) / 2); //漢字的起始點
ShowFont(startregionx,y,str); //根據點陳坐標顯示漢字
}
/****************************************************************************
* 函數名:
* 功能:如果調試開關打開,則打印定位提示信息
****************************************************************************/
void Debug(char *Err)
{
if(debug)
DispString(0,0,Err,0);
while(1);
}
/****************************************************************************
* 函數名:GetDate
* 功能: 獲取系統當前時間于BUFF中,格式為 2005/01/01
返回值: 獲取成功時,返回1,發生錯誤時返回0
****************************************************************************/
uint8 GetDate(char *Buff)
{
return 1;
}
/****************************************************************************
* 函數名:measure
* 功能: 調用測量函數,啟動測量并保存測量結果
注意: 在函數開始判斷終端狀態為IDEL后,要置狀態為MEASURE
返回值: 測量及存儲成功時,返回1,發生錯誤時返回0
****************************************************************************/
uint8 measure()
{
uint8 sel;
sel = DispMessage(100,120,(char *)"正在測量您的血壓?請稍后........",1);
return 1;
}
/****************************************************************************
* 函數名:ShowByDate
* 功能: 顯示天的血壓數據信息,按測量鍵時,進入測量前界面;按上下鍵時,查看前后天信息,
按向左鍵時返回上層菜單
注意:
返回值: 無
****************************************************************************/
void ShowByDate()
{
;
}
/****************************************************************************
* 函數名:ShowByWake
* 功能: 顯示醫囑信息,按測量鍵時,進入測量前界面;按上下鍵時,查看醫囑信息,按向左鍵
時返回上層菜單
注意:
返回值: 無
****************************************************************************/
void ShowByWake()
{
;
}
/****************************************************************************
* 函數名:ShowByMonth
* 功能: 顯示醫囑信息,按測量鍵時,進入測量前界面;按上下鍵時,查看醫囑信息,按向左鍵
時返回上層菜單
注意:
返回值: 無
****************************************************************************/
void ShowByMonth()
{
;
}
/****************************************************************************
* 函數名:Cvt_SecordToStr
* 功能: 將分鐘數轉化為小時:分鐘的字符串
例如: 260分鐘轉化為字符串 4:20
注意: Secord為分鐘數,轉化后的字符串為Str
返回值: 失敗時返回0,成功時返回1
****************************************************************************/
uint8 Cvt_SecordToStr(INT16U Secord,char *Str)
{
return 0;
}
/****************************************************************************
* 函數名:Cvt_StrToSecord
* 功能: 將小時:分鐘的字符串轉化為分鐘值
例如: 字符串 4:20 轉化為 260分鐘
注意: Str為字符串地址
返回值: 返回轉化的分鐘數,發生錯誤時返回65534
****************************************************************************/
INT16U Cvt_StrToSecord(char *Str)
{
return 0;
}
/****************************************************************************
* 函數名:SubString
* 功能: 載取字符串的部分內容
參數: 源字符串,起始位置,截取長度
注意: 位置從0開始
返回值:
****************************************************************************/
char* SubString(char *source,int pos,int length)
{
char Disc[255];
char str[255];
int i;
strcpy(str,source);
for(i=0;i<length;i++)
Disc[i]=str[i+pos];
Disc[i]=0;
return Disc;
}
/****************************************************************************
* 函數名:allday
* 功能: 判斷是否是潤年,是時返回366,否返回365
返回值: 是時返回366,否返回365
****************************************************************************/
INT16U allday(INT16U x)
{
INT16U y;
if(((x%4==0)&&(x%100!=0))||((x%100==0)&&(x%400==0)))
y=366;
else
y=365;
return (y);
}
/****************************************************************************
* 函數名:GetSecond
* 功能: 根據兩個時間點,獲取間隔的分鐘數
參數: 參數格式: 2000/01/01/00:00 起始時間和終止時間
注意: 第一個參數要小于第二個參數
起始時間格式為:2000/01/01/00:00 (必須) 年份可變,其它不可變
返回值: 錯誤時返回0,正常時返回得到的分鐘數
****************************************************************************/
uint32 GetSecond(int8 *InitDate,int8 *StrDate)
{
INT16U i;
INT16U yea1,yea2,mon1,mon2,day1,day2,hour2,second2;
INT16U month1[]={31,28,31,30,31,30,31,31,30,31,30,31};
INT16U month2[]={31,29,31,30,31,30,31,31,30,31,30,31};
INT16U *p = NULL;
int32 add_day1=0;
int32 add_day2=0;
int32 add_day3=0;
int32 add_day4=0;
int32 add_all =0;
if(InitDate == NULL || StrDate == NULL)
return 0; //參數錯誤
if(strcmp(InitDate,StrDate) > 0)
return 0; //參數錯誤
//獲取數值到相應的變量
yea1 = atoi(SubString(InitDate,0,4));
mon1 = atoi(SubString(InitDate,5,2));
day1 = atoi(SubString(InitDate,8,2));
yea2 = atoi(SubString(StrDate,0,4));
mon2 = atoi(SubString(StrDate,5,2));
day2 = atoi(SubString(StrDate,8,2));
hour2 = atoi(SubString(StrDate,11,2));
second2 = atoi(SubString(StrDate,14,2));
if(judge(yea1))
p=month2;
else
p=month1;
add_day1=*(p+mon1-1)-day1;
for(i=mon1;i<=11;i++)
add_day2=add_day2+*(p+i);
for(i=yea1+1;i<yea2;i++)
add_day3=add_day3+allday(i);
if(judge(yea2)) p=month2;
else p=month1;
for(i=1;i<mon2;i++)
add_day4=add_day4+*(p+i-1);
add_all = add_day1+add_day2+add_day3+add_day4+day2; //得到天數
add_all = add_all*24*60 + hour2*60 + second2;
return add_all;
}
/****************************************************************************
* 函數名:GetDateTime
* 功能: 根據起始時間和分鐘數得到當前時間
參數: 起始時間和當前時間參數格式: 2000/01/01/00:00
注意: 起始時間格式為:2000/01/01/00:00 (必須) 年份可變,其它不可變
返回值: 錯誤時返回0,正常時返回1
****************************************************************************/
uint8 GetDateTime(uint32 Second,int8 *InitDate,int8 *StrDate)
{
INT16U yea1,mon1,day1,hour1,second1;
INT16U month1[]={31,28,31,30,31,30,31,31,30,31,30,31};
INT16U month2[]={31,29,31,30,31,30,31,31,30,31,30,31};
INT16U *p = NULL;
uint32 daysecond = 24*60;
uint32 year_second = 0;
int8 Str[10];
if(InitDate == NULL)
return 0; //參數錯誤
//獲取數值到相應的變量
yea1 = atoi(SubString(InitDate,0,4));
mon1 = atoi(SubString(InitDate,5,2));
day1 = atoi(SubString(InitDate,8,2));
hour1 = atoi(SubString(InitDate,11,2));
second1 = atoi(SubString(InitDate,14,2));
while(Second)
{
if(judge(yea1))
year_second = 356*daysecond;
else
year_second = 355*daysecond;
if(judge(yea1))
p=month2;
else
p=month1;
if(Second >= year_second) //年份加1
{
yea1++;
Second -= year_second;
}
else if(Second >= (*(p+mon1-1))*daysecond) //月份加1
{
mon1++;
Second -= (*(p+mon1-1))*daysecond;
}
else if(Second >= daysecond) //天數加1
{
day1++;
Second -= daysecond;
}
else if(Second >= 60) //時間加1
{
hour1++;
Second -= 60;
}
else //秒數加
{
second1 += Second;
}
} //end while
itoa(yea1,Str,10);
strcpy(StrDate,Str);
strcat(StrDate,(char *)"/");
itoa(mon1,Str,10);
strcat(StrDate,Str);
strcat(StrDate,(char *)"/");
itoa(mon1,Str,10);
strcat(StrDate,Str);
strcat(StrDate,(char *)"/");
itoa(day1,Str,10);
strcat(StrDate,Str);
strcat(StrDate,(char *)"/");
itoa(hour1,Str,10);
strcat(StrDate,Str);
strcat(StrDate,(char *)":");
itoa(second1,Str,10);
strcat(StrDate,Str);
return 1;
}
/********************************************************************************************************
* 名稱 : DelayNS()
* 功能 : 長軟件延時
* 入口參數 : dly 延時參數, 值越大,延時越久
* 出口參數 : 無
********************************************************************************************************
*/
void DelayNS(uint32 dly)
{
uint32 i;
for(;dly>0;dly--)
for(i=0;i<50000;i++);
}
/*********************************************************************************************************
* 名稱 : DelayNS()
* 功能 : 長軟件延時
* 入口參數 : dly 延時參數, 值越大,延時越久
* 出口參數 : 無
********************************************************************************************************
*/
void OS_memcpy(int8 *des,int8 *src)
{
uint8 i,dly;
for(;dly>0;dly--)
for(i=0;i<50000;i++);
}
void drap_info()
{
int a;
}
void line(int sx,int sy,int ex,int ey,uint32 color)
{
HPEN hPen,hOldPen; //畫筆
//for(;i<500;++i)0x0000ff
//SetPixel(hDC,10+i,10+i,0x0000ff);//用畫點的辦法畫一根線,最后一個參數是顏色(32位)
hPen=CreatePen(PS_SOLID,2,color);//生成綠色畫筆
hOldPen=(HPEN)SelectObject(hdc,hPen);//把畫筆引入設備場境
MoveToEx(hdc,sx,sy,NULL); //設置畫線起點
LineTo(hdc,ex,ey); //畫到終點
}
void DrawRec(uint16 sx,uint16 sy,uint16 ex,uint16 ey,uint32 color)
{
uint16 i;
for(i=sx;i<ex;i++)
line(i,sy,i,ey,color);
}
/*********************************************************************************************************
* 名稱 : ShowBattery()
* 功能 : 電池圖標
* 入口參數 :
* 出口參數 : 無
********************************************************************************************************/
void ShowBattery(uint16 x,uint16 y,uint16 CurVolt,uint16 MinVolt,uint16 MaxVolt)
{
uint32 color = 0xff0000;
uint16 length,width,temp,lop,i,Segline;
uint16 tmpvolt,Segvolt;
int8 szChar[40];
length = 12;
width = 32;
temp = 3;
tmpvolt = MaxVolt - MinVolt;
Segvolt = tmpvolt >> 2;
Segline = width >> 2;
//畫一個矩形
line(x,y,x,y+length,color);
line(x+width,y,x+width,y+length,color);
line(x,y+length,x+width,y+length,color);
line(x,y,x+width,y,color);
//畫一個實框
DrawRec(x+width,y+temp,x+width+4,y+3*temp,color);
for(lop=4;lop>0;lop--)
{
if(CurVolt - MinVolt > (lop-1) * Segvolt)
{
DrawRec(x+2,y+2,x+Segline*lop,y+length-2,color);
for(i=2;i<=lop;i++)
line(x+Segline*(i-1),y+1,x+Segline*(i-1),y+length-1,0x808080);
if(lop > 0)
line(x+1,y+1,x+1,y+length-1,0x808080);
if(lop == 4)
line(x+width-1,y+1,x+width-1,y+length-1,0x808080);
break;
}
}
}
/*********************************************************************************************************
* 名稱 : ShowGprs()
* 功能 : gprs信號顯示
* 入口參數 :
* 出口參數 : 無
********************************************************************************************************/
void ShowGprs(uint16 x,uint16 y,uint16 CurVolt,uint16 MinVolt,uint16 MaxVolt)
{
uint32 color = 0xff0000;
uint16 length,width,temp,lop,i,Segline;
uint16 tmpvolt,Segvolt;
int8 szChar[40];
length = 12;
width = 32;
temp = 3;
tmpvolt = MaxVolt - MinVolt;
Segvolt = tmpvolt >> 2;
Segline = width >> 2;
//畫一個矩形
line(x,y,x,y+length,color);
line(x+width,y,x+width,y+length,color);
line(x,y+length,x+width,y+length,color);
line(x,y,x+width,y,color);
//畫一個實框
DrawRec(x+width,y+temp,x+width+4,y+3*temp,color);
//sprintf(szChar,"char is %d",Segvolt); //獲得按鍵并保存在字符串里
//TextOut(hdc,0,220,szChar,strlen(szChar)); //打印文字
for(lop=4;lop>0;lop--)
{
if(CurVolt - MinVolt > (lop-1) * Segvolt)
{
DrawRec(x+2,y+2,x+Segline*lop,y+length-2,color);
sprintf(szChar,"char is %d",lop); //獲得按鍵并保存在字符串里
TextOut(hdc,0,220,szChar,strlen(szChar)); //打印文字
for(i=2;i<=lop;i++)
line(x+Segline*(i-1),y+1,x+Segline*(i-1),y+length-1,0x808080);
if(lop > 0)
line(x+1,y+1,x+1,y+length-1,0x808080);
if(lop == 4)
line(x+width-1,y+1,x+width-1,y+length-1,0x808080);
break;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -