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

📄 wondercb.c

📁 该软件用于抄表器 实现多功能表自动抄表! 只需将其下载到9800型 抄表器即可运行!
💻 C
📖 第 1 页 / 共 4 页
字号:
#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 + -