Browse Source

消息ID改为由请求对象自动生成

master
sige 1 year ago
parent
commit
ae318178f2
  1. 16
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommandRequest.java
  2. 12
      src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDevice.java

16
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiCommandRequest.java

@ -1,8 +1,9 @@
package com.my.graphiteDigesterBg.diframe;
import java.nio.ByteBuffer;
import java.util.Timer;
public class DiCommandRequest {
// id counter
private static int idCounter = 0;
// message id
public short id;
// parameter
@ -19,4 +20,17 @@ public class DiCommandRequest {
public Integer timeoutCount = 0;
// timeout timer
public Timer timeoutTimer = null;
// constructor
public DiCommandRequest() {
this.refreshId();
}
// refresh id
public void refreshId() {
this.id = (short)idCounter++;
if ( idCounter > 30000 ) {
idCounter = 0;
}
}
}

12
src/src/main/java/com/my/graphiteDigesterBg/diframe/DiDevice.java

@ -35,15 +35,11 @@ public class DiDevice {
private DiTaskManager taskManager;
// runtime variables
private DiDeviceRuntimeVariableManager runtimeVariables;
// message index
private short messageIndex = 0;
// testcase manager
private DiTestcaseManager testcaseManager;
@PostConstruct
public void init() {
this.messageIndex = 0;
this.loadDeviceYml();
this.setupConnection();
this.io = new DiDeviceIOManager(this);
@ -227,10 +223,9 @@ public class DiDevice {
int moduleId = mid;
DiCommandRequest request = new DiCommandRequest();
request.id = this.messageIndex;
request.parameter = ByteBuffer.allocate(length);
request.parameter.order(ByteOrder.LITTLE_ENDIAN);
request.parameter.putShort(this.messageIndex);
request.parameter.putShort(request.id); // packet index
request.parameter.putShort((short)mainCmdId); // main cmd id
request.parameter.put((byte)subCmdId); // sub cmd id
request.parameter.put((byte)0); // directive type
@ -241,11 +236,6 @@ public class DiDevice {
}
}
this.messageIndex ++;
if ( this.messageIndex > 30000 ) {
this.messageIndex = 0;
}
return request;
}

Loading…
Cancel
Save