📄 es16uh.zrg
字号:
return
endif
return
endpro
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*若一屏不能显示,用此显示方式
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure XsData2
clear
i=1
j=63
do while i<=len(trim(strxs))
clear
ctmpstr="按↓↑键翻页查阅 "
@3,0 say ctmpstr
@0,0 say substr(strxs,i,j)
@3,20 say ""
wait"" to cKeyChar
do case
case asc(cKeyChar)=14
if i+j<=len(trim(strxs))
i=i+j
endif
case asc(cKeyChar)=17
if i>=j
i=i-j
endif
case asc(cKeyChar)=24
return
otherwise
loop
endcase
enddo
return
endpro
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*通用转换格式
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure Changeother
k=1
m=1
n=1
if nlen>ndatalen*nitem
nlen=ndatalen*nitem
endif
j=ndatalen
strdata=""
if nchangeformat=1
*/循显时间的显示问题\*
if (ndataid1=019 .and. ndataid2=193).or.(ndataid1=048.and.ndataid2=193)
prognum=crecbuff{1,1}
strdata=str(prognum-51 ,2)
else
do while k<=nlen
if j>7
l=1
n=j
do while l<=j
i = BCDtoNUM(crecBuff{n, 1}, 033h)
if i<10
ctmpstr="0"+str(i,1)
else
ctmpstr=str(i,2)
endif
strdata=strdata+ctmpstr
n=n-1
l=l+1
enddo
else
if nvallen=1
m=m+1
j=j-1
endif
i = BCDtoNUM(crecBuff{m, j}, 033h)
ctmpstr=str(i,j*2)
n=1
do while n<=j*2
strdata=strdata+str(val(substr(ctmpstr,n,1)),1)
n=n+1
enddo
endif
m=m+j
k=k+j
enddo
endif
else
do while K<=nitem
i = BCDtoNUM(crecBuff{m, j}, 033h)
strdata=strdata+str(i,j*2)
m=m+j
k=k+1
enddo
endif
if ProgramFlag=1
n=receivebuf{18,1}
n=n-33h
strdata=strdata+substr(hex(n),3,2)
n=receivebuf{17,1}
n=n-33h
strdata=strdata+substr(hex(n),3,2)
nlen=6
endif
i=1
if ndataid2=226 &&反相或停电的数据域倒序
strdata=substr(strdata,9,8)+substr(strdata,1,8)
endif
do while i<=nlen*2
n = scanbyte(cformat{1,len(cformat)},asc("#"))
if n>0
cformat{n,2}=strdata{i,2}
endif
i=i+2
enddo
n = scanbyte(cformat{1,len(cformat)},asc("#"))
if n>0
cformat=substr(cformat,1,n-1)
endif
i=1
do while .t.
i =scanbyte(cformat{1,len(cformat)},asc("*") )
if i>0
j= scanbyte(cformat{i+1,len(cformat)},asc("*"))
strxs=substr(cformat,1,i-1)+substr(cformat,i+j+1,len(cformat)-i-j)
cformat=strxs
else
strxs=cformat
exit
endif
enddo
return
endpro
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*电量转换格式
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure ChangePower
if nlen>ndatalen*nitem
nlen=ndatalen*nitem
endif
j=ndatalen
k=1
l=1
do while K<=nvaldot
l=l*10
k=k+1
enddo &&l=100,nlen=20,j=4,nitem=5
k=1
m=1
n=1
strdata=""
if nchangeformat=3
do while K<=nitem
i = BCDtoNUM(crecBuff{m, 1}, 033h)
jj = BCDtoNUM(crecBuff{m +1,j -1}, 033h)
strdata = strdata+str(jj,6)
if len(str(i,0))<2
strdata = strdata+".0"
else
strdata = strdata+"."
endif
strdata = strdata + str(i,0)
m=m+j
k=k+1
enddo
i=1
k=1
do while k<=nitem
n = scanbyte(cformat{1,len(cformat)},asc("#"))
if n>0
cformat{n,nvallen}=strdata{i,nvallen}
endif
i=i+nvallen
k=k+1
enddo
else
i =scanbyte(cformat{1,len(cformat)},asc("*") )
if i>0
s= scanbyte(cformat{i+1,len(cformat)},asc("*"))
endif
do while K<=nitem
i = BCDtoNUM(crecBuff{m, j}, 033h)
ctmpstr1=str(i/l,nvallen,nvaldot)
strdata=strdata+substr(ctmpstr1,1,s-1)+"*"+substr(ctmpstr1,s,nvallen-s+1)
m=m+j
k=k+1
enddo
i=1
k=1
do while k<=nitem
n = scanbyte(cformat{1,len(cformat)},asc("#"))
if n>0
cformat{n,nvallen+1}=strdata{i,nvallen+1}
endif
i=i+nvallen+1
k=k+1
enddo
endif
do while .t.
i =scanbyte(cformat{1,len(cformat)},asc("*") )
if i>0
j= scanbyte(cformat{i+1,len(cformat)},asc("*"))
strxs=substr(cformat,1,i-1)+substr(cformat,i+j+1,len(cformat)-i-j)
cformat=strxs
else
strxs=cformat
exit
endif
enddo
return
endpro
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*时段转换格式
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure ChangeRate
ctmprate[1]="T1"
ctmprate[2]="T2"
ctmprate[3]="T3"
ctmprate[4]="T4"
k=1
m=1
n=1
j=ndatalen
l=int(nlen/j)
strdata=""
strxs=trim(cformat)+space(21-zlen)
do while K<=l
i = BCDtoNUM(crecBuff{m, j}, 033h)
ctmpstr=str(i,j*2)
n=1
do while n<=j*2
strdata=strdata+str(val(substr(ctmpstr,n,1)),1)
n=n+1
enddo
m=m+j
k=k+1
enddo
i=1
do while i<=l*ndatalen*2
j=val(substr(strdata,i+4,2))
if j<>0
strxs=strxs+substr(strdata,i,2)+":"+substr(strdata,i+2,2)
strxs=strxs+" "+ctmprate[j]+" "
endif
i=i+6
enddo
return
endpro
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*输入表号
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure inputmeterid
clear
@0,0 say "表号:"
inputkey=""
ninputcount=1
nrow=0
ncol=7
datalen=12
maxvalue="999999999999"
minvalue="0"
dot=0
unableval=0
do inputformat
if nexitflag=1
ifquit=1
return
endif
if len(inputkey)=0
inputkey="999999999999"
endif
ctmpstr=str(val(inputkey),12)
i=1
cmtnum1=""
do while i<=12
cmtnum1=cmtnum1+str(val(substr(ctmpstr,i,1)),1)
i=i+1
enddo
szaddr{1,6}=0
szaddr=numtobcd(val(inputkey),0)
m=scanbyte(szaddr{1,6},255)
if m>0
szaddr{m,7-m}=0
endif
return
endpro
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*输入子程序
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure inputformat
nexitflag=0
ifquit=0
i=ninputcount
@nrow,ncol+i-1 say ""
do while i<=datalen+1
wait "" to cKeyChar
if asc(cKeyChar)=13
if val(inputkey)>val(maxvalue)
@nrow,ncol+i-1 say ""
loop
endif
if val(inputkey)<val(minvalue)
@nrow,ncol+i-1 say ""
loop
endif
if val(inputkey)+48=unableval
@nrow,ncol+i-1 say ""
loop
endif
exit
endif
if asc(cKeyChar)=24
ifquit=1
nexitflag=1
return
endif
if asc(cKeyChar)=8
if i >= 2
i = i -1
inputkey=substr(inputkey,1,i-1)
@nrow,ncol+i-1 say " "
@nrow,ncol+i-1 say ""
loop
endif
endif
if i=datalen+1
@nrow,ncol+i-1 say ""
loop
endif
if asc(cKeyChar)<46 .or.asc(cKeyChar)>57 .or. asc(ckeychar)=unableval
@nrow,ncol+i-1 say ""
loop
endif
if val(inputkey+ckeychar)>val(maxvalue)
@nrow,ncol+i-1 say ""
loop
endif
if i=datalen
if val(inputkey+ckeychar)<val(minvalue)
@nrow,ncol+i-1 say ""
loop
endif
endif
if asc(cKeyChar)=46
if dot=0
@nrow,ncol+i-1 say ""
loop
endif
endif
@nrow,ncol+i-1 say cKeyChar
inputkey=inputkey+cKeyChar
i=i+1
enddo
if ctmpstr="费 率 数:"
tariffno=inputkey
@2,18 say tariffno
endif
return
endpro
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*清除进度条
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure clearbar
set intensity on
@3,0 say space(21)
set intensity off
return
endpro
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*显示进度条
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
procedure xsbar
nBarLen=38
set color to 0
fillbox nStartPos,53,nStartPos+nBarLen,59
set color to 1
return
endpro
*/----------------------------------------------------------------------\*
*根据格式不同,取数据库中的预置数据
*/---------------------------------------------------------------------\*
procedure execwrite
do case
case nchangeformat=2 .or. nchangeformat=4
@1,0 say space(21)
@2,0 say space(21)
@1,0 say "正在设置"+trim(ctmpstr)
i=0
j=0
s=1
strdata=trim(strdata)
if len(strdata)>0
do while j<len(strdata)
ctmpstr2=numtobcd(val(substr(strdata,j+5,1)),33h)
szdata{s,1}=ctmpstr2{1,1}
ctmpstr2=numtobcd(val(substr(strdata,j+3,2)),33h)
s=s+1
szdata{s,1}=ctmpstr2{1,1}
ctmpstr2=numtobcd(val(substr(strdata,j+1,2)),33h)
s=s+1
szdata{s,1}=ctmpstr2{1,1}
s=s+1
i=i+1
j=j+5
enddo
endif
corder[2]=str(6+i*3,2)
ndatalen=i*3
case nchangeformat=3
@1,0 say space(21)
@2,0 say space(21)
@1,0 say "正在设置"+trim(ctmpstr)
i=1
s=1
j=0
do while i<=len(trim(strdata))
ctmpstr2=numtobcd(val(substr(strdata,i,2)),33h)
szdata{s,1}=ctmpstr2{1,1}
i=i+2
s=s+1
j=j+1
enddo
corder[2]=str(6+j,2)
ndatalen=j
case nchangeformat=1
i=1
ctmpstr2=""
do while i<=len(strdata)
ctmpstr1=substr(strdata,i,1)
if ctmpstr1="."
ctmpstr2=ctmpstr2+substr(strdata,i,1)
else
ctmpstr2=ctmpstr2+str(val(substr(strdata,i,1)),1)
endif
i=i+1
enddo
if writename="初始电量"
*m=scanbyte(ctmpstr2{1,datalen*2+1},asc("."))
m=scanbyte(ctmpstr2{1,9},46)
if m>0
ctmpstr2=substr(ctmpstr2,1,m-1)+substr(ctmpstr2,m+1,datalen*2-m+1)
endif
endif
if writename="显示方式"
szdata{1,1}=val(ctmpstr2)+51-int((val(ctmpstr2)+51)/256)*256
else
szdata=numtobcd(val(ctmpstr2),33h)
endif
m=scanbyte(szdata{1,ndatalen},255)
if m>0
szdata{m,ndatalen+1-m}=51
endif
@1,0 say space(21)
@2,0 say space(21)
@1,0 say "正在设置"+trim(ctmpstr)
case nchangeformat=10
@1,0 say space(21)
@2,0 say space(21)
@1,0 say trim(ctmpstr1)
n=nitem
ncharstart=1
l=1
j=150
strinput=""
do while l<=n
inputkey=""
do while len(inputkey)=0
datalen=val(substr(Cdataformat,ncharstart,2)) &&出厂设置电量,记住上次输入
if ccszflag = 1 .and. writename="初始电量"
inputkey=datanewfig
ninputcount=1+len(inputkey)
else
ninputcount=1
endif
minvalue=substr(cdataformat,ncharstart+2,2)
maxvalue=substr(cdataformat,ncharstart+4,12)
nrow=val(substr(cdataformat,ncharstart+16,2))
ncol=val(substr(cdataformat,ncharstart+18,2))
dot=val(substr(cdataformat,ncharstart+20,1))
unableval=0
do inputformat
if nexitflag=1
ifquit=1
return
endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -