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