|
@@ -15,6 +15,9 @@ import org.springframework.context.annotation.Scope;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.util.Date;
|
|
|
+import java.util.concurrent.ExecutorService;
|
|
|
+import java.util.concurrent.Executors;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* 恒盛互通成人手表
|
|
@@ -26,18 +29,20 @@ public class WatchHenShengServerHandler extends HexBinaryAcceptanceHandlerAdapte
|
|
|
|
|
|
public static final String name = "WatchHenShengServerHandler";
|
|
|
private static final Logger logger = LoggerFactory.getLogger(WatchHenShengServerHandler.class);
|
|
|
+ private static ExecutorService executorService = Executors.newSingleThreadExecutor();
|
|
|
|
|
|
@Override
|
|
|
protected void handle(ByteBuf in, Channel channel) throws Exception {
|
|
|
byte[] req = new byte[in.readableBytes()];
|
|
|
in.readBytes(req);
|
|
|
- String msg = new String(req,"UTF-8");
|
|
|
+ String msg = new String(req, "UTF-8");
|
|
|
logger.info("传入数据:》》》》》》》》》" + msg);
|
|
|
Advice advice = setAdvice(msg);
|
|
|
switch (advice.getAdviceType()) {
|
|
|
case "INIT": // 初始化
|
|
|
String init = "INIT,1";
|
|
|
normalReply(advice, channel, init);
|
|
|
+ setUpload(advice, channel);
|
|
|
break;
|
|
|
case "LK": // 连接
|
|
|
Date date = new Date();
|
|
@@ -73,6 +78,31 @@ public class WatchHenShengServerHandler extends HexBinaryAcceptanceHandlerAdapte
|
|
|
dataByteBufCopy.release();
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 设置终端 上报频率
|
|
|
+ *
|
|
|
+ * @param advice
|
|
|
+ * @param channel
|
|
|
+ */
|
|
|
+ protected void setUpload(Advice advice, Channel channel) {
|
|
|
+ String content = "UPLOAD,1";// 一分钟一次
|
|
|
+ Date loginTime = new Date();
|
|
|
+ executorService.execute(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+ Date currentTime = new Date();
|
|
|
+ try {
|
|
|
+ Long secondsSinceLogin = (currentTime.getTime() - loginTime.getTime()) / 1000;
|
|
|
+ if (secondsSinceLogin < 5L) {
|
|
|
+ TimeUnit.SECONDS.sleep(5 - secondsSinceLogin);
|
|
|
+ }
|
|
|
+ normalReply(advice, channel, content);
|
|
|
+ } catch (InterruptedException e) {
|
|
|
+ logger.error(e.getMessage());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 回复
|
|
@@ -104,6 +134,7 @@ public class WatchHenShengServerHandler extends HexBinaryAcceptanceHandlerAdapte
|
|
|
public static String numToHex8(int b) {
|
|
|
return String.format("%02x", b);//2表示需要两个16进行数
|
|
|
}
|
|
|
+
|
|
|
//需要使用2字节表示b
|
|
|
public static String numToHex16(int b) {
|
|
|
return String.format("%04x", b);
|