⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gprs 域名方式还没删.zrg

📁 透明传输的DTU。实现配置:microchip 18F6520,协议DL/T645。 全部C源码文件。
💻 ZRG
📖 第 1 页 / 共 2 页
字号:

********写 dongbeipower.com(东北电力.com)
procedure Set_DomainName2
	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
	clear
	@ 0,1 say "设置中..."

	temp14=BCDToNum(RecBuffer{2,6},00H)
	temp14=temp14+1000000000000
	char12=right(str(temp14,13),12)
	char8=right(str(temp14,13),8)

	buffer{13,16}=TopDomainName{1,16}
	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
	char8{1,8}=TopDomainName{1,8}
	@ 0,0 say char8
	char8{1,8}=TopDomainName{9,8}
	@ 0,8 say char8
	@ 3,0 say "域名设置完毕"
	@ 4,0 say "按任一键退出" 
	wait ""
	return
endpro

********写端口号
procedure SetPort
	return
endpro

********设置心跳包的发送时间
procedure SetPollTime
	clear
	@ 1,1 say  "输入心跳包的间隔"
	@ 2,1 say  "(回车默认15分钟)"
	@ 3,3 say  " 分"
	@ 3,1
	input to char2
	char2=TRIM(char2)
	temp1=len(char2)
	if temp1=0
		char2="15"
	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}=03H
	buffer{11,1}=00H
	buffer{12,1}=16H
	clear
	@ 0,1 say "设置中..."

	buffer{13,1}=val(char2)

	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,1 say "心跳包时间设置成功!"
	@ 3,1 say "按任一键退出" 
	wait ""

	return
endpro


********设为IP地址连接
procedure Set_LinkForIP
	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}=02H
	buffer{11,1}=00H
	buffer{12,1}=1EH
	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
	
	clear
	@ 1,1 say "IP连接方式设置完毕."
	@ 2,1 say "(别忘记设置IP地址)"
	@ 3,1 say "请按任意键退出." 
	wait ""

	return
endpro

********设为域名连接
procedure Set_LinkForDoName
	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}=02H
	buffer{11,1}=00H
	buffer{12,1}=1FH
	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
	
	clear
	@ 1,1 say "域名连接设置完毕."
	@ 2,1 say "(别忘记设置动态域名)"
	@ 3,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


********读取老威胜表的时间
procedure Read_WS_Time
	do ask_bh

	buffer{2,1}=55h
	buffer{3,1}=01h
	buffer{4,1}=20h
	buffer{5,1}=05h
	buffer{6,1}=CheckSum(buffer{1,5})
	buffer{7,1}=0Dh
	clear
	@ 0,1 say "正在读取..."
	
	do SendCom_WS
	do ReceiveCom_WS
	if nComResult<>0
		do pinerror
		return
	endif

	temp2=RecBuffer{10,1}
	L=temp2/10
	temp2=L*10+(temp2-L*10)	&&年
	temp2=temp2+100
	char2=right(str(temp2,3),2)	

	temp2=RecBuffer{11,1}
	L=temp2/10
	temp2=L*10+(temp2-L*10)	&&月
	temp2=temp2+100
	WS_DateTime=char2+"年"+right(str(temp2,3),2)

	temp2=RecBuffer{12,1}
	L=temp2/10
	temp2=L*10+(temp2-L*10)	&&日
	temp2=temp2+100
	WS_DateTime=WS_DateTime+"月"+right(str(temp2,3),2)

	temp2=RecBuffer{13,1}
	L=temp2/10
	temp2=L*10+(temp2-L*10)	&&时
	temp2=temp2+100
	WS_DateTime=WS_DateTime+"日"+right(str(temp2,3),2)

	temp2=RecBuffer{14,1}
	L=temp2/10
	temp2=L*10+(temp2-L*10)	&&分
	temp2=temp2+100
	WS_DateTime=WS_DateTime+":"+right(str(temp2,3),2)+"分"

	temp2=BCDToNum(RecBuffer{1,1},00H)
	temp2=temp2+100
	char3=right(str(temp2,3),2)

	clear
	@ 1,1 say "通信地址:"
	@ 1,10 say char3
	@ 2,1 say "日期时间:"
	@ 3,1 say WS_DateTime
	wait ""
	
	return
endpro

********终端485口检测
procedure TestDTU485
	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}=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 "485口通讯成功。"
	@ 5,1 say "按任意键退出" 
	wait ""
	return
endpro

********读出SIM卡号,不加33H
procedure ReadSIMNO
	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}=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
	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}=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
	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}=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
	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}=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
	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}=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

********设置功能
Procedure InitialDTU
    DO WHILE .T.
	done=0
	I=1
	do while I<=16
		Buffer{I,1}=00H
		RecBuffer{I,1}=00H
		I=I+1
	enddo
	clear
	@ 0,1	say  "1 写终端号"
	@ 1,1	say  "2 写卡号"
*	@ 2,1	say  "3 写端口号"	
	@ 3,1	say  "4 写IP/DomainName >"	
	@ 4,1	say  "5 写日期时间"	
	@ 5,1	say  "6 设置心跳时间"	
	
     	wait  ""  to  choice
   	DO 	CASE
******** "1" 设置终端号(八位)
			CASE  asc(choice) = 31H
			do SetDTUNO
******** "2" 设置卡号
     		CASE  asc(choice) = 32H
	  		do WriteToDTU
******** "3" 设置端口号
*     		CASE  asc(choice) = 33H
*	  		do SetPort
******** "4" 设置IP/DomainName
     		CASE  asc(choice) = 34H
	  		do SetIP_DomainName
******** "5" 设置日期时间
     		CASE  asc(choice) = 35H
			do SetDateTime
******** "6" 设置心跳包的发送时间
     		CASE  asc(choice) = 36H
	  		do SetPollTime

******** 退出键 退出
		CASE  asc(choice) = 24
			clear
			return
   		ENDCASE
    ENDDO
	return
endpro

********信道检测
Procedure ChannelCheck
    DO WHILE .T.
	done=0
	I=1
	do while I<=16
		Buffer{I,1}=00H
		RecBuffer{I,1}=00H
		I=I+1
	enddo
	clear
	@ 0,1	say  "1 终端485口"
	@ 1,1	say  "2 威胜规约通讯测试"

   	wait  ""  to  choice
   	DO CASE
******** "1" 终端485口检测
     		CASE  asc(choice) = 31H
			do TestDTU485
******** "2" 读取老威胜表的时间
     		CASE  asc(choice) = 32H
			do Read_WS_Time

******** 退出键 退出
		CASE  asc(choice) = 24
			clear
			return
   	ENDCASE
    ENDDO
	return
endpro

********信息读取
Procedure ReadInfo
    DO WHILE .T.
	done=0
	I=1
	do while I<=16
		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 日期时间"

	@ 8,1	say  "(请按数字键选择)"
   	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
******** 退出键 退出
		CASE  asc(choice) = 24
			clear
			return
   	ENDCASE
    ENDDO
	return
endpro

********主程序(主菜单)
start
	select B
	go top
	clear
	@ 1,0 say "---GPRS现场检测仪---"
	@ 2,3 say "版本号 V1.2"
	@ 4,0 say "北京博纳电气有限公司"
	@ 5,0 say "Banner Ele Cor.,LTD"
	wait ""
	
********485接口 6针->25针
	mdFLAG=2
	temp1=1

    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
	clear

	@ 0,1 say "---- 485 通讯 ----"
	@ 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 + -