?? dispcumul.c
字號:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <pwd.h>
#include <math.h>
#include <minigui/common.h>
#include <minigui/minigui.h>
#include <minigui/gdi.h>
#include <minigui/window.h>
#include <minigui/control.h>
#include <sys/types.h>
#include <sys/shm.h>
#include <sys/ipc.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "common.h"
#include "fonts.h"
#include "dispcumul.h"
/*
要得到那個通道那年那月那天的累積量
傳入?yún)?shù) 為那個通道那年那月那天
傳出參數(shù) 那天的累積量
*/
void SaveCuDateDay(int id, int year,int month,int day )
{
FILE *fd;
unsigned char filename[20];
unsigned char buffdata[9],buffday[5],bufffday[5],buffyemo[7];
unsigned char buff[21],bufff[8];
int i;
struct stat file;
sprintf(filename,"data/cu%02d.dat",id);
// printf("filename=%s\n",filename);
if(stat(filename,&file)<0)//假設(shè)不存在本文件則新建
{
fd=fopen(filename,"r+w+b");
// fclose(fd);
// fd=fopen(filename,"r+");
}
else {
fd=fopen(filename,"r+");
}
fseek(fd,0,SEEK_SET);
fgets(bufff,8,fd);
// printf("bufffxx=%s\n",bufff);
//寫入當前時間{第一行}
sprintf(buff,"%4d%2d%2d%2d%2d%2d:",year,month,day,hour,minu,seco);
fseek(fd,0,SEEK_SET);
fwrite(buff,15,1,fd);
bzero(buff,sizeof(buff));
//cumul_fvalue=32.9;//channel_disp[id].cupv;
sprintf(buffdata,"%10d",cumul_fvalue);
sprintf(buff,"%s\r\n",buffdata);
//寫入當前該通道的當前數(shù)據(jù){第一行}
fwrite(buff,18,1,fd);
//{第一行}
//看是否有該年該月的數(shù)據(jù)
sprintf(buffyemo,"%4d%2d:",year,month);
if (strncmp (bufff,buffyemo,6))
{
fseek(fd,0,SEEK_END);
fwrite("\r\n",2,1,fd);
fwrite(buffyemo,7,1,fd);
printf("xi eijjjj\n");
}
//寫入當前數(shù)據(jù)
fseek(fd,-18,SEEK_END);
bzero(buff,sizeof(buff));
fread(buff,7,1,fd);
//printf("come her\n");
//printf("rebuff=%s\n",buff);
sprintf(buffday,"%2dday:",day);
sprintf(bufffday,":%2dday",day);
if (!strncmp (buff,bufffday,5))
{
bzero(buff,sizeof(buff));
sprintf(buff,"%s:",buffdata);
fwrite(buff,11,1,fd);
}
else
{
bzero(buff,sizeof(buff));
//printf("buffdata2=%s\n",buffdata);
//printf("buffx=%s\n",buff);
sprintf(buff,"%s:",buffdata);
// printf("buffxe=%s\n",buff);
fseek(fd,0,SEEK_END);
//printf("buffday=%s\n",buffday);
fwrite(buffday,6,1,fd);
//printf("buffxee=%s\n",buff);
fwrite(buff,11,1,fd);
}
fclose(fd);
};
void GetCuDateDay(int id, int year,int month,int day)
{
static int cuday;
unsigned char *tokenPtr;
unsigned char buff[500],buffyemo[7];
unsigned char buffer[20];
static int i5=0;
FILE *fd;
unsigned char filename[20]; //文件名由通通的id 構(gòu)成后綴為".cu"
int i2=1,i3=1,i4=0;
// sprintf(filename,"data/cu%02d.dat",id);
// printf("filename0=%s\n",filename);
sprintf(buffyemo,"%4d%2d:",year,month);
//
bzero(buffer,20);
if ( (fd=fopen(filename,"r"))==NULL)
printf ("file could not be opened \n");
else {
while (!feof (fd) &&i4==0)
{
//bzero(buff,sizeof(buff));
fgets(buff,1999,fd);
//printf("buffaa=%s\n",buff);
//printf("hang = %d\n",i3);
i3+=1;
i2=1;
if (!strncmp (buff,buffyemo,6)&& i3>2)
{
//printf("buffxd=%s\n",buff);
i4=1;
tokenPtr=strtok(buff,":");
while ( tokenPtr!= NULL) {
//printf ("%s\n",tokenPtr);
if( ((i2-1)%2==0) &&((i2-1)%4!=0)){
//ccuday[i5].cdata = tokenPtr;
// cccudata[i5] = tokenPtr;
strncpy( buffer,tokenPtr,20);
sprintf(cccudata[i5],"%s",buffer);
// printf("ddd %s\n",cccudata[i5]);
// memcpy(cccudata[i5], tokenPtr,);
i5+=1;
}
tokenPtr= strtok(NULL,":");
i2+=1;
}
}
}
}
fclose(fd);
//printf("Databack[%d] = %5s\n",day*2+1,Data[day*2+1]);
};
/*void GetCuDateMonth(int id, int year,int month )
{
static int cumomth;
return cumonth;
};*/
/* 月累積量顯示函數(shù)*/
void DispCumulYear(HDC hmemDC, int year,int month )
{
static char buff[20];
int cuyear; //每年的累積量
int cumonth; //每月的累積量
char *cutype="cho5 wp302-05"; // 累積量型號
int i;
int rect_x,rect_y,width,height;
rect_x=100;
rect_y=100;
SelectFont(hmemDC,GBWFont); //設(shè)置字體
//開始的月份2006年7月累積情況
// sprintf (buff,"%d 年%d 月%s",year,month,"到");
// TextOut(hmemDC,rect_x+50,rect_y-45,buff);
//結(jié)束的月份到2006年8月累積情況
sprintf (buff,"%d 年",year,"累積情況");
TextOut(hmemDC,rect_x+100,rect_y-45,buff);//
SelectFont(hmemDC,lgfont_11); //設(shè)置字體
//型號如 CH05 WP302-05
sprintf (buff,"%s",cutype);
TextOut(hmemDC,rect_x+50,rect_y-20,buff);
//前半年的情況
for (i=1; i<=6; i++){
sprintf (buff,"%d-%d%s%d",year,i+6," :",cumonth);
TextOut(hmemDC,rect_x,rect_y+20*i,buff);
// printf ("xierong=%d%s%d\n",i," :",cuday);
}
//后半年的情況
for (i=1; i<=6; i++){
sprintf (buff,"%d-%d%s%d",year+1,i," :",cumonth);
TextOut(hmemDC,rect_x+200,rect_y+20*i,buff);
// printf ("xierong=%d%s%d\n",i," :",cuday);
}
SelectFont(hmemDC,GBWFont); //設(shè)置字體
//本年度總累積
sprintf (buff,"%s%d","本年度總累積:",cuyear);
TextOut(hmemDC,rect_x+50,rect_y+250,buff);//如本月累積情況
}
/* 日累積量顯示函數(shù)*/
void DispCumulMonth(HDC hmemDC, int year,int month )
{
static char buff[10];
int cuday; //每天的累積量
int cumonth; //每月的累積量
char *cutype="cho5 wp302-05"; // 累積量型號
int i;
int rect_x,rect_y;
rect_x=100;
rect_y=35;
SelectFont(hmemDC,GBWFont); //設(shè)置字體
//哪個月如2006年7月累積情況
sprintf (buff,"%d 年%d 月%s",year,month,"累積情況"); //如2006年7月累積情況
TextOut(hmemDC,rect_x+50,rect_y-15,buff);//如2006年7月累積情況
SelectFont(hmemDC,lgfont_11); //設(shè)置字體
//型號如 CH05 WP302-05
sprintf (buff,"%s",cutype);
TextOut(hmemDC,rect_x+50,rect_y,buff);
//前半個月
for (i=1; i<=15; i++){
sprintf (buff,"%2d%s%s",i," :",cccudata[i]);
TextOut(hmemDC,rect_x,rect_y+20*i,buff);
}
//后半個月
for (i=16; i<=31; i++){
sprintf (buff,"%2d%s%s",i," :",cccudata[i]);
TextOut(hmemDC,rect_x+200,rect_y+20*(i-15),buff);
}
SelectFont(hmemDC,GBWFont); //設(shè)置字體
//本月總累積
sprintf (buff,"%s%d","本月總累積:",cumonth);
TextOut(hmemDC,rect_x+50,rect_y+340,buff);//如本月累積情況
}
/*************************************************
Function: // 函數(shù)名稱
Description: // 函數(shù)功能、性能等的描述
Calls: // 被本函數(shù)調(diào)用的函數(shù)清單
Called By: // 調(diào)用本函數(shù)的函數(shù)清單
Table Accessed: // 被訪問的表(此項僅對于牽扯到數(shù)據(jù)庫操作的程序)
Table Updated: // 被修改的表(此項僅對于牽扯到數(shù)據(jù)庫操作的程序)
Input: // 輸入?yún)?shù)說明,包括每個參數(shù)的作
// 用、取值說明及參數(shù)間關(guān)系。
Output: // 對輸出參數(shù)的說明。
Return: // 函數(shù)返回值的說明
Others: // 其它說明
*************************************************/
int DisCumulDialogProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
HDC hmemDC;
static RECT rect;
static int cumulmode; //累積的顯示的頁面切換的index
static int year,month; //累積的顯示的頁面,哪年,哪月
int id;
static int i;
int p;
static int day=1;
gal_pixel bar_rect_color;
gal_pixel bar_text_color;
gal_pixel bar_back_color;
id= LOWORD (wParam);
switch (message)
{
case MSG_INITDIALOG:
cumulmode=0;
year=2007;
month=1;
day=1;
cumulmode=1;//默認為顯示按日累積
cumul_fvalue=123456;
for(i=1;i<31;i++)
{
cumul_fvalue=cumul_fvalue+123;
// SaveCuDateDay(9, 2007,1,day );
}
//for(i=1;i<31;i++)
// GetCuDateDay(9, 2007,1,day ) ;
return 1;
case MSG_SHOWWINDOW:
break;
case MSG_PAINT:
hdc=BeginPaint(hDlg);
hmemDC=CreateCompatibleDC(hdc);
bar_back_color=PIXEL_black;//背景PIXEL_black
bar_text_color=RGB2Pixel(hmemDC,0,128,128);;//RGB2Pixel(hmemDC,0,0,255);//文字顏色
SetBrushColor(hmemDC,PIXEL_lightwhite);//lightwhite
SetBkMode(hmemDC,BM_TRANSPARENT);// SetBkMode
FillBox(hmemDC,0,0,WIDTH-LEFT,HEIGHT-TOP-BOTTOM);
SetBkMode(hmemDC,BM_TRANSPARENT);
SetTextColor(hmemDC,bar_text_color);
if(cumulmode==MODE_MON)
DispCumulYear(hmemDC,2007,1);
if(cumulmode==MODE_DAY)
DispCumulMonth(hmemDC,2007,1);
BitBlt(hmemDC,0,0,WIDTH-LEFT,HEIGHT-TOP-BOTTOM,hdc,LEFT,0,0);
DeleteCompatibleDC(hmemDC);
EndPaint(hDlg,hdc);
break;
case MSG_COMMAND:
{
if(id==CONF_DISCUMUL_ANDAY) //按日顯示
{
cumulmode=MODE_DAY;
SetRect (&rect, 80,0,640,400);
InvalidateRect (hDlg, &rect, FALSE);
}
if(id==CONF_DISCUMUL_ANMONTH) //按月顯示
{
cumulmode=MODE_MON;
SetRect (&rect, 80,0,640,400);
InvalidateRect (hDlg, &rect, FALSE);
}
if(id==CONF_DISCUMUL_BACK) EndDialog (hDlg, 0);
}
break;
case MSG_KEYDOWN:
if(!keydowned)
{
if(id==KEYC_MODE)
SendDlgItemMessage(hDlg, DISCU_MODE, BM_SETSTATE , BST_PUSHED ,0);
if(id==KEYC_EXIT)SendDlgItemMessage(hDlg, DISCU_EXIT, BM_SETSTATE , BST_PUSHED ,0);
if(id==KEYC_CLEAR)SendDlgItemMessage(hDlg, DISCU_CLEAR, BM_SETSTATE , BST_PUSHED ,0);
if(id==KEYC_CONF)SendDlgItemMessage(hDlg, DISCU_CONF, BM_SETSTATE , BST_PUSHED ,0);
if(id==KEYC_BACK)SendDlgItemMessage(hDlg, DISCU_BACK, BM_SETSTATE , BST_PUSHED ,0);
keydowned=1;
}
break;
case MSG_KEYUP:
keydowned=0;
if(id==KEYC_MODE)
{
SendDlgItemMessage(hDlg, DISCU_MODE, BM_SETSTATE, 0,0);
cumulmode+=1;
if(cumulmode>2)cumulmode=1;
SetRect (&rect, 80,0,640,400);
InvalidateRect (hDlg, &rect, FALSE);
}
if(id==KEYC_EXIT)
{
SendDlgItemMessage(hDlg, DISCU_EXIT, BM_SETSTATE, 0,0);
}
if(id==KEYC_CLEAR)
{
SendDlgItemMessage(hDlg, DISCU_CLEAR, BM_SETSTATE, 0,0);
SetRect (&rect, 80,0,640,400);
InvalidateRect (hDlg, &rect, FALSE);
}
if(id==KEYC_CONF)
{
SendDlgItemMessage(hDlg, DISCU_CONF, BM_SETSTATE, 0,0);
}
if(id==KEYC_BACK)
{
SendDlgItemMessage(hDlg, DISCU_BACK, BM_SETSTATE, 0,0);
EndDialog (hDlg, 0);
}
break;
case MSG_CLOSE:
EndDialog (hDlg, 0);
break;
}
return DefaultDialogProc (hDlg, message, wParam, lParam);
}
void DlgDisCumul (HWND hWnd)
{
DlgDisCumu.controls = ctrl_conf_displaycumul;
DialogBoxIndirectParam (&DlgDisCumu, hWnd, DisCumulDialogProc, 0L);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -