📄 gprs.zrg
字号:
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 "APN设置成功!"
@ 1,1 say "按任意键退出"
wait ""
return
endpro
********写卡号
procedure WriteToDTU
clear
@ 1,1 say "请输入SIM卡号..."
@ 2,1 say "11位:"
@ 2,6
input to SimCardNO
SimCardNO=TRIM(SimCardNO)
temp2=len(SimCardNO)
if temp2<>11
return
endif
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}=0DH &&11+2=13
buffer{11,1}=00H
buffer{12,1}=12H
clear
@ 0,1 say "设置中..."
buffer{13,11}=SimCardNO{1,11}
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
********终端485口检测
procedure TestDTU
do ask_DTUNO
buffer{9,1}=09H
buffer{10,1}=02H
buffer{11,1}=00H
buffer{12,1}=01H
clear
@ 0,1 say "正在读取..."
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
temp14=BCDToNum(RecBuffer{2,6},00H)
temp14=temp14+1000000000000
char12=right(str(temp14,13),12)
clear
@ 0,1 say "NO."
@ 0,4 say char12
@ 1,1 say "通讯成功。"
@ 5,1 say "按任意键退出"
wait ""
return
endpro
********读出SIM卡号,不加33H
procedure ReadSIMNO
do ask_DTUNO
buffer{9,1}=09H
buffer{10,1}=02H
buffer{11,1}=00H
buffer{12,1}=04H
clear
@ 0,1 say "正在读取..."
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
temp14=BCDToNum(RecBuffer{2,6},00H)
temp14=temp14+1000000000000
char12=right(str(temp14,13),12)
SimCardNO=right(str(temp14,13),11)
SimCardNO{1,11}=RecBuffer{13,11}
clear
@ 0,1 say "NO."
@ 0,4 say char12
@ 2,1 say "SIM卡号:"
@ 3,1 say SimCardNO
@ 5,1 say "按任意键退出"
wait ""
return
endpro
********检查信号强度
procedure ReadSignalQuality
do ask_DTUNO
buffer{9,1}=09H
buffer{10,1}=02H
buffer{11,1}=00H
buffer{12,1}=02H
clear
@ 0,1 say "正在读取..."
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
temp14=BCDToNum(RecBuffer{2,6},00H)
temp14=temp14+1000000000000
char12=right(str(temp14,13),12)
AnswerCSQ=right(str(temp14,13),10)
AnswerCSQ{1,10}=RecBuffer{13,10}
clear
clear
@ 0,1 say "NO."
@ 0,4 say char12
@ 2,1 say "信号强度:"
@ 3,1 say AnswerCSQ
@ 5,1 say "按任意键退出"
wait ""
return
endpro
********GPRS网络附着情况
procedure GPRSAttach
do ask_DTUNO
buffer{9,1}=09H
buffer{10,1}=02H
buffer{11,1}=00H
buffer{12,1}=03H
clear
@ 0,1 say "正在读取..."
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
temp14=BCDToNum(RecBuffer{2,6},00H)
temp14=temp14+1000000000000
char12=right(str(temp14,13),12)
AttachedSta=right(str(temp14,13),10)
AttachedSta{1,10}=RecBuffer{13,10}
clear
@ 0,1 say "NO."
@ 0,4 say char12
@ 2,1 say "GPRS附着:"
@ 3,1 say AttachedSta
@ 5,1 say "按任意键退出"
wait ""
return
endpro
********读终端号(八位)
procedure ReadDTUNO
do ask_DTUNO
buffer{9,1}=09H
buffer{10,1}=02H
buffer{11,1}=00H
buffer{12,1}=07H
clear
@ 0,1 say "正在读取..."
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
temp14=BCDToNum(RecBuffer{2,6},00H)
temp14=temp14+1000000000000
char12=right(str(temp14,13),12)
temp10=BCDToNum(RecBuffer{13,4},00H)
temp10=temp10+100000000
char8=right(str(temp10,9),8)
clear
@ 1,1 say "NO."
@ 1,4 say char8
@ 3,1 say "按任意键退出"
wait ""
return
endpro
********读出日期时间
Procedure ReadTimeDate
do ask_DTUNO
buffer{9,1}=09H
buffer{10,1}=02H
buffer{11,1}=00H
buffer{12,1}=05H
clear
@ 0,1 say "正在读取..."
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
temp14=BCDToNum(RecBuffer{2,6},00H)
temp14=temp14+1000000000000
char12=right(str(temp14,13),12)
DTUDate=right(str(temp14,13),8)
DTUTime=right(str(temp14,13),8)
clear
@ 0,1 say "NO."
@ 0,4 say char12
@ 2,1 say "日期:"
DTUDate{1,8}=RecBuffer{13,8}
@ 2,6 say DTUDate
@ 3,1 say "时间:"
DTUTime{1,8}=RecBuffer{22,8}
@ 3,6 say DTUTime
@ 5,1 say "按任意键退出"
wait ""
return
endpro
******** 读取主站IP地址
procedure ReadIPAddress
do ask_DTUNO
buffer{9,1}=09H
buffer{10,1}=02H
buffer{11,1}=00H
buffer{12,1}=09H
clear
@ 0,1 say "正在读取..."
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
temp14=BCDToNum(RecBuffer{2,6},00H)
temp14=temp14+1000000000000
char12=right(str(temp14,13),12)
IPAddress="1234567890abcde" &&申请空间
IPAddress{1,15}=RecBuffer{13,15}
clear
@ 0,1 say "NO."
@ 0,4 say char12
@ 2,1 say "IP地址:"
@ 3,1 say IPAddress
@ 4,1 say "按任意键退出"
wait ""
return
endpro
******** 读取APN
procedure ReadAPN
do ask_DTUNO
buffer{9,1}=09H
buffer{10,1}=02H
buffer{11,1}=00H
buffer{12,1}=0AH
clear
@ 0,1 say "正在读取..."
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
temp14=BCDToNum(RecBuffer{2,6},00H)
temp14=temp14+1000000000000
char12=right(str(temp14,13),12)
APNStr="1234567890abcdef" &&申请空间
APNStr{1,16}=RecBuffer{13,16}
clear
@ 0,1 say "NO."
@ 0,4 say char12
@ 2,1 say "APN:"
@ 3,1 say APNStr
@ 4,1 say "按任意键退出"
wait ""
return
endpro
********** 读取端口号 **********
Procedure ReadPort
do ask_DTUNO
buffer{9,1}=09H
buffer{10,1}=02H
buffer{11,1}=00H
buffer{12,1}=06H
clear
@ 0,1 say "正在读取..."
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
temp14=BCDToNum(RecBuffer{2,6},00H)
temp14=temp14+1000000000000
char12=right(str(temp14,13),12)
PORT=right(str(temp14,13),4)
PORT{1,4}=RecBuffer{13,4}
clear
@ 0,1 say "NO."
@ 0,4 say char12
@ 2,1 say "端口号:"
@ 2,9 say PORT
@ 4,1 say "按任意键退出"
wait ""
return
endpro
********** 读取心跳时间 **********
Procedure ReadBeatTime
do ask_DTUNO
buffer{9,1}=09H
buffer{10,1}=02H
buffer{11,1}=00H
buffer{12,1}=08H
clear
@ 0,1 say "正在读取..."
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
temp14=BCDToNum(RecBuffer{2,6},00H)
temp14=temp14+1000000000000
char12=right(str(temp14,13),12)
temp2=BCDToNum(RecBuffer{13,1},00H)
char2=right(str(temp2,2),2)
clear
@ 0,1 say "NO."
@ 0,4 say char12
@ 2,1 say "心跳时间:"
@ 2,10 say char2
@ 4,1 say "按任意键退出"
wait ""
return
endpro
*********************************************************
*********************************************************
********设置功能
Procedure InitialDTU
DO WHILE .T.
done=0
I=1
do while I<=32
Buffer{I,1}=00H
RecBuffer{I,1}=00H
I=I+1
enddo
clear
@ 0,0 say "---- 初始化设置 ----"
@ 1,1 say "1 写终端号"
@ 2,1 say "2 写卡号"
@ 3,1 say "3 主站IP地址"
@ 4,1 say "4 主站端口"
@ 5,1 say "5 接入点名称APN"
@ 6,1 say "6 用户名、密码"
@ 7,1 say "7 写日期时间"
@ 8,1 say "8 写心跳时间"
wait "" to choice
DO CASE
******** "1" 设置终端号(八位)
CASE asc(choice) = 31H
do SetDTUNO
******** "2" 设置卡号
CASE asc(choice) = 32H
do WriteToDTU
******** "3" 设置主站IP地址
CASE asc(choice) = 33H
do SetIPAddress
******** "4" 设置主站端口
CASE asc(choice) = 34H
do SetPort
******** "5" 设置接入点名称(APN)
CASE asc(choice) = 35H
do SetAPN
******** "6" 设置用户名、密码
CASE asc(choice) = 36H
do SetUserNamePassword
******** "7" 设置日期时间
CASE asc(choice) = 37H
do SetDateTime
******** "8" 设置心跳时间
CASE asc(choice) = 38H
do SetBeatTime
******** 退出键 退出
CASE asc(choice) = 24
clear
return
ENDCASE
ENDDO
return
endpro
********信道检测
Procedure ChannelCheck
DO WHILE .T.
done=0
I=1
do while I<=32
Buffer{I,1}=00H
RecBuffer{I,1}=00H
I=I+1
enddo
clear
&& @ 0,1 say "1 采集器485口"
@ 1,1 say "1 采集器485口"
wait "" to choice
DO CASE
******** "1" 采集器485口检测
CASE asc(choice) = 31H
do TestDTU
******** 退出键 退出
CASE asc(choice) = 24
clear
return
ENDCASE
ENDDO
return
endpro
********信息读取
Procedure ReadInfo
DO WHILE .T.
done=0
I=1
do while I<=32
Buffer{I,1}=00H
RecBuffer{I,1}=00H
I=I+1
enddo
clear
@ 0,1 say "1 GPRS终端号"
@ 1,1 say "2 SIM卡号"
@ 2,1 say "3 信号强度"
@ 3,1 say "4 GPRS网络附着情况"
@ 4,1 say "5 日期时间"
@ 5,1 say "6 APN"
@ 6,1 say "7 主站IP地址"
@ 7,1 say "8 端口"
@ 8,1 say "9 心跳间隔"
wait "" to choice
DO CASE
******** "1" 读GPRS终端号
CASE asc(choice) = 31H
do ReadDTUNO
******** "2" 读出SIM卡号
CASE asc(choice) = 32H
do ReadSIMNo
******** "3" 检查信号强度
CASE asc(choice) = 33H
do ReadSignalQuality
******** "4" GPRS网络附着情况
CASE asc(choice) = 34H
do GPRSAttach
******** "5" 读出日期时间
CASE asc(choice) = 35H
do ReadTimeDate
******** "6" 读取APN
CASE asc(choice) = 36H
do ReadAPN
******** "7" 读取主站IP地址
CASE asc(choice) = 37H
do ReadIPAddress
******** "8" 读取端口号
CASE asc(choice) = 38H
do ReadPort
******** "9" 读取心跳时间
CASE asc(choice) = 39H
do ReadBeatTime
******** 退出键 退出
CASE asc(choice) = 24
clear
return
ENDCASE
ENDDO
return
endpro
********主程序(主菜单)
start
select B
go top
clear
@ 1,0 say "---GPRS现场检测仪---"
@ 2,3 say "版本号 V1.4"
@ 4,0 say "北京博纳电气有限公司"
@ 5,0 say "Banner Ele Cor.,LTD"
wait ""
temp1=0
do while temp1<>1
clear
@ 0,1 say "-- 选择通信接口 --"
@ 1,1 say " 1 红外接口"
@ 2,1 say " 2 485接口"
@ 3,1 say " 3 232接口(9600)"
wait "" to choice
clear
DO CASE
********红外接口
CASE asc(choice) = 49
@ 0,1 say "---- 红外通讯 ----"
mdFLAG=1
temp1=1
INITSIO 4,"E",8 &&=4:1200bps
if temp1=2
loop
endif
********485接口 6针->25针
CASE asc(choice) = 50
@ 0,1 say "---- 485通讯 ----"
mdFLAG=2
temp1=1
INITSIO 4,"E",8 &&若=1:9600bps
if temp1=2
loop
endif
********232接口
CASE asc(choice) = 33H
@ 0,1 say "---- 232通讯 ----"
mdFLAG=3
temp1=1
INITSIO 1,"E",8 &&=1:9600bps
if temp1=2
loop
endif
******** 退出键 退出
CASE asc(choice) = 24
clear
temp1=2
exit
ENDCASE
enddo
DO WHILE .t.
********设置字符显示模式
set mode to 1
********绘图用黑色
set color to 1
********设置自动关机时间300秒
set downtime to 300
done=0
I=1
********清Buffer,RecBuffer
do while I<=64
Buffer{I,1}=00H
RecBuffer{I,1}=00H
I=I+1
enddo
@ 1,1 say "1 初始设置"
@ 2,1 say "2 信道检测"
@ 3,1 say "3 信息读取"
*** @ 3,1 say "4 "
wait "" to choice
DO CASE
******** "1" 初始设置
CASE asc(choice) = 31H
do InitialDTU
******** "2" 信道检测
CASE asc(choice) = 32H
do ChannelCheck
******** "3" 信息读取
CASE asc(choice) = 33H
do ReadInfo
ENDCASE
ENDDO
endstart
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -