📄 function1.cpp
字号:
#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 + -