package com.dy.pipirrComCreator.p206V1;
|
|
import com.dy.common.mw.protocol.p206V1.parse.global.GlCreate;
|
import com.dy.common.util.ByteUtil;
|
import com.dy.common.util.ByteUtilUnsigned;
|
import com.dy.common.util.IPUtils;
|
import com.dy.common.util.NumUtil;
|
|
/**
|
* @Author: liurunyu
|
* @Date: 2025/5/7 11:25
|
* @Description
|
*/
|
public class P206V1Cd21 extends P206V1Cd {
|
|
public static final String ComCode = "21" ;
|
|
public String checkParams(String ...params){
|
if(params.length != 2){
|
return "只有IP和端口两个参数" ;
|
}
|
if(!IPUtils.ipValid(params[0])){
|
return "IP地址不正确" ;
|
}
|
if(IPUtils.internalIp(params[0])){
|
return "IP地址必须是外网IP" ;
|
}
|
if(!NumUtil.isPlusIntNumber(params[1])){
|
return "端口号必须是正整数" ;
|
}
|
int port = Integer.parseInt(params[1]) ;
|
if(port < 1 || port > 65535){
|
return "端口号必须在1-65535之间" ;
|
}
|
return null ;
|
}
|
public String helpInfo() {
|
return ComCode + " *...* *...*[Enter](设置服务端IP和端口)" ;
|
}
|
/**
|
* 构造命令数据(十六进制)
|
* @return 字符串
|
* @throws Exception 异常
|
*/
|
public String hex(String rtuAddr, String ...params) throws Exception {
|
byte[] bytes = bs(rtuAddr, params) ;
|
return ByteUtil.bytes2Hex(bytes, false) ;
|
}
|
|
/**
|
* 构造命令数据(字节数组)
|
* @return 字节数组
|
* @throws Exception 异常
|
*/
|
public byte[] bs(String rtuAddr, String ...params) throws Exception {
|
byte[] bytes = createHead(rtuAddr, ComCode, P206V1Cd.CTRL);
|
|
byte n = 0 ;
|
byte[] bs = new byte[14] ;
|
String[] ip = params[0].split("\\.") ;
|
ByteUtilUnsigned.byte2Byte(bs, Byte.parseByte(ip[0]), n++);
|
ByteUtilUnsigned.byte2Byte(bs, Byte.parseByte(ip[1]), n++);
|
ByteUtilUnsigned.byte2Byte(bs, Byte.parseByte(ip[2]), n++);
|
ByteUtilUnsigned.byte2Byte(bs, Byte.parseByte(ip[3]), n++);
|
ByteUtilUnsigned.short2Bytes_LE(bs, Short.parseShort(params[1]), n);
|
n += 2 ;
|
GlCreate.createPw(bs, n);
|
n += 2 ;
|
GlCreate.createTp(bs, n);
|
|
bytes = ByteUtil.bytesMerge(bytes, bs);
|
|
GlCreate.createLen(bytes);//长度放字节数组中
|
|
byte[] bsTail = GlCreate.createCrcTail4P206(bytes) ;//CRC和尾叠加字节数组中
|
|
bytes = ByteUtil.bytesMerge(bytes, bsTail) ;
|
|
return bytes ;
|
}
|
|
public static void main(String[] args) throws Exception {
|
String[] ps = new String[]{"1.2.3.4", "123"} ;
|
new P206V1Cd21().hex("530115059980", ps) ;
|
}
|
}
|