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

📄 function.cpp

📁 Borland c++编写
💻 CPP
📖 第 1 页 / 共 2 页
字号:
 #include <stdio.h>
 #include <conio.h>
 #include <math.h>
 #include <stdlib.h>
 #include "htlcd.h"
 #include "htxlcd.h"
 #include "FUNCTION.H"
 #include <string.h>
 #include <process.h>
 #include "commplus.h"
 #include "Infrared.h"
 #include  "time.h"
 #include <dos.h>
 #include "SubFun.h"
 #include "CStream.h"

//窃电库
typedef struct {
  char  number[8];               //表号;
  char  type[2];           //窃电标识;
  char  st[8];                  //窃电起始时间;
  char  ct[8];                  //窃电终止时间;
} DBF_REC;

//实时库(电表数据);
typedef struct {
  char number[8];                 //表号;
  char time[6];                   //当前时间;
  char date[6];                   //当前日期;
  char ltdn[8];                   //当前电能;
  char md[6];                     //当前最大需量;
  char glys[4];                   //功率因数;
  char qdcs[2];                   // 窃电次数;
  char axdy[4];                   //A相电压;
  char bxdy[4];                   //B相电压;
  char cxdy[4];                   //C相电压;
  char axdl[4];                   //A相电流;
  char bxdl[4];                   //B相电流;
  char cxdl[4];                   //C相电流;
  char axgl[6];                   //A相有功功率;
  char bxgl[6];                   //B相有功功率;
  char cxgl[6];                   //C相有功功率;
  char dczt[2];                   //电池状态;

} DBF_Tss;

//表号库;
typedef struct {
   char bh[8];                    //表号;
   char lx[1];                    //表类型;
}DBF_Tbh;

//连续6个月需量;
typedef struct {
   char bh[8];                    //表号;
   char rq[4];                    //日期;
   char xl[8];		          //需量;
}DBF_TLx;

//连续6个月电能;
typedef struct {
   char bh[8];                    //表号;
   char sj[4];                    //日期;
   char dn[8];                    //电能;
 }DBF_TLd;

long fhdsize;
long frcsize;
long reccount;
FILE * fhandle;
DBF_REC dbfitem;
DBF_Tss dbfitem_Tss;
DBF_Tbh dbfitem_Tbh;
DBF_TLd dbfitem_TLd;
DBF_TLx dbfitem_TLx;

void strstore(char *src,char * dest, int len)
{
   int i,j;
   i=strlen(src);
   if (i>len) i=len;
   for (j=0;j<i;j++)
     *dest++=*src++;
     while (j<len)  {
     *dest++=' ';
     j++;
     }
}

int print ( char * prin, int count)
{
  char *tr=new char [count];
  tr[0]=0;
  int k=1;
  while(strlen(prin)!=0)
   {
     memcpy(tr ,prin,count);
     tr[14]=0;
     printf("%d:%s\n",k,tr);
     getch();
     prin+=count;
     k++;
   }
delete [] tr;
return 0;
}


//向窃电数据库添加数据;
void AppendRecord (DBF_REC &crecord)
{
  fseek(fhandle,4L,0);
  long recount;
  fread(&recount,sizeof(long),1,fhandle);
  recount++;
  fseek(fhandle,4L,0);
  fwrite(&recount,sizeof(long),1,fhandle);
  fseek(fhandle,-1,2);
  char buff[27];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,27);
  fwrite(buff,27,1,fhandle);
  fseek(fhandle,0,2);
  buff[0]=0x1A;
  fwrite(&buff[0],1,1,fhandle);
}

//向当前数据库添加数据;
void AppendRecord1 (DBF_Tss &crecord)
{
  fseek(fhandle,4L,0);
  long recount;
  fread(&recount,sizeof(long),1,fhandle);
  recount++;
  fseek(fhandle,4L,0);
  fwrite(&recount,sizeof(long),1,fhandle);
  fseek(fhandle,-1,2);
  char buff1[85];
  buff1[0]=0X20;
  memcpy(&buff1[1],&crecord,85);
  fwrite(buff1,85,1,fhandle);
  fseek(fhandle,0,2);
  buff1[0]=0x1A;
  fwrite(&buff1[0],1,1,fhandle);
}
//向6个月需量库;
void AppendRecord7 (DBF_TLx &crecord)
{
  fseek(fhandle,4L,0);
  long recount;
  fread(&recount,sizeof(long),1,fhandle);
  recount++;
  fseek(fhandle,4L,0);
  fwrite(&recount,sizeof(long),1,fhandle);
  fseek(fhandle,-1,2);
  char buff[21];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,21);
  fwrite(buff,21,1,fhandle);
  fseek(fhandle,0,2);
  buff[0]=0x1A;
  fwrite(&buff[0],1,1,fhandle);
}

//向6个月电能;
void AppendRecord8 (DBF_TLd &crecord)
{
  fseek(fhandle,4L,0);
  long recount;
  fread(&recount,sizeof(long),1,fhandle);
  recount++;
  fseek(fhandle,4L,0);
  fwrite(&recount,sizeof(long),1,fhandle);
  fseek(fhandle,-1,2);
  char buff[21];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,21);
  fwrite(buff,21,1,fhandle);
  fseek(fhandle,0,2);
  buff[0]=0x1A;
  fwrite(&buff[0],1,1,fhandle);
}

//关闭数据库;
void dbfclose(void)
{
  fclose(fhandle);
}

// 电表数据--------------------------------------------------------------
 int dqsj(void)  //当前数据库;
{
  static char * sdbs[]={
  "9010",              //当前电能;
  "A010",              //当前最大需量;
  "B650",              //功率因数;
  "B310",              //窃电次数;
  "B611",              //A相电压;
  "B612",              //B相电压;
  "B613",              //C相电压;
  "B621",              //A相电流;
  "B622",              //B相电流;
  "B623",              //C相电流;
  "B631",              //A相有功功率;
  "B632",              //B相有功功率;
  "B633",              //C相有功功率;;
  "C020",              //电池状态字;
 }; 

 int i,cont,n;
 char * DataName=new char[6];
 char * Getval = new char[10];
 char * sz = new char[12];
 char dq[14][8];
 dz[0]=0;
 DataName[0]=0;
 dq[0][0]=0;
 Getval[0]=0;
 sz[0]=0;
 i=0;
 cont=0;
 long tt;
//自动读数据;
  ClrLCDScr();
 printf("正在通讯,请按键");
  getch();
  strcat(DataName,sdbs[0]);
 // i=0;
 unsigned char rtncode;
do
{
   cont=0;
   do
   {
    rtncode=ReadData(DataName,Getval,sz);
    if (rtncode==0)
     {
	memcpy(&dz,sz,strlen(sz));
	memcpy(&dq[i][0],Getval,strlen(Getval));
	ClrLCDScr();
	printf("%s\n",Getval);
	DataName[0]=0;
	dz[0]=0;
	Getval[0]=0;
	sz[0]=0;
	cont=8;
     }
     else {	//错误处理
      cont++;
      }
   } while(cont<3);//do while cont
   if (cont==3)
    {
      ClrLCDScr();
      printf(sdbs[i]);
      printf("通讯错误");
      i=18;
      getch();
      return 0;
    }
   else
    {
     i++;
     getch();
      ClrLCDScr();

     strcat(DataName, sdbs[i]);
    }

}while(i<14); //do while i
 fhandle=fopen("\\tss.dbf","rb+");      //以可读写方式打开数据库;
 unsigned tmp;
 char fhead[12];
 unsigned hdsize[4];
 fread(fhead,12,1,fhandle);
 memcpy(&hdsize,(unsigned *)&fhead[9],2);
 memcpy(&hdsize[2],(unsigned *)&fhead[8],2);
 memcpy(&fhdsize,hdsize,4);
 frcsize=fhead[10];
 reccount=fhead[4];
//取抄表时间
  struct time t ;
  gettime (&t);
  char *shi;
  char *sm;
  char *se;
 if (t.ti_hour<10)
  {
    dbfitem_Tss.time[0]=48;
    shi=itoa(t.ti_hour,shi,10);
    memcpy(&dbfitem_Tss.time[1],shi,1);
  }
  else
  {
   shi=itoa(t.ti_hour,shi,10);
   memcpy(&dbfitem_Tss.time[0],shi,2);
  }
 if (t.ti_min<10)
  {
   dbfitem_Tss.time[2]=48;
   sm=itoa(t.ti_min,sm,10);
   memcpy(&dbfitem_Tss.time[3],sm,1);
  }
  else
  {
   sm=itoa(t.ti_min,sm,10);
   memcpy(&dbfitem_Tss.time[2],sm,2);
  }
  if (t.ti_sec<10)
  {
   dbfitem_Tss.time[4]=48;
   se=itoa(t.ti_min,se,10);
   memcpy(&dbfitem_Tss.time[5],se,1);
  }
  else
  {
   se=itoa(t.ti_sec,se,10);
   memcpy(&dbfitem_Tss.time[4],se,2);
  }
  struct date d ;
  getdate (&d);
  char * p;
  char * p1;
  char * p2;
  p=itoa(d.da_year,p,10);
  p+=2;
  memcpy(&dbfitem_Tss.date[0],&p[0],2 );
  if (d.da_mon<10)
  {
   p1=itoa(d.da_mon,p1,10);
   dbfitem_Tss.date[2]=48;
   memcpy(&dbfitem_Tss.date[3],p1,1);
  }
  else
  {
   p1=itoa(d.da_mon,p1,10);
   memcpy(&dbfitem_Tss.date[2],p1,2);
  }
  if (d.da_day<10)
  {
   p2=itoa(d.da_day,p2,10);
   dbfitem_Tss.date[4]=48;
   memcpy(&dbfitem_Tss.date[5],p2,1);
  }
  else
  {
   p2=itoa(d.da_day,p2,10);

⌨️ 快捷键说明

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