?? wondercb.c
字號:
#include "head.h"
void main( void )
{
U8 MainMenuChoice;
int Return_fun=0;
int num;
const P_U8 MainMenu[]={//菜單顯示格式
"[1]抄機械表",
"[2]抄多功能",
"[3]查看記錄",
"[4]查 詢",};
cls();
keyswitchset(0);
Clear_123();
MiddlePutStr("請等待...",7);
Return_fun = Open_library();
if(!Return_fun) return ;
do{
cls();
keyswitchset(0);
Clear_123();
MiddlePutStr("萬特電氣有限公司" ,1);
MiddlePutStr ( "[退出] [確認]" ,15 );
Draw_UP_DOWN(UP_DOWN);
MainMenuChoice = popup( 2,3,14,13,MainMenu , "1234",4,4,1);
//在屏幕顯示菜單
switch(MainMenuChoice)
{
case 0 :
Chao_JJB();
probw=0;
break;
case 1 :
Chao_DGN();
probw_dgn=0;
break;
case 2 :
View_Record();
break;
case 3 :
Search_Record();
break;
case 255:
return;
default : break;
} //end switch
}while(1);//end while
return ;
}//end main
int Chao_JJB( void )
{
U16 Number=0;
U8 Key; //存儲按鍵
char strings[2][50]={{""},{""}};
int Search_Resault=0;
double dl;
int i,j,sign=0;
use("");
use(dbfname);
R1:
for(i=0;i<2;i++)
for(j=0;j<DL_MAX;j++)
strings[i][j]=0;
Record_Number=Get_Record_Number();
Number=Record_Number;
OutPut_Face();
keyswitchset(0); // 輸入限制在'數字'狀態
probw++;
if(probw>MAXRECORD)
probw=1;
moveto(7,5);
printf("%d",probw);
sprintf(strings[0],"%d",probw);
back2: sign = InputStr(strings[1],9,7,DL_MAX);
switch(sign)
{case ESC : return FALSE ;
case UP :
for(j=0;j<BW_MAX;j++)
strings[0][j]=0;
probw--;
if(probw<1)
probw=1;
moveto(7,5);
printf(" ");
moveto(7,5);
printf("%d",probw);
sprintf(strings[0],"%d",probw);
goto back2;
case DOWN :
for(j=0;j<DL_MAX;j++)
strings[0][j]=0;
probw++;
if(probw>MAXRECORD)
probw=1;
moveto(7,5);
printf(" ");
moveto(7,5);
printf("%d",probw);
sprintf(strings[0],"%d",probw);
goto back2;
case ENTER: goto going;
default :goto back2;
}
going: if(!strlen(strings[1]))
{
OutPut_Message ( "請輸入當前電量!");
cls();
OutPut_Face();
moveto(7,5);
putstr(strings[0]);
goto back2;
}
sign = Store_jjb ( strings );
if( sign == TRUE )
OutPut_Message("存儲成功!");
else
OutPut_Message("存儲失敗!");
goto R1;
//end while
} //Chao_JJB
//查找記錄
void Search_Record( void )
{
char search_bw[50]="";
char search_bdz[50]="";
U8 sign,sign0;
int length;
int length2;
int MenuChoice;
int Num=0;
int Key;
int i;
const P_U8 SearchMenu[]={//菜單顯示
"查找機械表",
"查找多功能",};
Loop:
for(i=0;i<50;i++)
search_bw[i]=0;
for(i=0;i<50;i++)
search_bdz[i]=0;
cls();
Clear_123();
MiddlePutStr ( "查找記錄" ,2 );
MiddlePutStr ( "[退出] [確認]" ,15 );
Draw_UP_DOWN(UP_DOWN);
MenuChoice = cpopup( SearchMenu , "12",2,2,1);
switch(MenuChoice)
{
case 0 : OutPut_Msg_jjb();
Num = Get_Bw(search_bw);
if(Num!=-1&&Num!=-2)
OutPut_jjbmsg(Num);
if(Num==-1)
OutPut_NoFound( search_bw ,"" );
goto Loop;
break;
case 1 : OutPut_Msg_dgn();
Num =Get_Bw_Bdz(search_bw,search_bdz);
if(Num!=-1&&Num!=-2)
OutPut_dgnmsg(Num);
if(Num==-1)
OutPut_NoFound( search_bw ,search_bdz );
goto Loop;
break;
case 255: return ;
}
}
int Get_Bw( char search_bw[] )
{
int sign0;
ll1: sign0 = InputStr(search_bw,6,5,BW_MAX);
switch(sign0)
{
case ENTER : break;
case ESC : return -2;
default : goto ll1;
}
if(strlen(search_bw)==0)
{
OutPut_Message ( "請輸入表位號!");
OutPut_Msg_jjb();
goto ll1;
}
return Search_jjb_Record(search_bw);
}
void OutPut_jjbmsg(int Num)
{
cls();
Clear_123();
OutPut_jjb_infor( Num );
moveto(12,1);
putstr(" ");
MiddlePutStr("[退出] [確認]",15);
key(0);
}
int Get_Bw_Bdz( char search_bw[],char search_bdz[] )
{
int sign0;
int length,length2;
searchback1:
sign0 = InputStr(search_bw,6,5,BW_MAX);
switch(sign0)
{
case DOWN : goto searchback2;
case ENTER : if(strlen(search_bdz))
goto searching;
else goto searchback2;
case ESC : return -2;
}
searchback2:
sign0 = InputStr(search_bdz,2,9,BDZ_MAX);
switch(sign0)
{
case UP :
case DOWN : goto searchback1;
case ENTER : break;
case ESC : return -2;
}
searching:
length = strlen(search_bw);
length2 = strlen(search_bdz);
if(length==0)
{
OutPut_Message ( "請輸入表位號!");
cls();
OutPut_Msg_dgn();
moveto(2,9);
putstr(search_bdz);
goto searchback1;
}
if(length2==0)
{
OutPut_Message ( "請輸入表地址!");
cls();
OutPut_Msg_dgn();
moveto(6,5);
putstr(search_bw);
goto searchback2;
}
return Search_ir_Record (search_bw , search_bdz );
}
void OutPut_dgnmsg(int Num)
{
int Key;
Show_dgn: cls();
Clear_123();
OutPut_dgn_infor( Num );
moveto(12,1);
putstr(" ");
MiddlePutStr("[退出] [詳細]",15);
do{
Key=key(0);
}while(Key!=ESC&&Key!=ENTER);
if(Key == ENTER)
{
Show_all_infor(Num); //顯示詳細信息
goto Show_dgn;
}
else return;
}
//輸出提示信息
void OutPut_Msg_dgn( void )
{
cls();
Clear_123();
MiddlePutStr("請輸入",2);
moveto( 1,5);
putstr("表位:");
moveto( 1,7);
putstr("表地址:");
MiddlePutStr("[退出] [確認]",15);
Draw_UP_DOWN(UP_DOWN);
}
//輸出提示信息
void OutPut_Msg_jjb( void )
{
cls();
Clear_123();
MiddlePutStr("請輸入",2);
moveto( 1,5);
putstr("表位:");
MiddlePutStr("[退出] [確認]",15);
}
//輸出沒找到提示
void OutPut_NoFound( char search_bw[] ,char search_bdz[])
{
int length;
cls();
Clear_123();
MiddlePutStr("沒找到!",2);
moveto(2,5);
printf("表位:%s",search_bw);
length = strlen(search_bdz);
if(length)
{
moveto(2,7);
putstr("表地址:");
moveto(2,9);
putstr(search_bdz);
MiddlePutStr("的記錄!",11);
}
else
{
moveto(10,5);
putstr("的記錄!");
}
MiddlePutStr("按任意鍵繼續!",15);
key(0);
}
//抄機械表
//查看紀錄 view()
void View_Record(void)
{
int Number=0; //存儲當前顯示的記錄號
U8 keypress;
char str[50]="";
int back;
int sign;
int length;
do{
Record_Number=Get_Record_Number();
use("");
use(dbfname);
if( !Record_Number )
{
Msg_Lib_is_Null();
return ;
}
cls();
Clear_123();
libset(Number,B_DZ);
libread(str);
length=strlen(str);
if(length==0)
{
OutPut_jjb_infor(Number);
}
else
{
OutPut_dgn_infor(Number);
}
keypress = Get_Key();
switch(keypress)
{ case ENTER :
if(length==0)
back= Option( Number , keypress );
else
{
back= Option_ir(Number,keypress);
}
if(back==DEL || back==DEL_ALL)
{
Sort2(Number,Record_Number);
Number=0;
}
else if( back == INFOR )
Show_all_infor(Number);
break;
case UP :
case DOWN: Number = PageUpDown( Number,keypress );
}
}while( keypress != ESC );
return;
}
//顯示詳細信息
void Show_all_infor(int Number)
{
int i,j;
int Key;
char str[50]="";
char ir_data[45][50];
char sign[45]="";
for(i=0;i<45;i++)
for(j=0;j<50;j++)
ir_data[i][j]=0;
for(i=0;i<50;i++)
sign[i]=1;
use("");
use(dbfname);
for(i=START1,j=0;i<=END1;i++,j++)
{
libset(Number,i);
libread(ir_data[j]);
}
for(i=START2;i<=END2;i++,j++)
{
libset(Number,i);
libread(ir_data[j]);
}
cls();
for( j=0 ;;)
{
for( i=0 ; i<5 ; i++ )
{
Print_Data_ir ( i,j,sign[ j*5+i ],ir_data[ j*5+i ]);
} //end for
MiddlePutStr("[返回] ",15);
switch(j)
{
case 0 : Draw_UP_DOWN(DOWN);break;
case 7 : Draw_UP_DOWN(UP);break;
default: Draw_UP_DOWN(UP_DOWN);break;
}
Key=Get_Key();
switch(Key)
{
case ESC : return ;
case UP : j--; j = j<0 ? 0 : j; break;
case DOWN : j++; j = j>=7? 7 : j; break;
}
}//end for
}
//輸出數據
void Print_Data_ir ( int i, int j, U8 sign , U8 ir_data[])
{
float data;
U8 Y;
int length;
int m,n;
char str[10]="",str2[10]="";
Clear_123();
keyswitchset(0);
switch ( j )
{
case 0 : strcpy (str2, "正向有功起始度:"); break;
case 1 : strcpy (str2, "反向有功起始度:"); break;
case 2 : strcpy (str2, "正向無功起始度:"); break;
case 3 : strcpy (str2, "反向無功起始度:"); break;
case 4 : strcpy (str2, "正向有功終止度:"); break;
case 5 : strcpy (str2, "反向有功終止度:"); break;
case 6 : strcpy (str2, "正向無功終止度:"); break;
case 7 : strcpy (str2, "反向無功終止度:"); break;
}
for(m=1;m<=16;m++)
{
moveto(m,2);
putstr(" ");
}
moveto(2,2);
putstr(str2);
switch ( i )
{
case 0 :
strcpy ( str , "總:"); Y = 4 ; break;
case 1 :
strcpy ( str , "尖:"); Y = 6 ; break;
case 2 :
strcpy ( str , "峰:"); Y = 8 ; break;
case 3 :
strcpy ( str , "平:"); Y = 10; break;
case 4 :
strcpy ( str , "谷:"); Y = 12; break;
}
for(m=2;m<=16;m++)
{
moveto(m,Y);
putstr(" ");
}
moveto ( 2,Y );
putstr(str);
data = atof(ir_data);
moveto ( 2 + strlen(str),Y);
length = strlen(ir_data);
if ( length )
{
printf("%.2f",data);
sprintf(str2 ,"%.2f",data);
if(strlen(str2)<=8&&strlen(str2)>0)
printf("kWh");
}
else {
printf("空");
}
}
//選項
int Option_ir( int Number , U8 option )
{
U8 OptionMenuChioce;
int YesNo;
const P_U8 OptionMenu[]={//菜單顯示
"詳細信息",
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -