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

📄 gprs 域名方式还没删.zrg

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

	DomainName	: C,	1[21]={	"D","O","N","G","B","E","I","P","O","W",
								"E","R",".","V","I","C","P",".","N","E","T"}
	LYDomainName5 : C,	1[17]={	"L","Y","P","O","W","E","R","5",
								".","V","I","C","P",".","N","E","T"}
	TopDomainName	: C,	1[16]={	"D","O","N","G","B","E","I","P","O","W",
								"E","R",".","C","O","M"}
	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

	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
	SimCardNO	: C,	11
	AnswerCSQ	: C,	10
	AttachedSta	: C,	10
	DTUDate		: C,	8
	DTUTime		: C,	8
	WS_DateTime	: C,	19
* --------------------------------------	
	temp1		: N,	1
	temp2		: N,	3
	temp4		: 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_bh
	clear
	@ 0,1 say "请输入表号"
*	@ 1,1 say "回车为广播号"
	@ 1,1
	input to char2
	char2=TRIM(char2)
	temp1=len(char2)
	if temp1<>2
		return
	endif

	do getB06
	if done=0
		clear
		@ 0,1 say "错误,非法表号"
		wait ""
		return
	endif

	return
endpro

********输入密码
procedure ask_mima
	clear
	done=0
	@ 0,1 say "请输入密码"
	@ 1,1 say "回车为默认:********"
	@ 2,1
	input to char8
	temp1=len(char8)
	if temp1 = 0
		oldMM=12345601
	else
		oldMM=val(char8)
	endif
	done=1
	return
endpro

********要继续吗
procedure comeon
	clear
	@ 0,1 say "未收到正常应答"
	@ 1,1 say "按确认键重设置"
	@ 2,1 say "按其它键退出"
	wait "" to char1
	return
endpro

********向老威胜表发送
procedure SendCom_WS
	INITSIO 4,"E",8
	set com to 1 /485
	j=receives(RecBuffer{63,1},1)
	sends buffer{1,7}
   	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
    	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_WS
	nComResult=0
	i=0
	j=0
	temp12=0

********读入固定长度的数据,延时500ms
	j=receives(RecBuffer{1,16},5)
	if j<4
		nComResult=256
		sound 7,1
		sound 0,1	&&停顿250ms
		sound 7,1
		sound 0,1
		return
	endif
	
	sound 2,2
	return
endpro


********接收帧
procedure ReceiveCom
	nComResult=0
	i=0
	j=0
	temp12=0
	RecBuffer{1,1}="00"
********检测帧开始标志,延时900ms
	do while i<>068H
*		j=receives(RecBuffer{1,1},9)
*		j=receives(RecBuffer{1,1},15)	&&延时 1.5s
		j=receives(RecBuffer{1,1},20)	&&延时 2s
		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

	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		&&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 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

********写IP地址或域名
procedure SetIP_DomainName
    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,0	say  "0写IP地址"	
	@ 1,0	say  "1设为IP地址连接方式"	

	@ 3,0	say  "3输入域名..."	
	@ 4,0	say  "4写dongbeipower.com"	
	@ 5,0	say  "5写LYPOWER5.vicp.net"	
	@ 6,0	say  "6写dongbeipower.vicp.net"	
	@ 7,0	say  "7置为域名连接方式"	
	
     	wait  ""  to  choice
   	DO 	CASE
******** "0" 设置IP地址
     		CASE  asc(choice) = 30H
	  		do SetIPAddress
******** "1" 设为IP地址连接
     		CASE  asc(choice) = 31H
	  		do Set_LinkForIP

******** "3" 输入域名...
     		CASE  asc(choice) = 33H
	  		do InputDomainName
******** "4" 设置dongbeipower.com
     		CASE  asc(choice) = 34H
	  		do Set_DomainName2
******** "5" 设置LYPOWER5.vicp.net
     		CASE  asc(choice) = 35H
	  		do Set_LYDName5
******** "6" 设置dongbeipower.vicp.net
     		CASE  asc(choice) = 36H
	  		do Set_DomainName1
******** "7" 设为域名连接
     		CASE  asc(choice) = 37H
	  		do Set_LinkForDoName

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

	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
	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

********输入域名...
procedure InputDomainName
	clear
	@ 1,1 say "请输入域名..."
	@ 2,1 say "最长31个字符:"
	@ 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
	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

********写辽阳域名5
procedure Set_LYDName5
	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}=13H
	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)
	char9=right(str(temp14,13),9)
	char5=right(str(temp14,13),5)

	buffer{13,17}=LYDomainName5{1,17}
	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
	char12{1,12}=LYDomainName5{1,12}
	char5{1,5}=DomainName{13,5}
	@ 0,0 say char12
	@ 0,12 say char5
	@ 3,0 say "域名设置完毕"
	@ 4,0 say "按任一键退出" 
	wait ""
	return
endpro

********设置dongbeipower.vicp.net
procedure Set_DomainName1
	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}=17H	&&23=21+2
	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)
	char9=right(str(temp14,13),9)

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -