📄 main.txt
字号:
#include<stdio.h> // i/o 函数
#include<string.h> // 字符函数
#include<conio.h> // 屏幕操作函数
#include<htxlcd.h> // 液晶显示子函数
#include<htlcd.h> // 视窗定义.开关窗口.画框.监控电池状态
#include<dos.h>
#include<commplus.h> // 通信函数,如调用服务器.收发字符流.读入条形码
#include<cstream.h>
#include "Function.h"
#include <stdlib.h>
#include <io.h>
#include <fcntl.h>
#include "htproces.h"
#include "SUBFUN1.h"
#define _filename "QDtable.dbf"
#define _filename1 "Tss.dbf";
#define _filename2 "Tjs.dbf";
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;
extern unsigned _stklen = 32768U;
extern unsigned _heaplen = 1024U;
extern int ReceiveFileChar(unsigned char &C,int delay);
long fhdsize;
long frcsize;
long reccount;
FILE * fhandle;
FILE * fhandle_Tss;
FILE * fhandle_Tjs;
DBF_REC dbfitem;
DBF_Tss dbfitem_Tss;
DBF_Tjs dbfitem_Tjs;
void zdcd(void); //读自动菜单;
void sdcd(void); //读手动菜单;
// 读手动菜单
int sdcd(void){
MENU_ITM mainmenu[9];
int i;
char sd_kz;
do{
mainmenu[0].menubar="0.结算点数据";
mainmenu[1].menubar="1.实时数据";
mainmenu[2].menubar="2.电表参数";
mainmenu[3].menubar="3.窃电数据";
mainmenu[4].menubar="4.需量数据";
mainmenu[5].menubar="5.电表费率与时段";
mainmenu[6].menubar="6.退出";
mainmenu[7].menubar=null;
for(i=0;i<=7;i++) mainmenu[i].menukey=i+48;
do{
clrscr();
SetPullMode(0);
sd_kz=putch((char)menu(mainmenu,"手动抄表",1,1,1));
SetPullMode(2);
if (sd_kz==key_esc) sd_kz='6';
}while(sd_kz<'0' || sd_kz>'6');
switch (sd_kz){
case '0':
jsdsj(); //结算点数据;
break;
case '1':
sssj(); //实时数据;
break;
case '2':
dbcs() //电表参数;
break;
case '3':
qdsj() //窃电数据;
break;
case '4':
xlsj() //需量数据;
break;
case '5':
flsd() //费率时段;
break;
case '6';
break;
}
}while(sd_kz!='6');
}
//自动读数据
int zdcd(void)
{
char * DataName=new char[6];
DataName[0]=0;
strcat(DataName, " ");
char * Getval = new char[100];
char * Addr =new char[10];
Addr[0]=0;
strcat(Addr,"99999999");
printf("%s","wait...");
getch();
if(ReadData(DataName,Getval,Addr))
{
printf("%s",Getval);
getch();
}
delete [] DataName;
delete [] Getval;
delete [] Addr;
return 1;
}
//读电能
int readdn(void)
{
char * DataName=new char[6];
DataName[0]=0;
strcat(DataName, "9010");
char * Getval = new char[100];
char * Addr =new char[10];
Addr[0]=0;
strcat(Addr,"99999999");
printf("%s","wait...");
getch();
if(ReadData(DataName,Getval,Addr))
{
printf("%s",Getval);
getch();
}
delete [] DataName;
delete [] Getval;
delete [] Addr;
return 1;
}
//读窃电
int readqd(void)
(
fhandle=fopen(_filename,"rb+");
unsigned tmp;
char fhead[12];
fread(fhead,12,1,fhandle);
fhdsize=fhead[8];
frcsize=fhead[10];
reccount=fhead[4];
//read meter______________________________________________
char * DataName=new char[6];
DataName[0]=0;
strcat(DataName, "9270");
char * Getval = new char[600];
char * Addr =new char[10];
Addr[0]=0;
strcat(Addr,"99999999");
printf("%s","wait...");
getch();
char * TStr=new char [10];
int k=1;
if(ReadData(DataName,Getval,Addr)==0)
{
char data[19][12];
memcpy(data,Getval,strlen(Getval));
int i,j;
char DTStr[3];
memcpy(dbfitem.Meterno,&Addr[3],8);
for(i=0;i<20;i++)
{
dbfitem.Flag=data[i][0];
strcpy(dbfitem.StartDateTime,"20");
strcpy(dbfitem.EndDateTime,"20");
for(j=1;j<=12;j++)
{
// Byte2Hex(data[i][j],DTStr);
if(j<=6)
memcpy(&dbfitem.StartDateTime[(j-1)*2+2],DTStr,2);
else
memcpy(&dbfitem.EndDateTime[(j-7)*2+2],DTStr,2);
} //for
AppendRecord(dbfitem);
} //for
getch();
}
else
{
printf("%s","read meter data error\n");
getch();
}
delete [] DataName;
delete [] Getval;
delete [] Addr;
delete [] TStr;
dbfclose();
return(1);
}
//主程序
int main(){
unsigned char *HexBuff=new unsigned char[30];
int Leng=Str2Hex("12345",HexBuff);
MENU_ITM mainmenu[6];
char returnflag;
MENU_ITM mainmenu[3];
char i;
int ii;
do{
clrscr();
mainmenu[0].menubar="0.自动抄表";
mainmenu[1].menubar="1.手动抄表";
mainmenu[2].menubar="2.退出";
mainmenu[3].menubar=NULL;
for(ii=0;ii<=2;ii++) mainmenu[ii].menukey=ii+48;
i=putch((char)menu(mainmenu,"主菜单",0,1,1));
switch (i){
case '0':
zdcd(); //自动读取数据
break;
case '1':
sdcd(); //手动读取数据
break;
case '2':
return(0);
}
}while (i!='2');
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -