Browse Source

update some code

master
zhaohe 3 weeks ago
parent
commit
0579b6e1b3
  1. 11
      src/main/java/a8k/app/service/lis/BiLisDoubleTrackChannel.java
  2. 20
      src/main/java/a8k/app/service/lis/LisCommunicationService.java
  3. 2
      src/main/java/a8k/app/utils/ThreadUtils.java
  4. 1
      src/main/resources/application.yml

11
src/main/java/a8k/app/service/lis/BiLisDoubleTrackChannel.java

@ -83,7 +83,6 @@ public class BiLisDoubleTrackChannel {
} }
synchronized public boolean ping() { synchronized public boolean ping() {
/* /*
* 设备探测协议 * 设备探测协议
* 1. 发送ENQ0x05到服务器 * 1. 发送ENQ0x05到服务器
@ -91,22 +90,20 @@ public class BiLisDoubleTrackChannel {
* 3. 如果收到ACK发送ACK0x06作为确认 * 3. 如果收到ACK发送ACK0x06作为确认
*/ */
if (!isChannelReady()) {
if (!isChannelReady())
return false; return false;
}
synchronized (rxBuffer) { synchronized (rxBuffer) {
rxBuffer.clear(); rxBuffer.clear();
} }
txBytes(new byte[]{BiLisDoubleTrackFrame.ENQ}); txBytes(new byte[]{BiLisDoubleTrackFrame.ENQ});
boolean rxAckOrNak = ThreadUtils.waitingForSomeCondition("BiLisDoubleTrackChannel.rx",
boolean rxAckOrNak = ThreadUtils.waitingForSomeCondition("BiLisDoubleTrackChannel.rx", 100, 2000,
() -> { () -> {
synchronized (rxBuffer) { synchronized (rxBuffer) {
return rxBuffer.readableBytes() == 1 && return rxBuffer.readableBytes() == 1 &&
(rxBuffer.getByte(0) == BiLisDoubleTrackFrame.ACK || rxBuffer.getByte(0) == BiLisDoubleTrackFrame.NAK); (rxBuffer.getByte(0) == BiLisDoubleTrackFrame.ACK || rxBuffer.getByte(0) == BiLisDoubleTrackFrame.NAK);
} }
},
100, 2000);
});
if (rxAckOrNak) { if (rxAckOrNak) {
txBytes(new byte[]{BiLisDoubleTrackFrame.ACK}); txBytes(new byte[]{BiLisDoubleTrackFrame.ACK});
@ -123,8 +120,6 @@ public class BiLisDoubleTrackChannel {
// * RX: <EOT> // * RX: <EOT>
// */ // */
// //
//
//
// } // }

20
src/main/java/a8k/app/service/lis/LisCommunicationService.java

@ -11,6 +11,7 @@ import a8k.app.utils.ZJsonHelper;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
@ -21,26 +22,29 @@ public class LisCommunicationService {
private final LisUartChannel lisUartChannel; private final LisUartChannel lisUartChannel;
private LISSetting setting; private LISSetting setting;
BiLisSingleTrackChannel boditechLisSingleTrackChannel;
@Value("${lis.enable}")
public Boolean lisEnable = true;
BiLisSingleTrackChannel boditechLisSingleTrackChannel;
public void updateLisSetting(LISSetting lisSetting) { public void updateLisSetting(LISSetting lisSetting) {
if (!lisEnable) {
log.warn("LIS communication is disabled by configuration, ignore updateLisSetting");
return;
}
log.info("updateLisSetting: {}", ZJsonHelper.objToPrettyJson(lisSetting)); log.info("updateLisSetting: {}", ZJsonHelper.objToPrettyJson(lisSetting));
setting = lisSetting; setting = lisSetting;
doUpdateLisSetting(); doUpdateLisSetting();
} }
public String getProtocolDetail() { public String getProtocolDetail() {
if (isChannelEq(LISProtocolEnum.Boditech, LISDirectionTypeEnum.SINGLE_TRACK, LISIFType.SERIAL)) { if (isChannelEq(LISProtocolEnum.Boditech, LISDirectionTypeEnum.SINGLE_TRACK, LISIFType.SERIAL)) {
return String.format("%s.%s.%s,baudrate:%s", setting.lisProtocol, setting.lisType, setting.lisIf, setting.lisSerialBaudrate.baudrate); return String.format("%s.%s.%s,baudrate:%s", setting.lisProtocol, setting.lisType, setting.lisIf, setting.lisSerialBaudrate.baudrate);
}
else if (isChannelEq(LISProtocolEnum.Boditech, LISDirectionTypeEnum.SINGLE_TRACK, LISIFType.NETWORK)) {
} else if (isChannelEq(LISProtocolEnum.Boditech, LISDirectionTypeEnum.SINGLE_TRACK, LISIFType.NETWORK)) {
return String.format("%s.%s.%s,ip:%s,port:%d", setting.lisProtocol, setting.lisType, setting.lisIf, setting.lisNetIp, setting.lisNetPort); return String.format("%s.%s.%s,ip:%s,port:%d", setting.lisProtocol, setting.lisType, setting.lisIf, setting.lisNetIp, setting.lisNetPort);
} else { } else {
return String.format("%s.%s.%s", setting.lisProtocol, setting.lisType, setting.lisIf); return String.format("%s.%s.%s", setting.lisProtocol, setting.lisType, setting.lisIf);
} }
} }
public Boolean getConnectionState() { public Boolean getConnectionState() {
@ -64,6 +68,10 @@ public class LisCommunicationService {
@PostConstruct @PostConstruct
public void init() { public void init() {
log.info("LisCommunicationService init"); log.info("LisCommunicationService init");
if (!lisEnable) {
log.warn("LIS communication is disabled by configuration.");
return;
}
setting = appSettingsMgrService.getLISSetting(); setting = appSettingsMgrService.getLISSetting();
doUpdateLisSetting(); doUpdateLisSetting();
} }

2
src/main/java/a8k/app/utils/ThreadUtils.java

@ -52,7 +52,7 @@ public class ThreadUtils {
} }
} }
static public boolean waitingForSomeCondition(String conditionName, ConditionListener condition, long retryIntervalMillis, long timeoutMillis) {
static public boolean waitingForSomeCondition(String conditionName,long retryIntervalMillis, long timeoutMillis, ConditionListener condition ) {
long startTime = System.currentTimeMillis(); long startTime = System.currentTimeMillis();
while (System.currentTimeMillis() - startTime < timeoutMillis) { while (System.currentTimeMillis() - startTime < timeoutMillis) {
if (condition.isConditionMet()) if (condition.isConditionMet())

1
src/main/resources/application.yml

@ -3,6 +3,7 @@ server.port: 80
iflytophald.ip: 127.0.0.1 iflytophald.ip: 127.0.0.1
iflytophald.enable: false iflytophald.enable: false
device.runmode: "VirtualStateGenerateMode" device.runmode: "VirtualStateGenerateMode"
lis.enable: false
#PC调试 #PC调试
#server.port: 80 #server.port: 80

Loading…
Cancel
Save