📄 main.cpp
字号:
#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<SUBFUN.H>
void zdcd(void); //读自动菜单;
void sdcd(void); //读手动菜单;
void readqd(void);//读窃电量;
void readdn(void);//读电能;
void readxl(void);//读需量;
void readfl(void);//读费率;
// 读手动菜单
int sdcd(void){
MENU_ITM mainmenu[6];
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=null;
for(i=0;i<=5;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='4';
}while(sd_kz<'0' || sd_kz>'5');
switch (sd_kz){
case '0':
readdn() //读电量
break;
case '1':
//读需量
break;
case '2':
//读参数
break;
case '3':
readqd() //读窃电量
break;
}
}while(sd_kz!='4');
}
//自动读数据
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)
{
while(strlen( Getval)!=0)
{
memcpy(TStr,Getval,10);
TStr[10]=0;
printf("%d:%s\n",k,TStr);
getch();
Getval+=10;
k++;
}
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(){
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 + -