回复内容:
对: wangpeng_521 您好,下位机是我编写的,您说的我也想到了。比如IP 1... 内容的回复!
也就是说你可以改下位机的程序,那你可以这样:彩屏中就直接定义一个ANSCII字符串类型的通道,把字符型的IP地址传给通道,下位机那边需要定义连续的几个寄存器(比如8个)存储IP地址的ANSCII码,不过你要改通讯程序,就是在读这几个连续寄存器的首地址的时候返回内容为
"MCGSSTR:"+8个寄存器内的值,比如:
请求:0A 03 00 01 00 01 xx xx
下位机应答:0A 03 00 18 4D 43 47 53 53 54 52 3A 31 39 32 2E 31 39 32 2E 31 39 32 2E 31 39 32 xx xx
因为用统一的长度,变化的IP后面就是空格,然后再下位机中处理字符串
回复内容:
对: Maybe境界 回复内容:对: wangpeng_521 您好,下位... 内容的回复!
Total_len = !len(String_IP) '求字符串String_IP总长度
value_a = !lVal(String_IP) '将字符串转换成整形变量
StringB = !right(String_IP,Total_len - !len(!Str(value_a)) - 1) '将第一个8位变量和'.'剔除掉
Total_len = !len(StringB) '求字符串StringB总长度
value_b = !lVal(StringB) '将字符串转换成整形变量
StringC = !right(StringB,Total_len - !len(!Str(value_b)) - 1) '将第二个8位变量和'.'剔除掉
Total_len = !len(StringC) '求字符串StringC总长度
value_c = !lVal(StringC) '将字符串转换成整形变量
StringD = !right(StringC,Total_len - !len(!Str(value_c)) - 1) '将第三个8位变量和'.'剔除掉
value_d = !lVal(StringD) '将字符串转换成整形变量
LIP = value_a * 16777216 + value_b * 65536 + value_c * 256 + value_d
后来编写了叫脚本,暂时能实现了
Server_IP_Read_Return = "192.168.01.123"
ip_str_len = !len(Server_IP_Read_Return)
dot_pos = !InStr(1,Server_IP_Read_Return,".")
left_str = !Left(Server_IP_Read_Return,dot_pos-1)
Server_IP_Setting0 = !Val(left_str)
Server_IP_Read_Return = !right(Server_IP_Read_Return,ip_str_len - dot_pos )
dot_pos = !InStr(1,Server_IP_Read_Return,".")
left_str = !Left(Server_IP_Read_Return,dot_pos-1)
Server_IP_Setting1 = !Val(left_str)
ip_str_len = !len(Server_IP_Read_Return)
Server_IP_Read_Return = !right(Server_IP_Read_Return,ip_str_len - dot_pos )
dot_pos = !InStr(1,Server_IP_Read_Return,".")
left_str = !Left(Server_IP_Read_Return,dot_pos-1)
Server_IP_Setting2 = !Val(left_str)
ip_str_len = !len(Server_IP_Read_Return)
Server_IP_Read_Return = !right(Server_IP_Read_Return,ip_str_len - dot_pos )
Server_IP_Setting3 = !Val(Server_IP_Read_Return)