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

📄 function1.cpp

📁 Borland c++编写
💻 CPP
📖 第 1 页 / 共 3 页
字号:
 #include <stdio.h>
 #include <conio.h>
 #include <math.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"
 #include <stdlib.h>
//窃电库
typedef struct {
  char  Meterno[8];              //表号;
  unsigned char  Flag;           //窃电标识;
  char  StartDateTime[14];       //窃电起始时间;
  char  EndDateTime[14];         //窃电终止时间;
} DBF_REC;

//实时库;
typedef struct {
  char number[8];                 //表号;
  char time[6];                   //当前时间;
  char date[6];                   //当前日期;
  char lidn[8];                   //当前电能;
  char md[6];                     //当前最大需量;
  char glys[5];                   //功率因数;
  char ljxl[6];                   //累计最大需量;
  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 yggl[6];                   //有功功率;
  char axgl[6];                   //A相有功功率;
  char bxgl[6];                   //B相有功功率;
  char cxgl[6];                   //C相有功功率;
  char axys[6];                   //A相功率因数;
  char bxys[6];                   //B相功率因数;
  char cxys[6];                   //C相功率因数;
} DBF_Tss;

//结算库;
typedef struct {
  char  number[8];               //表号;
  char  jssj[6];                 //结算时间;
  char  ygdn[8];                 //有功电能;
  char  zdxl[6];                 //最大需量(当前);
  char  fssj[12];                //最大需量发生时间;
  char  glys[4];                 //功率因数(平均);
  char  qdcs[4];                 //窃电次数;
  char  ljgl[6];                 //累积功率;
}DBF_Tjs;

//时段及费率库;
 typedef struct sdk{
  char Id[1];                    //时段名称;
  char Mc[1];                    //
  char Td0[6];                   //时段1及费率;
  char Td1[6];                   //时段2及费率;
  char Td2[6];                   //时段3及费率;
  char Td3[6];                   //时段4及费率;
  char Td4[6];                   //时段5及费率;
  char Td5[6];                   //时段6及费率;
  char Td6[6];                   //时段7及费率;
  char Td7[6];                   //时段8及费率;
  struct sdk *next;
}DBF_Tsd;

//费率电能库;
typedef struct {
  char BH[8];                   //表号;
  char LX[1];                   //类型;
  char TS[1];                   //套数;
  char DN1[8];                  //费率1电能;
  char DN2[8];                  //费率2电能;
  char DN3[8];                  //费率3电能;
  char DN4[8];                  //费率4电能;
  char DN5[8];                  //费率5电能;
  char DN6[8];                  //费率6电能;
  char DN7[8];                  //费率7电能;
  char DN8[8];                  //费率8电能;
}DBF_Tfl;

//表参数库;
typedef struct {
  char Number[8];               //表号;
  char SBH[12];                 //设备号;
  char BCS[4];                  //表常数;
  char RQZC[8];                 //日期周次;
  char SJ[6];                   //时间;
  char BCSJ[12];                //编程时间;
  char QLSJ[12];                //清零时间;
  char QLCS[4];                 //清零次数;
  char BCCS[4];                 //编程次数;
  }DBF_Bcs;	

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

//连续6个月需量;
typedef struct {
   char BH[8];           //表号;
   char PS[12];          //日期;
   char XL[6];           //需量;
}DBF_TLx;

//连续6个月电能;
typedef struct {
   char BH[8];           //表号;
   char SJ[4];           //日期;
   char DN[8];           //电能;
 }DBF_TLd;

//自诊断库;
typedef struct{
  char BH[8];            //表号;
  char TD[[1];           //时间和日历;
  char ST[1];            //非易失性记忆体;
}DBF_Tzj;

//需量库;
typedef struct xlk {
   char bh[8];                 //表号;
   char rq[6];                 //日期;
   char x1[6];                 //一天48个需量值;
   char x2[6];
   char x3[6];
   char x4[6];
   char x5[6];
   char x6[6];
   char x7[6];
   char x8[6];
   char x9[6];
   char x10[6];
   char x11[6];
   char x12[6];
   char x13[6];
   char x14[6];
   char x15[6];
   char x16[6];
   char x17[6];
   char x18[6];
   char x19[6];
   char x20[6];
   char x21[6];
   char x22[6];
   char x23[6];
   char x24[6];
   char x25[6];
   char x26[6];
   char x27[6];
   char x28[6];
   char x29[6];
   char x30[6];
   char x31[6];
   char x32[6];
   char x33[6];
   char x34[6];
   char x35[6];
   char x36[6];
   char x37[6];
   char x38[6];
   char x39[6];
   char x40[6];
   char x41[6];
   char x42[6];
   char x43[6];
   char x44[6];
   char x45[6];
   char x46[6];
   char x47[6];
   char x48[6];
   //struct xlk *next;
   //struct xlk *prior;
   }DBF_Txl;
   	

extern unsigned _stklen  = 32768U;
extern unsigned _heaplen = 1024U;
extern int ReceiveFileChar(unsigned char &C,int delay);

long fhdsize;
long frcsize;
long reccount;

FILE * fhandle;
struct sdk * find(char * Mc);

DBF_REC dbfitem;
DBF_Tss dbfitem_Tss;
DBF_Tjs dbfitem_Tjs;
DBF_Tsd dbfitem_Tsd;
DBF_Tfl dbfitem_Tfl;
DBF_Bcs dbfitem_Bcs;
DBF_Tbh dbfitem_Tbh;
DBF_Txl dbfitem_Txl;
DBF_TLd dbfitem_TLd;
DBF_TLx dbfitem_TLx;
DBF_Tzj dbfitem_Tzj;

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 dbfopen(FILE * fhdl, long *fhdsize,
	    long *frcsize, long *reccount)
{
  unsigned tmp;
  char fhead[12];
  //unsigned char * fbuff=new char [255];
  //fread(fbuff,255,1,fhdl);
  fwrite(fhead,12,1,fhdl);
  //delete [] fbuff;
  *fhdsize=* (unsigned *)&fhead[8];
  *frcsize=* (unsigned *)&fhead[10];
  *reccount=* (unsigned *)&fhead[4];
  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[38];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,38);
  fwrite(buff,38,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 buff[38];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,38);
  fwrite(buff,38,1,fhandle);
  fseek(fhandle,0,2);
  buff[0]=0x1A;
  fwrite(&buff[0],1,1,fhandle);
}

//向结算点数据库添加数据;
void AppendRecord2 (DBF_Tjs &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[38];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,38);
  fwrite(buff,38,1,fhandle);
  fseek(fhandle,0,2);
  buff[0]=0x1A;
  fwrite(&buff[0],1,1,fhandle);
}

//向费率数据库添加数据;
void AppendRecord3 (DBF_Tfl &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[38];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,38);
  fwrite(buff,38,1,fhandle);
  fseek(fhandle,0,2);
  buff[0]=0x1A;
  fwrite(&buff[0],1,1,fhandle);
}

//向表参数据库添加数据;
void AppendRecord4 (DBF_Bcs &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[38];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,38);
  fwrite(buff,38,1,fhandle);
  fseek(fhandle,0,2);
  buff[0]=0x1A;
  fwrite(&buff[0],1,1,fhandle);
}
//向60天需量库加数据;
void AppendRecord5 (DBF_Txl &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[38];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,38);
  fwrite(buff,38,1,fhandle);
  fseek(fhandle,0,2);
  buff[0]=0x1A;
  fwrite(&buff[0],1,1,fhandle);
}
//向6个月电能库加数据;
void AppendRecord6 (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[38];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,38);
  fwrite(buff,38,1,fhandle);
  fseek(fhandle,0,2);
  buff[0]=0x1A;
  fwrite(&buff[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[38];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,38);
  fwrite(buff,38,1,fhandle);
  fseek(fhandle,0,2);
  buff[0]=0x1A;
  fwrite(&buff[0],1,1,fhandle);
}
//向自诊断库里加电能;
void AppendRecord8 (DBF_Tzj &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[38];
  buff[0]=0X20;
  memcpy(&buff[1],&crecord,38);
  fwrite(buff,38,1,fhandle);
  fseek(fhandle,0,2);
  buff[0]=0x1A;
  fwrite(&buff[0],1,1,fhandle);
}
//关闭数据库;
void dbfclose(void)
{
  fclose(fhandle);
}

void beep(int cnt)
{
  int i;

  for (i=0; i<cnt; i++)
    asm {
      mov  ax, 0e07h
      int  10h
    }
}

//取系统数据;
int getdatetime(char *dt,char *todt)
{
 memcpy(todt,dt,2);
 memcpy(todt+2,dt+3,2);
 memcpy(todt+3,dt+10,1);
 return 1;
}

struct sdk *find (char * Mc)
{
 struct sdk * info;
 struct sdk *start;
 info=start;
 while (info)
  {
  if(! strcmp(Mc,info->Mc)) return info;
   info=info->next;
  }
 printf("Mc not found\n");
 return NULL;
 }

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


 int i,cont;

⌨️ 快捷键说明

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