@@ -51,6 +51,10 @@ public class AdapterManage {
* 基于线程安全HASHMAP
*/
private static final ConcurrentHashMap < String , AgvInfo > adapterDataMap = new ConcurrentHashMap < > ( ) ;
/**
* 内核状态
*/
// public static Boolean kernelStatus = false;
//开启通讯信息
private static final String USER = GuestUserCredentials . USER ;
@@ -58,9 +62,6 @@ public class AdapterManage {
private static final String IP = GuestUserCredentials . IP ;
private static final Integer PORT = GuestUserCredentials . PORT ;
private int i = 1 ;
//开启定时任务
public void START ( ) {
scheduler . scheduleWithFixedDelay ( task , 5000 , 500 , TimeUnit . MILLISECONDS ) ;
@@ -72,88 +73,107 @@ public class AdapterManage {
}
Runnable task = ( ) - > {
// kernel = new KernelCommunication(USER, PASSWORD, IP, PORT);
// autoManageAdapter Status();
// updateAdapterVehicleModel() ;
// if (!kernel Status) {
// return ;
// }
//
// System.out.println("test-----start");
//
// KernelServicePortal servicePortal = new KernelServicePortalBuilder(USER, PASSWORD).build();
// servicePortal.login(IP, PORT);
//
// VehicleService vehicleService = servicePortal.getVehicleService();
// Vehicle vehicle = vehicleService.fetchObject(Vehicle.class, "v2");
//
// vehicleService.enableCommAdapter(vehicle.getReference());
//
// servicePortal.logout();
//
// System.out.println("test-----end");
kernel = new KernelCommunication ( USER , PASSWORD , IP , PORT ) ;
autoManageAdapterStatus ( ) ;
updateAdapterVehicleModel ( ) ;
kernel . logout ( ) ;
// System.out.println("end task");
} ;
/**
* 自动管理通讯适配器
*/
private static boolean autoManageAdapterStatus( String name ) {
Date date = new Date ( ) ;
long currentTime = date . getTime ( ) ;
System . out . println ( " autoManageAdapterStatus: " + adapterStatusMap ) ;
AgvStatus oldData = adapterStatusMap . get ( name ) ;
if ( oldData = = null ) {
return false ;
}
AgvStatus agvStatus = new AgvStatus ( ) ;
agvStatus . setTime ( oldData . getTime ( ) ) ;
if ( currentTime - oldData . getTime ( ) > AUTO_CLOSE_TIME ) {
System . out . println ( " adapterStatusMap first DISABLE " ) ;
agvStatus . setStatus ( AdapterStatus . DISABLE ) ;
} else {
System . out . println ( " adapterStatusMap first ENABLE " ) ;
agvStatus . setStatus ( AdapterStatus . ENABLE ) ;
}
//更新记录数据
adapterStatusMap . put ( name , agvStatus ) ;
return agvStatus . getStatus ( ) ;
}
// private void autoManageAdapterStatus() {
// private static boolean autoManageAdapterStatus(String name) {
// Date date = new Date();
// long currentTime = date.getTime();
//
// System.out.println("autoManageAdapterStatus: " + adapterStatusMap);
// adapterStatusMap.forEach((key, value) -> {
// System.out.println("adapterStatusMap first");
// Long time = value.getTime();
// AgvStatus agvStatus = new AgvStatus();
// agvStatus.setTime(value.getTime());
// agvStatus.setActionStatus(value.getActionStatus());
//
// if (currentTime - time > AUTO_CLOSE_TIME) {
// System.out.println("adapterStatusMap first DISABLE");
// agvStatus.setStatus(AdapterStatus.DISABLE);
// kernel.disableAdapter(key);
// } else {
// System.out.println("adapterStatusMap first ENABLE");
// agvStatus.setStatus(AdapterStatus.ENABLE);
// kernel.enableAdapter(key);
// }
// AgvStatus oldData = adapterStatusMap.get(name);
//
// LOG.info("update the adapter: {} status: {}", key, value);
// if (oldData == null) {
// return false;
// }
//
// if (a gvStatus.getAction Status()) {
// kernel.sendToAdapter(key, agvStatus );
// //动作执行结束,修改数据
// agvStatus.setActionStatus(false);
// }
// A gvStatus agvStatus = new Agv Status();
// agvStatus.setTime(oldData.getTime() );
//
// //更新记录数据
// adapterStatusMap.put(key, agvStatus );
// } );
// if (currentTime - oldData.getTime() > AUTO_CLOSE_TIME) {
// System.out.println("adapterStatusMap first DISABLE" );
// agvStatus.setStatus(AdapterStatus.DISABLE );
// } else {
// System.out.println("adapterStatusMap first ENABLE");
// agvStatus.setStatus(AdapterStatus.ENABLE);
// }
//
// //更新记录数据
// adapterStatusMap.put(name, agvStatus);
//
// return agvStatus.getStatus();
// }
private void autoManageAdapterStatus ( ) {
Date date = new Date ( ) ;
long currentTime = date . getTime ( ) ;
System . out . println ( " autoManageAdapterStatus: " + adapterStatusMap ) ;
adapterStatusMap . forEach ( ( key , value ) - > {
LOG . info ( " adapterStatusMap starts name: {} " , key ) ;
AgvStatus agvStatus = new AgvStatus ( ) ;
agvStatus . setTime ( value . getTime ( ) ) ;
if ( currentTime - value . getTime ( ) > AUTO_CLOSE_TIME ) {
agvStatus . setStatus ( AdapterStatus . DISABLE ) ;
kernel . disableAdapter ( key ) ;
} else {
agvStatus . setStatus ( AdapterStatus . ENABLE ) ;
kernel . enableAdapter ( key ) ;
}
LOG . info ( " update the adapter: {} status: {} " , key , value ) ;
if ( value . getActionStatus ( ) ) {
kernel . sendToAdapter ( key , agvStatus ) ;
}
//更新数据状态
agvStatus . setActionStatus ( false ) ;
//更新记录数据
adapterStatusMap . put ( key , agvStatus ) ;
System . out . println ( " adapterStatusMap end name: " + key ) ;
LOG . info ( " adapterStatusMap end name: {} " , key ) ;
} ) ;
}
/**
* 更新适配器车辆模型
*/
private void updateAdapterVehicleModel ( ) {
adapterDataMap . forEach ( ( key , value ) - > {
System . out . println ( " updateAdapterVehicleModel first " ) ;
System . out . println ( " updateAdapterVehicleModel name: " + key ) ;
kernel . sendToAdapter ( key , value ) ;
adapterDataMap . remove ( key ) ;
} ) ;
@@ -169,6 +189,7 @@ public class AdapterManage {
AgvStatus newAgvStatus = new AgvStatus ( ) ;
newAgvStatus . setTime ( time ) ;
newAgvStatus . setActionStatus ( false ) ;
if ( ! adapterStatusMap . isEmpty ( ) & & adapterStatusMap . containsKey ( name ) ) {
//已记录,只更新时间
@@ -195,21 +216,24 @@ public class AdapterManage {
* 设置动作完成状态
* @param name 车辆名称
*/
// public static void setActionStatus(String name) {
// AgvStatus agvStatus = adapterStatusMap.get(name) ;
// agvStatus. setActionStatus(true) ;
// adapterStatusMap.put(name, agvStatus) ;
// }
public static void setActionStatus( String name ) {
AgvStatus agvStatus = adapterStatusMap. get ( name ) ;
agvStatus. setActionStatus( true ) ;
adapterStatusMap. put ( name , agvStatus) ;
}
/**
* 记录对应通讯适配器最后一次上报数据
* @param name 车辆名称
* @param data 数据
*/
public static AgvInfo setAdapterVehicleModel ( String name , String data ) {
public static void setAdapterVehicleModel ( String name , String data ) {
JSONObject jsonObject = JSON . parseObject ( data ) ;
//校验通讯序列号
AgvInfo agvInfo = new AgvInfo ( ) ;
agvInfo . setSender ( jsonObject . getString ( " sender " ) ) ;
agvInfo . setReceiver ( jsonObject . getString ( " receiver " ) ) ;
@@ -218,7 +242,7 @@ public class AdapterManage {
agvInfo . setTime ( jsonObject . getString ( " time " ) ) ;
agvInfo . setParams ( getAgvInfoParams ( jsonObject . getString ( " params " ) ) ) ;
return agvInfo ;
adapterDataMap . put ( name , agvInfo ) ;
}
private static AgvInfoParams getAgvInfoParams ( String paramsStr ) {
@@ -247,14 +271,4 @@ public class AdapterManage {
Boolean ENABLE = true ;
Boolean DISABLE = false ;
}
private static void test ( ) {
KernelServicePortal build = new KernelServicePortalBuilder ( USER , PASSWORD ) . build ( ) ;
build . login ( IP , PORT ) ;
VehicleService vehicleService = build . getVehicleService ( ) ;
Vehicle vehicle = vehicleService . fetchObject ( Vehicle . class , " v1 " ) ;
vehicleService . enableCommAdapter ( vehicle . getReference ( ) ) ;
vehicleService . sendCommAdapterMessage ( vehicle . getReference ( ) , " test " ) ;
}
}