📄 gprs.zrg
字号:
***HZP
***05.5.18
define database A
表号 : C, 9
标志 : N, 1
表时钟 : C, 8
掌时钟 : C, 8
时段费率 : C, 72
编程时间 : C, 8
反向时间 : C, 8
反累时间 : N, 9
状态字 : C, 1
脉冲累计总 : N, 2
脉冲累计峰 : N, 2
脉冲累计平 : N, 2
脉冲累计谷 : N, 2
当月有功总 : N, 6, 2
当月有功峰 : N, 6, 2
当月有功平 : N, 6, 2
当月有功谷 : N, 6, 2
上月有功总 : N, 6, 2
上月有功峰 : N, 6, 2
上月有功平 : N, 6, 2
上月有功谷 : N, 6, 2
上上有功总 : N, 6, 2
上上有功峰 : N, 6, 2
上上有功平 : N, 6, 2
上上有功谷 : N, 6, 2
反电量总 : N, 6, 2
反电量峰 : N, 6, 2
反电量平 : N, 6, 2
反电量谷 : N, 6, 2
总电1 : N, 6, 2
总电2 : N, 6, 2
总电3 : N, 6, 2
总电4 : N, 6, 2
总电5 : N, 6, 2
总电6 : N, 6, 2
总电7 : N, 6, 2
总电8 : N, 6, 2
总电9 : N, 6, 2
总电10 : N, 6, 2
总电11 : N, 6, 2
总电12 : N, 6, 2
峰电1 : N, 6, 2
峰电2 : N, 6, 2
峰电3 : N, 6, 2
峰电4 : N, 6, 2
峰电5 : N, 6, 2
峰电6 : N, 6, 2
峰电7 : N, 6, 2
峰电8 : N, 6, 2
峰电9 : N, 6, 2
峰电10 : N, 6, 2
峰电11 : N, 6, 2
峰电12 : N, 6, 2
平电1 : N, 6, 2
平电2 : N, 6, 2
平电3 : N, 6, 2
平电4 : N, 6, 2
平电5 : N, 6, 2
平电6 : N, 6, 2
平电7 : N, 6, 2
平电8 : N, 6, 2
平电9 : N, 6, 2
平电10 : N, 6, 2
平电11 : N, 6, 2
平电12 : N, 6, 2
谷电1 : N, 6, 2
谷电2 : N, 6, 2
谷电3 : N, 6, 2
谷电4 : N, 6, 2
谷电5 : N, 6, 2
谷电6 : N, 6, 2
谷电7 : N, 6, 2
谷电8 : N, 6, 2
谷电9 : N, 6, 2
谷电10 : N, 6, 2
谷电11 : N, 6, 2
谷电12 : N, 6, 2
enddef
define database B
密码 : C, 8
清零密码 : C, 8
时段数 : N, 2
时段费率1 : C, 72
时段费率2 : C, 72
脉冲常数 : N, 4
上次表号 : C, 9
打包标志 : N, 2
冻结日 : C, 2
时误差范围 : N, 2
显示设定 : C, 4
循显时间 : N, 2
停显时间 : N, 2
电量底度 : N, 7, 1
出厂编号 : C, 12
局编号 : C, 12
enddef
define var
CHOICE : C, 1
done : N, 1
error : N, 1
oldBH : C, 9
newBH : C, 9
oldMM : N, 8
newMM : N, 8
lastBH : C, 12
zongDL : N, 9,1
jianDL : N, 9,1
fengDL : N, 9,1
pingDL : N, 9,1
guDL : N, 9,1
fxDL : N, 9,1
SDFL : C, 72
APN : C, 1[7]={"X","M","D","L",".","F","J"}
PORTNAME : C, 1[4]={"2","0","0","2"}
I : N, 4
J : N, 3
K : N, 4
L : N, 2
m : N, 4
s : N, 4
nComResult : N, 3
Buffer0 : C, 1[64]
Buffer : C, 1[64]
RecBuffer : C, 1[64]
char1 : C, 1
char2 : C, 2
char3 : C, 3
char4 : C, 4
char5 : C, 5
char6 : C, 6
char66 : C, 6
char8 : C, 8
char9 : C, 9
char12 : C, 12
char16 : C, 16
charall : C, 9
oldMMall : N, 8
charJBH : C, 12
tempall1 : N, 4
tempall2 : N, 4
tempall3 : N, 4
charall1 : C, 2
charall2 : C, 2
* --------------------------------------
IPAddress : C, 15
PORT : C, 4
APNStr : C, 16
SimCardNO : C, 11
AnswerCSQ : C, 10
AttachedSta : C, 10
DTUDate : C, 8
DTUTime : C, 8
KeyValue : N, 2
BeatTime : N, 2
* --------------------------------------
temp1 : N, 1
temp2 : N, 3
temp4 : N, 4
temp4a : N, 4
temp4b : N, 4
temp6 : N, 6
temp66 : N, 6
temp8 : N, 8
temp10 : N, 10
temp12 : N, 12
temp14 : N, 14
mdFLAG : N, 1
enddef
********输入采集器终端号
procedure ask_DTUNO
clear
@ 0,1 say "输入终端号(两位)"
@ 1,1 say "直接回车为广播号。"
@ 2,1
input to char2
char2=TRIM(char2)
temp1=len(char2)
if temp1=0
buffer{2,1}=099h
buffer{3,1}=099h
buffer{4,1}=099h
buffer{5,1}=099h
buffer{6,1}=099h
buffer{7,1}=099h
else
temp4=(asc(substr(char2,1,1))-48)*16
temp4=temp4+(asc(substr(char2,2,1))-48)
buffer{2,1}=chr(temp4)
endif &&if temp1=0
return
endpro
********要继续吗
procedure comeon
clear
@ 0,1 say "未收到正常应答"
@ 1,1 say "按确认键重设置"
@ 2,1 say "按其它键退出"
wait "" to char1
return
endpro
********发送帧
procedure SendCom
*** INITSIO 4,"E",8 &&1200,偶校验,8位数据
********红外
if mdFLAG=1
set com to 2
buffer{1,1}=068H
buffer{8,1}=068H
L=buffer{10,1}
buffer{11+L,1}=CheckSum(buffer{1,10+L})
buffer{12+L,1}=016H
****************do dis_buffer
buffer0{1,1}=0feH
buffer0{2,1}=0feH
buffer0{3,1}=0feH
sends buffer0{1,3}
sends buffer{1,12+L}
endif
********485口 6针->25针
if mdFLAG=2
set com to 1 /485
j=receives(RecBuffer{63,1},1)
buffer{1,1}=068H
buffer{8,1}=068H
L=buffer{10,1}
buffer{11+L,1}=CheckSum(buffer{1,10+L})
buffer{12+L,1}=016H
****************do dis_buffer
* buffer0{1,1}=0feH
* sends buffer0{1,1}
* sends buffer0{1,1}
* sends buffer0{1,1}
sends buffer{1,12+L}
endif
********232口
if mdFLAG=3
set com to 1
j=receives(RecBuffer{255,1},1)
buffer{1,1}=068H
buffer{8,1}=068H
L=buffer{10,1}
buffer{11+L,1}=CheckSum(buffer{1,10+L})
buffer{12+L,1}=016H
*do dis_buffer
* buffer0{1,1}=0feH
* sends buffer0{1,1}
* buffer0{1,1}=0feH
* sends buffer0{1,1}
* buffer0{1,1}=0feH
* sends buffer0{1,1}
* buffer0{1,1}=0feH
sends buffer{1,12+L}
endif
return
endpro
********显示buffer
procedure dis_buffer
i=1
k=0
clear
j=buffer{10,1}
j=j+12
do while i<=j
temp12=buffer{i,1}
char12=hex(temp12)
* +" "+str(i,2)+" "+str(j,2)
? char12
i=i+1
k=k+1
if k=4
k=0
wait ""
endif
enddo
wait ""
return
endpro
procedure dis_RecBuffer
i=1
k=0
clear
j=RecBuffer{10,1}
j=j+12
do while i<=j
temp2=RecBuffer{i,1}
char1=hex(temp2)
? char1
i=i+1
k=k+1
if k=4
k=0
wait ""
endif
enddo
* if nComResult<>0
* ? "error"+str(nComResult,6)
* else
* ? "okokok"
* endif
wait ""
return
endpro
********接收帧
procedure ReceiveCom
nComResult=0
i=0
j=0
temp12=0
RecBuffer{1,1}="00"
********检测帧开始标志
do while i<>068H
* j=receives(RecBuffer{1,1},9) &&延时900ms
* j=receives(RecBuffer{1,1},15) &&延时 1.5s
j=receives(RecBuffer{1,1},30) &&延时 6s
if j<>0
i=RecBuffer{1,1}
else
sound 7,1
sound 0,1 &&停顿250ms
sound 7,1
sound 0,1
return
endif
enddo
********读入固定长度的后续数据,延时500ms
j=receives(RecBuffer{2,9},5)
if j<9
nComResult=256
return
endif
L=RecBuffer{10,1}
*******读取非固定长度的数据
j=receives(RecBuffer{11,L+2},3)
if j<L+2
nComResult=257
return
endif
* i=RecBuffer{11+L,1}
* if i<>asc(chr(CheckSum(RecBuffer{1,10+L})))
* nComResult=512
* return
* endif
***////
*** do dis_RecBuffer
***////
sound 2,2
return
endpro
********桢格式错
procedure pinerror
clear
@ 0,1 say "帧格式错误"
@ 1,1 say "按任一键退出"
wait ""
powerdown unlock
return
endpro
********构造A0-A6,含a
procedure getB06
done=0
if asc(substr(char2,1,1))>=48.and.asc(substr(char2,1,1))<=57
temp4=(asc(substr(char2,1,1))-30H)*16
else
return
endif
if asc(substr(char2,2,1))>=48.and.asc(substr(char2,2,1))<=57
temp4=temp4+(asc(substr(char2,2,1))-30H)
else
return
endif
buffer{1,1}=chr(temp4)
done=1
return
endpro
********写终端号(八位)
procedure SetDTUNO
clear
@ 1,1 say "请输入DTU终端号:"
@ 2,1 say "8位:"
input to char8
char8=TRIM(char8)
temp1=len(char8)
if temp1<>8
return
endif
do ask_DTUNO
buffer{9,1}=09H
buffer{10,1}=06H &&4+2=6
buffer{11,1}=00H
buffer{12,1}=11H
clear
@ 0,1 say "设置中..."
* buffer{11,3}=substr(NumToBCD(val(substr(newBH,4,6)),33H)+chr(51)+chr(51)+chr(51),1,3)
* buffer{14,1}=asc(substr(newBH,3,1))+033H
* buffer{15,1}=NumToBCD(val(substr(newBH,1,2)),33H)
* buffer{16,1}=0AAH+033H
buffer{13,4}=NumToBCD(val(substr(char8,1,8)),00H)
do SendCom
do ReceiveCom
if nComResult<>0
do pinerror
return
else
temp2=RecBuffer{9,1}
do while temp2<>089H
do comeon
if asc(char1)=13
do SendCom
do ReceiveCom
else
return
endif
temp2=RecBuffer{9,1}
enddo
endif
clear
@ 0,1 say "终端号设置完毕。"
@ 1,1 say "按任意键退出"
wait ""
return
endpro
******** 设置用户名、密码
procedure SetUserNamePassword
clear
@ 3,1 say "用户名:"
@ 4,1
input to char16
char16=TRIM(char16)
temp2=len(char16)
if temp2=0
return
endif
buffer{13,temp2}=char16{1,temp2}
@ 5,1 say "密码:"
@ 6,1
input to char16
char16=TRIM(char16)
temp2=len(char16)
if temp2=0
return
endif
buffer{29,temp2}=char16{1,temp2}
clear
@ 0,1 say "设置中..."
buffer{2,1}=099h
buffer{3,1}=099h
buffer{4,1}=099h
buffer{5,1}=099h
buffer{6,1}=099h
buffer{7,1}=099h
buffer{9,1}=04H
buffer{10,1}=2+32
buffer{11,1}=0CH+033H
buffer{12,1}=0FFH+033H-256
J=0
do while J<32
temp4a=buffer{13+J,1}
temp4a=temp4a+51
if temp4a>=256
temp4a=temp4a-256
endif
buffer{13+J,1}=temp4a
J=J+1
enddo
do SendCom
do ReceiveCom
if nComResult<>0
do pinerror
return
else
temp2=RecBuffer{9,1}
do while temp2<>084H
do comeon
if asc(char1)=13
do SendCom
do ReceiveCom
else
return
endif
temp2=RecBuffer{9,1}
enddo
endif
clear
@ 0,1 say "用户名密码设置成功。"
@ 1,1 say "按任意键退出"
wait ""
return
endpro
********设置日期时间
procedure SetDateTime
buffer{2,1}=099h
buffer{3,1}=099h
buffer{4,1}=099h
buffer{5,1}=099h
buffer{6,1}=099h
buffer{7,1}=099h
buffer{9,1}=09H
buffer{10,1}=08H
buffer{11,1}=00H
buffer{12,1}=15H
clear
@ 0,1 say "设置中..."
buffer{13,1}=NumToBCD(val(substr(Time(),7,2)),00H) &&second
buffer{14,1}=NumToBCD(val(substr(Time(),4,2)),00H) &&minute
buffer{15,1}=NumToBCD(val(substr(Time(),1,2)),00H) &&hour
buffer{16,1}=NumToBCD(val(substr(Date(),7,2)),00H) &&date
buffer{17,1}=NumToBCD(val(substr(Date(),4,2)),00H) &&month
buffer{18,1}=NumToBCD(val(substr(Date(),1,2)),00H) &&year
do SendCom
do ReceiveCom
if nComResult<>0
do pinerror
return
else
temp2=RecBuffer{9,1}
do while temp2<>089H
do comeon
if asc(char1)=13
buffer{13,1}=NumToBCD(val(substr(Time(),7,2)),00H) &&second
buffer{14,1}=NumToBCD(val(substr(Time(),4,2)),00H) &&minute
buffer{15,1}=NumToBCD(val(substr(Time(),1,2)),00H) &&hour
buffer{16,1}=NumToBCD(val(substr(Date(),7,2)),00H) &&date
buffer{17,1}=NumToBCD(val(substr(Date(),4,2)),00H) &&month
buffer{18,1}=NumToBCD(val(substr(Date(),1,2)),00H) &&year
do SendCom
do ReceiveCom
else
return
endif
temp2=RecBuffer{9,1}
enddo
endif
clear
@ 0,1 say "日期时间设置完毕"
@ 1,1 say "按任一键退出"
wait ""
return
endpro
********写端口
procedure SetPort
clear
@ 3,1 say "端口: 2002"
@ 4,1 say "直接回车取默认值"
@ 5,1
input to PORT
KeyValue=lastkey()
if KeyValue=24
return
endif
PORT=TRIM(PORT)
temp2=len(PORT)
clear
@ 0,1 say "设置中..."
buffer{2,1}=099h
buffer{3,1}=099h
buffer{4,1}=099h
buffer{5,1}=099h
buffer{6,1}=099h
buffer{7,1}=099h
buffer{9,1}=09H
buffer{10,1}=06H
buffer{11,1}=00H
buffer{12,1}=17H &&17H:set port
if temp2=0
buffer{13,4}=PORTNAME{1,4}
else
buffer{13,temp2}=PORT{1,temp2}
endif
do SendCom
do ReceiveCom
if nComResult<>0
do pinerror
return
else
temp2=RecBuffer{9,1}
do while temp2<>089H
do comeon
if asc(char1)=13
do SendCom
do ReceiveCom
else
return
endif
temp2=RecBuffer{9,1}
enddo
endif
clear
@ 0,1 say "端口号设置成功!"
@ 1,1 say "按任意键退出"
wait ""
return
endpro
********设置心跳时间
procedure SetBeatTime
buffer{2,1}=099h
buffer{3,1}=099h
buffer{4,1}=099h
buffer{5,1}=099h
buffer{6,1}=099h
buffer{7,1}=099h
buffer{9,1}=09H
buffer{10,1}=03H &&1+2(DI0,DI1)
buffer{11,1}=00H
buffer{12,1}=16H
clear
@ 0,1 say "设置中..."
clear
@ 1,0 say "心跳时间(10分钟):"
@ 2,0
input to BeatTime
KeyValue=lastkey()
if KeyValue=24
return
endif
if BeatTime = 0
buffer{13,1}=0AH &&10分钟,不加33H
else
buffer{13,1}=BeatTime
endif
do SendCom
do ReceiveCom
if nComResult<>0
do pinerror
return
else
temp2=RecBuffer{9,1}
do while temp2<>089H
do comeon
if asc(char1)=13
do SendCom
do ReceiveCom
else
return
endif
temp2=RecBuffer{9,1}
enddo
endif
clear
@ 1,0 say "心跳时间设置完毕。"
@ 2,0 say "按任一键退出"
wait ""
return
endpro
********写IP地址
procedure SetIPAddress
clear
@ 1,1 say "请输入IP地址..."
@ 2,1 say "最长15位:"
@ 3,1
input to IPAddress
IPAddress=TRIM(IPAddress)
temp2=len(IPAddress)
buffer{2,1}=099h
buffer{3,1}=099h
buffer{4,1}=099h
buffer{5,1}=099h
buffer{6,1}=099h
buffer{7,1}=099h
buffer{9,1}=09H
buffer{10,1}=temp2+2
buffer{11,1}=00H
buffer{12,1}=14H &&DI1
clear
@ 0,1 say "设置中..."
buffer{13,temp2}=IPAddress{1,temp2}
do SendCom
do ReceiveCom
if nComResult<>0
do pinerror
return
else
temp2=RecBuffer{9,1}
do while temp2<>089H
do comeon
if asc(char1)=13
do SendCom
do ReceiveCom
else
return
endif
temp2=RecBuffer{9,1}
enddo
endif
clear
@ 0,1 say "IP地址设置成功!"
@ 1,1 say "按任一键退出"
wait ""
return
endpro
******** 设置APN
procedure SetAPN
clear
@ 3,1 say "APN: XMDL.FJ"
@ 4,1 say "直接回车取默认值"
@ 5,1
input to IPAddress
KeyValue=lastkey()
if KeyValue=24
return
endif
IPAddress=TRIM(IPAddress)
temp2=len(IPAddress)
clear
@ 0,1 say "设置中..."
buffer{2,1}=099h
buffer{3,1}=099h
buffer{4,1}=099h
buffer{5,1}=099h
buffer{6,1}=099h
buffer{7,1}=099h
buffer{9,1}=09H
buffer{10,1}=12H
buffer{11,1}=00H
buffer{12,1}=13H
if temp2=0
buffer{13,7}=APN{1,7}
else
buffer{13,temp2}=IPAddress{1,temp2}
endif
do SendCom
do ReceiveCom
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -