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

📄 wondercb.c

📁 该软件用于抄表器 实现多功能表自动抄表! 只需将其下载到9800型 抄表器即可运行!
💻 C
📖 第 1 页 / 共 4 页
字号:
                "删    除",
                "删除全部",};

      use("");
      use(dbfname);
      Record_Number=Get_Record_Number();
     if( option == ENTER )//如果是DOWN 则往下翻页
       {
       moveto(1,15);
       putstr("[退出]    [确认]");
        OptionMenuChioce=cpopup(OptionMenu,"123",3,3,1);
        switch ( OptionMenuChioce )
          {
            case 0 : return  INFOR;    break;
            case 1 :
                    YesNo = Delete_Yes_No("确定要删除","当前记录吗?");
                    if(YesNo==No) break;
                    return  Delete_ProRecord(Number);break;
            case 2 :
                    YesNo = Delete_Yes_No("确定要删除","全部记录吗?");
                    if(YesNo==No) break;
                    return  Delete_All(); break;
          }
       }
    return FALSE;
}







//输出多功能表信息界面
void OutPut_View_dgn_Face( void )
{
 moveto(4,1);
 putstr("多功能表");
 moveto(1,3);
 putstr("表位:");
 moveto(1,5);
 putstr("地址");
 moveto(1,7);
 putstr("总有功起始度:");
 moveto(1,11);
 putstr("总有功终止度:");
 moveto(1,15);
 putstr("[退出]    [选项]");
}



//输出多功能表信息
void OutPut_dgn_infor( int Number )
{
   int i,j,length;
   char date_time[50]="";
   char str[4][50]={"","","",""};
   int back=Number;
   OutPut_View_dgn_Face();
   use("");
   use(dbfname);
   Record_Number = Get_Record_Number();
   Number = back;

   libset ( Number , B_W );
   libread (str[0]);
   moveto( 6,3);
   putstr(str[0]);
   Number = back;
   
   libset ( Number , B_DZ );
   libread (str[1]);
   moveto( 5,5);
   putstr(str[1]);
   Number = back;
   
   libset ( Number , START1 );
   libread( str[2] );              //输出底度
   moveto(2,9);
   putstr(str[2]);
   length=strlen(str[2]);
   if(length==0)
    {
    moveto(2,9);
    putstr("空");
    }
    else
    {
       if(length<=6&&length>0)
             {
       moveto(2+strlen(str[2]),9);
       putstr("kWh");
             }
    }

    libset ( Number , START2 );
    libread( str[3] );              //输出当前值
    moveto(2,13);
    putstr(str[3]);
    length=strlen(str[3]);
    if(length==0)
     {
      moveto(2,13);
     putstr("空");
    }
   else
    {
        if(length<=6&&length>0)
             {
            moveto(2+length,13);
            putstr("kWh");
              }
   }
    Number = back;
    moveto(12,1);
    printf("%d/%d",Number+1,Record_Number);

     if(Number==0)
      Draw_UP_DOWN( DOWN );
     else if( Number+1 ==Record_Number)
      Draw_UP_DOWN( UP );
     else
      Draw_UP_DOWN( UP_DOWN );
}





//选项
int Option( int Number , U8 option )
{
   U8  OptionMenuChioce;
   int YesNo=0;
   const P_U8 OptionMenu[]={//菜单显示
                "删    除",
                "删除全部",};

      use("");
      use(dbfname);
      Record_Number=Get_Record_Number();
     if( option == ENTER )//如果是DOWN 则往下翻页
       {
       moveto(1,15);
       putstr("[退出]    [确认]");
        OptionMenuChioce=cpopup(OptionMenu,"12",2,2,1);
        switch ( OptionMenuChioce )
          {
            case 0 :
                    YesNo = Delete_Yes_No("确定要删除","当前记录吗?");
                    if(YesNo==No) break;
                    else  return  Delete_ProRecord(Number);break;
            case 1 :
                    YesNo = Delete_Yes_No("确定要删除","全部记录吗?");
                    if(YesNo==No) break;
                    else return  Delete_All(); break;
          }
       }
    return FALSE;
}

//输出提示确认删除
int Delete_Yes_No(char str1[],char str2[])
{
 int Key;
 cls();
 draw_border(2,4,15,10);
 moveto(4,6);
 putstr(str1);
 moveto(4,8);
 putstr(str2);
 MiddlePutStr("[退出]    [确认]",15);
 do{
   Key=Get_Key();
   if(Key==ENTER)
    return Yes;
   if(Key==ESC)
    return No;
   }while(1);
}





 //删除当前记录     ?无删除function
int Delete_ProRecord( int Number )
{
  int i;
  use("");
  use(dbfname);

  for(i=0;i<=END;i++)
   {
   libset(Number,i);
   libwrit("");
   }
  return DEL;
}

//删除所有记录
int Delete_All( void )
{
  int i;
  int j,sum;
  use("");
  use(dbfname);
  sum=libsumr();
  for(j=0;j<sum;j++)
   {
   for(i=0;i<=END;i++)
    {
   libset(j,i);
   libwrit("");
    }
   }
  return DEL_ALL;
}



//输出机械表信息
void OutPut_jjb_infor( int Number )
{
   int i,j,length;
   int length2;
   int back;
   char date_time[50]="";
   char date_time2[50]="";
   char str[4][30]={{""},{""},{""},{""}};
   OutPut_View_jjb_Face();
   back = Number;

   use("");
   use(dbfname);
   Record_Number = Get_Record_Number();


   libset ( Number , B_W );
   libread (str[0]);
   moveto( 7,3);
   putstr(str[0]);

   libset ( Number , START1 );
   libread( str[1] );              //输出底度

   moveto(7,5);
   putstr(str[1]);
   length=strlen(str[1]);
   if(length==0)
    {
    moveto(8,5);
    putstr("空");
    }
   if(length<=6&&length>0)
   {
   moveto(8+strlen(str[1]),5);
   putstr("kWh");
   }
   libset ( Number ,DATA_TIME1);
   libread( date_time );
     length=strlen(date_time);
     for(i=0,j=10;j<length;i++,j++)
      date_time[i]=date_time[j];
      date_time[i]='\0';
   moveto( 7,7);
   putstr(date_time);

   libset ( Number , START2 );
   libread( str[2] );              //输出当前值
   moveto(7,9);
   putstr(str[2]);
   length=strlen(str[2]);
   if(length==0)
    {
     moveto(8,9);
     putstr("空");
    }
   if(length<=6&&length>0)
   {
   moveto(8+strlen(str[2]),9);
   putstr("kWh");
   }

   libset (Number, DATA_TIME2);
   libread(date_time);
      length=strlen(date_time);
     for(i=0,j=10;j<length;i++,j++)
      date_time[i]=date_time[j];
      date_time[i]='\0';
   moveto(7,11);
   putstr(date_time);

   Get_Dl(str[1],str[2],str[3]);
   moveto(7,13);
   putstr(str[3]);
   if(strlen(str[3])<=6)
    {
    moveto(8+strlen(str[3]),13);
    putstr("kWh");
    }

    Number = back;
    moveto(12,1);
    printf("%d/%d",Number+1,Record_Number);
     if(Number==0)
      Draw_UP_DOWN( DOWN );
     else if( Number+1 ==Record_Number)
      Draw_UP_DOWN( UP );
     else
      Draw_UP_DOWN( UP_DOWN );
 }

//输出机械表查看界面
void OutPut_View_jjb_Face( void )
{
 MiddlePutStr("机械表",1);
 moveto(2,3);
 putstr("表位:");
 moveto(2,5);
 putstr("起度:");
 moveto(2,7);
 putstr("时间:");
 moveto(2,9);
 putstr("止度:");
 moveto(2,11);
 putstr("时间:");
 moveto(2,13);
 putstr("电量:");
 moveto(1,15);
 putstr("[退出]    [选项]");
}
   

//输出数据库为空信息
void Msg_Lib_is_Null( void )
{
 char string1[]=" 数据库为空";
 char string2[]="按任意键继续";
 cls();
 moveto( (MaxX-strlen(string1) )/2,MaxY/2-2);
 putstr(string1);
 moveto( (MaxX-strlen(string2))/2,MaxY/2+1);
 putstr(string2);
 key(0);
}
//抄多功能表
void Chao_DGN( void )
{
 U8 bdz[50]="", bw[50]="",ir_data[20][50]={0};
 int Store_Resault,Search_Resault,Read_Data_Resault;
 int Input_Resault;
 int i,j;
Next:
   for(i=0;i<20;i++)
    for(j=0;j<50;j++)
     ir_data[i][j]=0;
   for(i=0;i<50;i++)
    bdz[i]=0;
   for(i=0;i<50;i++)
    bw[i]=0;
   Read_Data_Resault = Read_DGN(bdz,bw,ir_data );
   switch(Read_Data_Resault)
      {
       case SD    :
               Input_Resault  = Input_ir_Record ( ir_data );
                 if( Input_Resault == ESC ) break;
               Search_Resault = Search_ir_Record ( bw , bdz );
               Put_Storeing();
               Store_Resault  = Store_Data_SD( bw , bdz , ir_data ,Search_Resault ) ;
               if(Store_Resault==TRUE)
                    Put_Store_Ready();
               else
                    Put_AddFalseMsg();
               break;
       case  ENTER :
               Search_Resault = Search_ir_Record ( bw , bdz );
                    Put_Storeing();
               Store_Resault  = Store_Data( bw , bdz , ir_data ,Search_Resault ) ;
               if(Store_Resault==TRUE)
                    Put_Store_Ready();
               else
                    Put_AddFalseMsg();
               break;
       case  ESC : return;
       }
   goto Next;

}

//手工输入多功能表信息
int Input_ir_Record ( char  ir_data[][50] )
{
  int i,j;
  int m=0,n;
  int Get_Resault;
  for(i=0;i<20;i++)
   for(j=0;j<50;j++)
    ir_data[i][j]=0;
  for(j=0;j<4;)
    {
         cls();
         for(i=0; i<5 ; i++ )
         InPut_ir_TS(i,j);
         for(i=0;i<5;i++)
         OutPut(ir_data[j*5+i],(i+2)*2);

         for(i=m ;i<5 ; )
         {
         Get_Resault = Get_Record_infor(ir_data[ j*5+i ],(i+2)*2);
         switch( Get_Resault )
           {
            case DOWN :
                        i++;
                        if(i==5)
                        {
                        j++;
                        if(j==4)            ///到最后一页再向下翻则反回当前页最上方
                         {
                          j=3;
                         }
                        m=0;                //
                        }
                        break;
            case ESC  : return  ESC;
            case ENTER:
                      return  ENTER;
            case UP   : i--;
                        if(i<0)
                        { j--;m=4;   //m的值是为了上翻是使光标在最下方
                    
                          if(j<0)j=0;
                          break;
                        }
            }   //endswitch
            if(i<0)break;
        }//endfor
    }

   return TRUE;
}


//
void OutPut(char data[],int y)
{
 moveto(5,y);
 putstr(data);
}
//输入单条信息
int  Get_Record_infor(char data[],int y)
{
  int  Input_Resault;
  char point[50]="";
  keyswitchset(0);
  Input_Resault = InputStr(data,5,y,8);
  return Input_Resault;

}


//手工输入多功能表信息提示
void InPut_ir_TS ( int i, int j )
{
  int Y;
  char str2[30]="";
  char str[30]="";
  keyswitchset(0);
  switch ( j )
  {
   case 0  :   strcpy (str2, "正向有功:"); break;
   case 1  :   strcpy (str2, "反向有功:"); break;
   case 2  :   strcpy (str2, "正向无功:"); break;
   case 3  :   strcpy (str2, "反向无功:"); break;
  }
  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;
   }

  moveto ( 2,Y );
  putstr(str);
  Clear_123();
  MiddlePutStr("[退出]    [存储]",15);
   switch(i)
           {case 0: Draw_UP_DOWN(DOWN);break;
            case 1:
            case 2:
            case 3:
            case 4: Draw_UP_DOWN(UP_DOWN);break;
           }


}



// 存储手动输入的数据
U8 Store_Data_SD( U8 bw[] , U8 bdz[] , U8 ir_data[][50] ,int Search_Resault)
{
  char backstring[50]="";
  int i,j;
  int m=0,length;
  int Number;
  int sign=0;
  char datastr[50]="";
  float data ;
  int sum,all;
    use("");
  use(dbfname);
  sum=Get_Record_Number();
  all=libsumr();

  if(Search_Resault==-1&&sum==all)
   {
     sign=libappend();
     if(sign!=1)
        {
         return FALSE;
        }
     Number = libsumr();
     Number--;
   }
  else if(Search_Resault!=-1)
   {
     Number = Search_Resault;
   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -