📄 cbcx.c
字号:
sprintf(s," %02X%02X%",d1[1],d1[0]); OSDrawInWin(w1,8,82,s,3,0);
OSDrawInWin(w1,2,100,"任意键返回...",3,0);
OSWaitKey();
CloseSubWindow(w1);
break;
}
}
CloseSubWindow(w1);
CloseSubWindow(w0);
}
void ViewDate(ULLONG devID) //读取电表日期
{
OS_WIN *w0,*w1;
UBYTE k;
UBYTE d[4],c[3],s[20];
ULLONG nID,m;
sprintf(s," ID [%04X%08X]",(ULONG)(devID>>32),(ULONG)devID);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
nID = DLT645_InputID();
sprintf(s," ID [%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
w1 = OSCreatSubWindow(0,0,128,128,1,1,s);
if(nID<0x1000000000000){
while(1){
if(DLT645_Read(4,nID,0xC010,d,4,3000,3)<0) break;
OSDrawInWin(w1,2,4,"电表日期",3,0);
sprintf(s,"%02X年%02X月%02X日",d[3],d[2],d[1]); OSDrawInWin(w1,8,18,s,3,0);
OSDrawInWin(w1,2,100,"任意键返回...",3,0);
OSWaitKey();
CloseSubWindow(w1);
break;
}
}
CloseSubWindow(w1);
CloseSubWindow(w0);
}
void ViewTime(ULLONG devID) //读取电表时间
{
OS_WIN *w0,*w1;
UBYTE k;
UBYTE d[4],c[3],s[20];
ULLONG nID,m;
sprintf(s," ID [%04X%08X]",(ULONG)(devID>>32),(ULONG)devID);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
nID = DLT645_InputID();
sprintf(s," ID [%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
w1 = OSCreatSubWindow(0,0,128,128,1,1,s);
if(nID<0x1000000000000){
while(1){
if(DLT645_Read(4,nID,0xC011,c,3,2000,3)<0) break;
OSDrawInWin(w1,2,36,"电表时间",3,0);
sprintf(s,"%2X:%02X:%02X",c[2],c[1],c[0]); OSDrawInWin(w1,8,50,s,3,0);
OSDrawInWin(w1,2,100,"任意键返回...",3,0);
OSWaitKey();
CloseSubWindow(w1);
break;
}
}
CloseSubWindow(w1);
CloseSubWindow(w0);
}
//----------------------------------------------
void ViewMeter(void)
{
OS_WIN *w0;
UBYTE k;
ULONG sele;
ULLONG devID,a;
w0 = OSCreatSubWindow(0,0,128,126,1,1,"查看电表数据");
while(1){
// k = OSMenuInWin(w0,1,15,19,7,&sele,7,1," [1]正向有功电量"," [2]正向有功数据块"," [3]联发电表日期"," [4]抄读电表日期"," [5]抄读电表时间"," [6]抄读电表表号"," [7]抄读脉冲常数");
k = OSMenuInWin(w0,1,15,19,6,&sele,6,1," [1]正向有功电量"," [2]正向有功数据块"," [3]日期时间脉冲"," [4]抄读电表日期"," [5]抄读电表时间"," [6]抄读电表表号");
if(k==K_ESC) break;
else if(k==K_HYPHEN){
a = DLT645_InputID();
if(a<0x1000000000000) devID = a;
}
else if(k==K_ENTER){
// devID=0x000000000000;
devID=0xAAAAAAAAAAAA;
switch(sele){
case 0: ViewPower485(devID); break;
case 1: ViewPowersjk485(devID);break;
case 2: ViewDatelf(devID); break;
case 3: ViewDate(devID); break;
case 4: ViewTime(devID); break;
case 5: viewbh(devID); break;
//case 6: Viewmccs485(devID); break;
default: break;
}
}
}
CloseSubWindow(w0);
}
//--------------------------------------------------------------
//--------------------------------------------------------------
void SetIniID(ULLONG devID) //写电表表号
{
OS_WIN *w0,*w1;
UBYTE s[20],s1[20];
ULLONG nID,m;
nID=0;
sprintf(s," ID [%04X%08X]",(ULONG)(devID>>32),(ULONG)devID);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
nID = DLT645_InputID();
//sprintf(s1,"0010000[%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
// nID=s1;
sprintf(s," ID [%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
w1 = OSCreatSubWindow(0,0,128,128,1,1,s);
if(nID<0x1000000000000)
{
while(1)
{
if (nID==0x000000000000)
{
OSMessageBox("设置电表表号","电表表号不能为空!","任意键返回...");
break;
}
else
{
if(DLT645_WriteID(4,nID,4000,3)==0)
{
OSMessageBox("设置电表表号","设置成功!","任意键返回...");
CloseSubWindow(w1);
CloseSubWindow(w0);
return;
}
CloseSubWindow(w1);
CloseSubWindow(w0);
return;
}
}
}
CloseSubWindow(w1);
CloseSubWindow(w0);
}
void SetIniIDsc(ULLONG devID) //写电表表号
{
OS_WIN *w0,*w1;
UBYTE s[20],s1[20],s4[20];
ULLONG nID,m,s2,s3;
nID=0;
sprintf(s," ID [%04X%08X]",(ULONG)(devID>>32),(ULONG)devID);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
nID = DLT645_InputID();
sprintf(s1,"10000%05X",(ULONG)nID);
s2=0;
nID=hex2bcd4(s1);
sprintf(s," ID [%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
w1 = OSCreatSubWindow(0,0,128,128,1,1,s);
if(nID<0x1000000000000)
{
while(1)
{
if (nID==0x000000000000)
{
OSMessageBox("设置电表表号","电表表号不能为空!","任意键返回...");
break;
}
else
{
if(DLT645_WriteID(4,nID,1000,3)==0)
{
OSMessageBox("设置电表表号","设置成功!","任意键返回...");
CloseSubWindow(w1);
CloseSubWindow(w0);
return;
}
CloseSubWindow(w1);
CloseSubWindow(w0);
return;
}
}
}
CloseSubWindow(w1);
CloseSubWindow(w0);
}
ULONG inpswd(UBYTE *d)
{
ULONG a = 0;
UBYTE i;
for(i=0;i<6;i++){
if(d[i]==0) break;
a = (a<<4)+(d[i]&0xF);
// a = (d[i]&0xF);
}
return a;
}
void setPassword485(ULLONG devID) //设置密码
{ OS_WIN *w0,*w1,*w2,*w3;
UBYTE s[20],p[10],c[10],k,b[10],g[10];
ULONG nPswd,cPswd;
ULLONG nID,m;
nID=0;
sprintf(s," ID [%04X%08X]",(ULONG)(devID>>32),(ULONG)devID);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
nID = DLT645_InputID();
sprintf(s," ID [%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
w1 = OSCreatSubWindow(0,0,128,128,1,1,s);
if(nID<0x1000000000000){
while(1){
w2=OSCreatSubWindow(15,34,90,44,1,1,"输入旧密码");
p[0]=0;
k = OSEntryInWin(w2,2,8,6,p,0,0,1);
if(k==K_ESC) {CloseSubWindow(w2);CloseSubWindow(w1);CloseSubWindow(w0);return;}
else if(k==K_ENTER){
while(1){
w3 =OSCreatSubWindow(15,34,90,44,1,1,"输入新密码");
c[0]=0;
k = OSEntryInWin(w3,2,8,6,c,0,0,1);
if(k==K_ESC) {CloseSubWindow(w3);CloseSubWindow(w2);CloseSubWindow(w1);CloseSubWindow(w0);return;}
else if(k==K_ENTER){
cPswd = (inpswd(p)<<8);
nPswd = (inpswd(c)<<8);
if(DLT645_WritePswd(4,nID,cPswd,nPswd,3000,3)<0){
CloseSubWindow(w1);
CloseSubWindow(w2);
CloseSubWindow(w3);
CloseSubWindow(w0);
return;
}
OSMessageBox("修改电表密码","修改成功!","任意键返回...");
CloseSubWindow(w1);
CloseSubWindow(w2);
CloseSubWindow(w3);
CloseSubWindow(w0);
return;
}
}
}
}
}
CloseSubWindow(w0);
}
void CorrectTime()
{
OS_WIN *w0;
w0 = OSCreatSubWindow(0,0,128,128,1,1,"广播校时");
DLT645_BroadTime(4);
CloseSubWindow(w0);
}
void SetPower485(ULLONG devID) //电表清零
{
OS_WIN *w0,*w1,*w2;
UBYTE k,s[20];
UBYTE m[8];
ULLONG nID,nPswd;
sprintf(s," ID [%04X%08X]",(ULONG)(devID>>32),(ULONG)devID);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
nID = DLT645_InputID();
if (nID==0x1000000000000){CloseSubWindow(w0);return;}
sprintf(s," ID [%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
w1 = OSCreatSubWindow(0,0,128,128,1,1,s);
w2= OSCreatSubWindow(15,34,90,44,1,1,"输入密码");
m[0]=0;
k = OSEntryInWin(w2,1,2,6,m,0,0,1);
if(k==K_ENTER){
while(1){
nPswd = (inpswd(m)<<8);
if(DLT645_Write485ql(4,nID,0x09,nPswd,0x02,8000,3)==0){
OSMessageBox("电表清零","清零成功!","任意键返回...");
}
CloseSubWindow(w1);
CloseSubWindow(w2);
CloseSubWindow(w0);
return;
}
}
CloseSubWindow(w1);
CloseSubWindow(w2);
CloseSubWindow(w0) ;
}
void SetPowertd(ULLONG devID) //电表通电功能
{
OS_WIN *w0,*w1,*w2;
UBYTE k,s[20];
UBYTE m[8];
UBYTE d[6];
ULLONG nID,cPswd,ncon;
sprintf(s," ID [%04X%08X]",(ULONG)(devID>>32),(ULONG)devID);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
nID = DLT645_InputID();
if (nID==0x1000000000000){CloseSubWindow(w0);return;}
sprintf(s," ID [%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
w1 = OSCreatSubWindow(0,0,128,128,1,1,s);
w2 =OSCreatSubWindow(15,34,90,44,1,1,"输入密码");
m[0]=0;
k = OSEntryInWin(w2,1,2,6,m,0,0,1);
cPswd = (inpswd(m)<<8);
if(k==K_ESC){ CloseSubWindow(w2); CloseSubWindow(w1); CloseSubWindow(w0);return;}
else if(k==K_ENTER){
if (DLT645_Write485tdd(4,nID,0xC606,cPswd,0x04,3000,3)==0){
OSMessageBox("电表通电","电表通电成功!","任意键返回...");
}
}
CloseSubWindow(w2);
CloseSubWindow(w1);
CloseSubWindow(w0);
}
void SetPowertdau(ULLONG devID) //电表通电功能
{
OS_WIN *w0,*w1,*w2;
UBYTE k,s[20];
UBYTE m[8];
UBYTE d[6];
ULLONG nID,cPswd,ncon;
sprintf(s," ID [%04X%08X]",(ULONG)(devID>>32),(ULONG)devID);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
nID = DLT645_InputID();
// nID=devID;
if (nID==0x1000000000000){CloseSubWindow(w0);return;}
sprintf(s," ID [%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
w1 = OSCreatSubWindow(0,0,128,128,1,1,s);
w2 =OSCreatSubWindow(15,34,90,44,1,1,"输入密码");
m[0]=0;
// m[1]=0;
// m[2]=0;
// m[3]=0;
// m[4]=0;
// m[5]=0;
// m[6]=0;
// m[7]=0;
k = OSEntryInWin(w2,1,2,6,m,0,0,1);
cPswd = (inpswd(m)<<8);
if(k==K_ESC){ CloseSubWindow(w2); CloseSubWindow(w1); CloseSubWindow(w0);return;}
else if(k==K_ENTER){
if (DLT645_Write485tdd(4,nID,0xC606,cPswd,0x04,4000,3)==0){
OSMessageBox("电表通电","电表通电成功!","任意键返回...");
}
}
CloseSubWindow(w2);
CloseSubWindow(w1);
CloseSubWindow(w0);
}
void SetPowerddY(ULLONG devID) //电表断电予通知功能
{
OS_WIN *w0,*w1,*w2;
UBYTE k,s[20];
UBYTE m[8];
UBYTE d[6];
UBYTE f[6];
ULLONG nID,cPswd,ncon,ncon1;
sprintf(s," ID [%04X%08X]",(ULONG)(devID>>32),(ULONG)devID);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
nID = DLT645_InputID();
if (nID==0x1000000000000){CloseSubWindow(w0);return;}
sprintf(s," ID [%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
w1 = OSCreatSubWindow(0,0,128,128,1,1,s);
w2 =OSCreatSubWindow(15,34,90,44,1,1,"输入密码");
m[0]=0;
k = OSEntryInWin(w2,1,2,6,m,0,0,1);
cPswd = (inpswd(m)<<8);
if(k==K_ESC) {CloseSubWindow(w2);CloseSubWindow(w1); CloseSubWindow(w0);return;}
else if(k==K_ENTER){
if (DLT645_Write485tdd(4,nID,0xC03A,cPswd,0x04,3000,3)==0){
OSMessageBox("电表断电","电表断电通知成功!","任意键返回...");
}
}
CloseSubWindow(w1);
CloseSubWindow(w0);
}
void SetPowerddK(ULLONG devID) //电表断电控制功能
{
OS_WIN *w0,*w1,*w2;
UBYTE k,s[20];
UBYTE m[8];
UBYTE d[6];
UBYTE f[6];
ULLONG nID,cPswd,ncon,ncon1;
sprintf(s," ID [%04X%08X]",(ULONG)(devID>>32),(ULONG)devID);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
nID = DLT645_InputID();
if (nID==0x1000000000000){CloseSubWindow(w0);return;}
sprintf(s," ID [%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
w1 = OSCreatSubWindow(0,0,128,128,1,1,s);
w2 =OSCreatSubWindow(15,34,90,44,1,1,"输入密码");
m[0]=0;
k = OSEntryInWin(w2,1,2,6,m,0,0,1);
cPswd = (inpswd(m)<<8);
if(k==K_ESC) {CloseSubWindow(w2);CloseSubWindow(w1);CloseSubWindow(w0);return;}
else if(k==K_ENTER){
if (DLT645_Write485tdd(4,nID,0xC605,cPswd,0x04,3000,3)==0){
OSMessageBox("电表断电","电表断电成功!","任意键返回...");
}
} CloseSubWindow(w2);
CloseSubWindow(w1);
CloseSubWindow(w0);
}
void SetPowerddKau(ULLONG devID) //电表断电控制功能
{
OS_WIN *w0,*w1,*w2;
UBYTE k,s[20];
UBYTE m[8];
UBYTE d[6];
UBYTE f[6];
ULLONG nID,cPswd,ncon,ncon1;
sprintf(s," ID [%04X%08X]",(ULONG)(devID>>32),(ULONG)devID);
w0 = OSCreatSubWindow(0,0,128,128,1,1,s);
nID = DLT645_InputID();
// nID=devID;
if (nID==0x1000000000000){CloseSubWindow(w0);return;}
sprintf(s," ID [%04X%08X]",(ULONG)(nID>>32),(ULONG)nID);
w1 = OSCreatSubWindow(0,0,128,128,1,1,s);
w2 =OSCreatSubWindow(15,34,90,44,1,1,"输入密码");
m[0]=0;
// m[1]=0;
// m[2]=0;
// m[3]=0;
// m[4]=0;
// m[5]=0;
// m[6]=0;
// m[7]=0;
k = OSEntryInWin(w2,1,2,6,m,0,0,1);
cPswd = (inpswd(m)<<8);
if(k==K_ESC) {CloseSubWindow(w2);CloseSubWindow(w1);CloseSubWindow(w0);return;}
else if(k==K_ENTER){
if (DLT645_Write485tdd(4,nID,0xC605,cPswd,0x04,4000,3)==0){
OSMessageBox("电表断电","电表断电成功!","任意键返回...");
}
} CloseSubWindow(w2);
CloseSubWindow(w1);
CloseSubWindow(w0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -