sige 1 year ago
parent
commit
db53563246
  1. 37
      src/main/java/a8k/hardware/controler/Controler.java
  2. 2
      src/main/java/a8k/service/hardware/HbotControlService.java
  3. 13
      src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java
  4. 12
      src/main/java/a8k/utils/HardwareServiceStatus.java

37
src/main/java/a8k/hardware/controler/Controler.java

@ -98,6 +98,43 @@ public class Controler {
return AppRet.success();
}
@PostMapping("/api/service-config/service-status-list")
@ResponseBody
public AppRet<Object> serviceStatus( @RequestBody Map<String, Object> params ) throws InvocationTargetException, IllegalAccessException {
String serviceKey = (String)params.get("serviceKey");
Class<?> serviceClass = null;
var classes = UfClassHelper.getAllClassesInPackage("a8k");
for (var clazz : classes) {
var hardwareServiceAnnotation = clazz.getAnnotation(HardwareService.class);
if (null == hardwareServiceAnnotation || !clazz.getSimpleName().equals(serviceKey)) {
continue ;
}
serviceClass = clazz;
break;
}
List<Map<String,Object>> statusList = new ArrayList<>();
if ( null == serviceClass ) {
return AppRet.success(statusList);
}
var service = UfApplication.getContext().getBean(serviceClass);
var methods = serviceClass.getMethods();
for ( var method : methods ) {
var statusAnnotation = method.getAnnotation(HardwareServiceStatus.class);
if ( null == statusAnnotation ) {
continue;
}
var status = new HashMap<String,Object>();
status.put("name", statusAnnotation.name());
var value = method.invoke(service);
status.put("value", value);
statusList.add(status);
}
return AppRet.success(statusList);
}
@PostMapping("/api/service-config/service-action-list")
@ResponseBody
public AppRet<Object> serviceActionList( @RequestBody Map<String, Object> params ) throws Exception {

2
src/main/java/a8k/service/hardware/HbotControlService.java

@ -2,10 +2,12 @@ package a8k.service.hardware;
import a8k.a8k_can_protocol.A8kEcode;
import a8k.utils.HardwareService;
import org.springframework.stereotype.Component;
/**
* Hbot控制服务
*/
@Component
@HardwareService(name="Hbot控制")
public class HbotControlService {

13
src/main/java/a8k/service/hardware/MotorTubeRackMoveCtrlService.java

@ -7,6 +7,7 @@ import a8k.base_hardware.A8kCanBusService;
import a8k.service.db.dao.A8kTubeInfoDao;
import a8k.service.db.dao.MotorTubeRackMoveCtrlServiceParameterDao;
import a8k.utils.HardwareService;
import a8k.utils.HardwareServiceStatus;
import com.iflytop.uf.util.UfCommon;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
@ -271,12 +272,16 @@ public class MotorTubeRackMoveCtrlService {
/**
* 获取移动通道的光电状态
* @param photoelectricIndex 0:里光电1:外光电
* @return true, 光电触发 false,光电没有触发
*/
public boolean getMoveChannelPhotoelectricState(Integer photoelectricIndex) throws HardwareException {
var io = 0 == photoelectricIndex ? IOId.THChOuterPPS : IOId.THChInterPPS;
return this.canBus.getIOState(io);
@HardwareServiceStatus(name="移动通道的光电(内)")
public boolean getMoveChannelPhotoelectricInState() throws HardwareException {
return this.canBus.getIOState(IOId.THChInterPPS);
}
@HardwareServiceStatus(name="移动通道的光电(外)")
public boolean getMoveChannelPhotoelectricOutState() throws HardwareException {
return this.canBus.getIOState(IOId.THChOuterPPS);
}
//

12
src/main/java/a8k/utils/HardwareServiceStatus.java

@ -0,0 +1,12 @@
package a8k.utils;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface HardwareServiceStatus {
String name();
String group() default "";
}
Loading…
Cancel
Save