Procházet zdrojové kódy

修改同步室key的获取 原为short 现为 无符号short

xiuwei před 4 roky
rodič
revize
9465f253db

+ 2 - 2
pom.xml

@@ -6,7 +6,7 @@
 
     <groupId>wei.yigulu</groupId>
     <artifactId>protocol</artifactId>
-    <version>1.1.2</version>
+    <version>1.1.3</version>
     <packaging>pom</packaging>
     <modules>
         <module>protocol-core</module>
@@ -32,7 +32,7 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <java.version>1.8</java.version>
-        <protocol.version>1.1.2</protocol.version>
+        <protocol.version>1.1.3</protocol.version>
         <iec104.version>1.4.9</iec104.version>
         <modbus.version>1.2.3</modbus.version>
         <cdt.version>1.0.0</cdt.version>

+ 1 - 1
protocol-all/pom.xml

@@ -6,7 +6,7 @@
     <parent>
         <artifactId>protocol</artifactId>
         <groupId>wei.yigulu</groupId>
-        <version>1.1.2</version>
+        <version>1.1.3</version>
     </parent>
 
 

+ 1 - 1
protocol-cdt/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>protocol</artifactId>
         <groupId>wei.yigulu</groupId>
-        <version>1.1.2</version>
+        <version>1.1.3</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
protocol-core/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>protocol</artifactId>
         <groupId>wei.yigulu</groupId>
-        <version>1.1.2</version>
+        <version>1.1.3</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
protocol-iec104/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>protocol</artifactId>
         <groupId>wei.yigulu</groupId>
-        <version>1.1.2</version>
+        <version>1.1.3</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

+ 1 - 1
protocol-modbus/pom.xml

@@ -5,7 +5,7 @@
     <parent>
         <artifactId>protocol</artifactId>
         <groupId>wei.yigulu</groupId>
-        <version>1.1.2</version>
+        <version>1.1.3</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <version>${modbus.version}</version>

+ 11 - 4
protocol-modbus/src/main/java/wei/yigulu/modbus/domain/synchronouswaitingroom/TcpSynchronousWaitingRoom.java

@@ -3,6 +3,7 @@ package wei.yigulu.modbus.domain.synchronouswaitingroom;
 
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
+import wei.yigulu.modbus.domain.datatype.numeric.P_AB;
 
 import java.nio.ByteBuffer;
 import java.util.Map;
@@ -28,7 +29,12 @@ public class TcpSynchronousWaitingRoom implements SynchronousWaitingRoom {
 	public ByteBuffer getData(int key) {
 		Guest guest = new Guest();
 		this.guestMap.put(key, guest);
-		ByteBuffer byteBuffer = guest.getData();
+		ByteBuffer byteBuffer = null;
+		try {
+			byteBuffer = guest.getData();
+		} catch (InterruptedException e) {
+			log.error("响应超时,事务识别码为:"+key);
+		}
 		this.guestMap.remove(key);
 		return byteBuffer;
 	}
@@ -37,10 +43,12 @@ public class TcpSynchronousWaitingRoom implements SynchronousWaitingRoom {
 	public void setData(ByteBuffer bytes) {
 		if (bytes.remaining() > 2) {
 			bytes.mark();
-			int key = bytes.getShort();
+			int key = new P_AB().decode(bytes).getValue().intValue();
 			bytes.reset();
 			if (this.guestMap.containsKey(key)) {
 				this.guestMap.get(key).setData(bytes);
+			}else{
+				log.error("置入响应数据时,未发现等待者:"+key);
 			}
 		}
 	}
@@ -49,8 +57,7 @@ public class TcpSynchronousWaitingRoom implements SynchronousWaitingRoom {
 
 		protected ByteBuffer bytes = null;
 
-		@SneakyThrows
-		public synchronized ByteBuffer getData() {
+		public synchronized ByteBuffer getData() throws InterruptedException {
 			ByteBuffer returnBytes = null;
 			try {
 				if (this.bytes == null) {

+ 2 - 2
protocol-modbus/src/test/java/TestMaster.java

@@ -26,7 +26,7 @@ public class TestMaster {
 		TcpSynchronousWaitingRoom.waitTime=5000L;
 		Thread.sleep(3000L);
 		Map<Integer, ModbusDataTypeEnum> map = new HashMap<>();
-		for (int i = 0; i <= 120; i++) {
+		for (int i = 0; i <= 90; i++) {
 			map.put(i , ModbusDataTypeEnum.P_AB);
 		}
 		List<Obj4RequestRegister> ll = ModbusRequestDataUtils.splitModbusRequest(map, 1, FunctionCode.READ_HOLDING_REGISTERS);
@@ -38,7 +38,7 @@ public class TestMaster {
 				Collections.sort(lll);
 				for (Integer i : lll) {
 					if(map1.get(i) instanceof  NumericModbusData) {
-						//System.out.println(i + " ============ " + ((NumericModbusData) map1.get(i)).getValue());
+					//System.out.println(i + " ============ " + ((NumericModbusData) map1.get(i)).getValue());
 					}else {
 						//System.out.println(i + " ============ " + JSON.toJSONString(((BooleanModbusDataInRegister) map1.get(i)).getValues()));
 				}