@@ -15,8 +15,12 @@ import com.bonait.bnframework.common.db.mode.BPA_MATERIAL; | |||
import com.bonait.bnframework.common.db.mode.BPA_PLCADDRESS; | |||
import com.bonait.bnframework.common.db.mode.BPA_SILOS; | |||
import com.bonait.bnframework.common.helper.ByteHelper; | |||
import com.bonait.bnframework.common.helper.I.IReadCallBack; | |||
import com.bonait.bnframework.common.helper.I.IRun; | |||
import com.bonait.bnframework.common.helper.I.IRunT; | |||
import com.bonait.bnframework.common.helper.I.IThread; | |||
import com.bonait.bnframework.common.helper.I.IWriteCallBack; | |||
import com.bonait.bnframework.common.helper.RTrig; | |||
import com.bonait.bnframework.common.helper.ThreadManager; | |||
import com.bonait.bnframework.common.modbus.ModbusTcpServer; | |||
import com.bonait.bnframework.common.utils.AlertDialogUtils; | |||
@@ -51,6 +55,11 @@ public class ExecuteTheRecipe { | |||
*/ | |||
public static HashMap<String, Object> ListeningValue = new HashMap<String, Object>(); | |||
/** | |||
* 实时状态 | |||
*/ | |||
public static ConcurrentHashMap<Integer, Boolean> IoStatus = new ConcurrentHashMap<Integer, Boolean>(); | |||
/** | |||
* 外部界面 | |||
*/ | |||
@@ -71,6 +80,28 @@ public class ExecuteTheRecipe { | |||
* 当前工序的index | |||
*/ | |||
static int Index_select=0; | |||
/** | |||
* 扫码信息 | |||
*/ | |||
public static String Code = ""; | |||
/** | |||
* 接收到扫码信息,返回 | |||
*/ | |||
public static IRunT<String> OnScanTheCodeInformationT; | |||
/** | |||
* 配料完成通知 | |||
*/ | |||
public static IRun OnChargeMixtureCompleteNotify; | |||
/** | |||
* 通道配料完成通知 | |||
*/ | |||
public static IRun OnChargeMixtureComNotPar; | |||
/** | |||
* 按钮按下通知 | |||
*/ | |||
public static IRun OnIngredientButtonPressedNotify; | |||
//endregion | |||
//region 强制结束 | |||
@@ -809,20 +840,6 @@ public class ExecuteTheRecipe { | |||
} | |||
} | |||
new Thread(new Runnable() { | |||
@Override | |||
public void run() { | |||
try { | |||
WritePLC("初始化",true,null); | |||
Thread.sleep(500); | |||
WritePLC("初始化",false,null); | |||
} catch (InterruptedException e) { | |||
ToastUtils.info("异常信息:" + e.getMessage()); | |||
} | |||
} | |||
}).start(); | |||
ThreadManager.Get().StartLong("PLC设备数据监听", true, new IThread() { | |||
@Override | |||
public void Run() throws InterruptedException { | |||
@@ -835,7 +852,39 @@ public class ExecuteTheRecipe { | |||
ListeningValue.put(key, val); | |||
} | |||
} | |||
} catch (Exception ex) { | |||
ToastUtils.error("异常信息:" + ex.getMessage()); | |||
} | |||
Thread.sleep(100); | |||
} | |||
@Override | |||
public void RunComplete() throws InterruptedException { | |||
} | |||
}); | |||
ThreadManager.Get().StartLong("PLC设备数据监听-扫码信息", true, new IThread() { | |||
@Override | |||
public void Run() throws InterruptedException { | |||
try { | |||
ReadCode(); | |||
} catch (Exception ex) { | |||
ToastUtils.error("异常信息:" + ex.getMessage()); | |||
} | |||
Thread.sleep(100); | |||
} | |||
@Override | |||
public void RunComplete() throws InterruptedException { | |||
} | |||
}); | |||
ThreadManager.Get().StartLong("PLC设备数据监听-实时状态", true, new IThread() { | |||
@Override | |||
public void Run() throws InterruptedException { | |||
try { | |||
ReadPLCStatus(); | |||
} catch (Exception ex) { | |||
ToastUtils.error("异常信息:" + ex.getMessage()); | |||
@@ -848,6 +897,22 @@ public class ExecuteTheRecipe { | |||
} | |||
}); | |||
ThreadManager.Get().StartLong("PLC设备数据监听-信号检测", true, new IThread() { | |||
@Override | |||
public void Run() throws InterruptedException { | |||
try { | |||
ChargeSignal(); | |||
} catch (Exception ex) { | |||
ToastUtils.error("异常信息:" + ex.getMessage()); | |||
} | |||
Thread.sleep(10); | |||
} | |||
@Override | |||
public void RunComplete() throws InterruptedException { | |||
} | |||
}); | |||
} | |||
//endregion | |||
@@ -873,6 +938,23 @@ public class ExecuteTheRecipe { | |||
} else if (plcaddress.address.toUpperCase().startsWith("VW"))//short | |||
{ | |||
ModbusTcpServer.get().WriteShort(plcaddress.address, Short.parseShort(value.toString()), callback); | |||
}else if (plcaddress.address.toUpperCase().startsWith("VR"))//float | |||
{ | |||
ModbusTcpServer.get().WriteFloat(plcaddress.address, Float.parseFloat(value.toString()), callback); | |||
}else if (plcaddress.address.toUpperCase().startsWith("V") && plcaddress.address.contains("."))//位 | |||
{ | |||
String[] res = plcaddress.address.split("[.]"); | |||
String firstAdd = res[0]; //VW100 | |||
int endAdd = Integer.parseInt(res[1]); //1 //第几位 | |||
ModbusTcpServer.get().ReadShort(firstAdd, 1, new IReadCallBack<short[]>() { | |||
@Override | |||
public void onSuccess(short[] shorts) { | |||
Short val=shorts[0]; | |||
Short valk= ByteHelper.setBit(val,endAdd,(boolean) value); | |||
ModbusTcpServer.get().WriteShort(firstAdd, valk, null); | |||
} | |||
}); | |||
ModbusTcpServer.get().WriteFloat(plcaddress.address, Float.parseFloat(value.toString()), callback); | |||
} | |||
} | |||
} | |||
@@ -897,7 +979,6 @@ public class ExecuteTheRecipe { | |||
if (!plcaddress.address.isEmpty() && ConfigName.getInstance().PlcIsConnect) { | |||
if (plcaddress.address.toUpperCase().startsWith("VD"))//int | |||
{ | |||
ModbusTcpServer.get().ReadInt(plcaddress.address, 1, ints -> { | |||
ReturnsVariable[0] = ints[0]; | |||
}); | |||
@@ -911,6 +992,20 @@ public class ExecuteTheRecipe { | |||
ModbusTcpServer.get().ReadShort(plcaddress.address, 1, val -> { | |||
ReturnsVariable[0] = val[0]; | |||
}); | |||
} else if (plcaddress.address.toUpperCase().startsWith("VR"))//float | |||
{ | |||
ModbusTcpServer.get().ReadFloat(plcaddress.address, 1, val -> { | |||
ReturnsVariable[0] = val[0]; | |||
}); | |||
}else if (plcaddress.address.toUpperCase().startsWith("V") && plcaddress.address.contains("."))//位 | |||
{ | |||
String[] res = plcaddress.address.split("[.]"); | |||
String firstAdd = res[0].replace("V","VW"); //VW194 | |||
int endAdd = Integer.parseInt(res[1]); //1 //第几位 | |||
ModbusTcpServer.get().ReadbcStatus(firstAdd, 1, data -> { | |||
byte status=data[0];//0x92 | |||
ReturnsVariable[0] = ByteHelper.getBit(status,endAdd)==1; | |||
}); | |||
} | |||
} | |||
} | |||
@@ -921,10 +1016,6 @@ public class ExecuteTheRecipe { | |||
} | |||
} | |||
/** | |||
* 实时状态 | |||
*/ | |||
public static ConcurrentHashMap<Integer, Boolean> IoStatus = new ConcurrentHashMap<Integer, Boolean>(); | |||
/** | |||
* 获取实时状态 | |||
@@ -970,31 +1061,112 @@ public class ExecuteTheRecipe { | |||
return ListeningValue.get(name); | |||
} | |||
/** | |||
* 获取校准值系数 | |||
* | |||
* @param ch 要获取的通道号 | |||
* @return | |||
*/ | |||
public static float getCalibrationValueXS(int ch) { | |||
if (!ListeningValue.containsKey("出料系数"+ch)) | |||
return 1.0F; | |||
float k=Float.parseFloat(ListeningValue.get(ch).toString()); | |||
return k==0?1.0F:k; | |||
} | |||
/** | |||
* 读取状态 | |||
*/ | |||
public static void ReadPLCStatus() { | |||
try { | |||
if (ConfigName.getInstance().PlcIsConnect) { | |||
ModbusTcpServer.get().ReadStatus("VW354", 1, data -> { | |||
for (int i = 0; i < data.length; i++) { | |||
byte status = data[i];//0x92 | |||
IoStatus.put(i * 8 + 0, ByteHelper.getBit(status, 0) == 1); | |||
IoStatus.put(i * 8 + 1, ByteHelper.getBit(status, 1) == 1); | |||
IoStatus.put(i * 8 + 2, ByteHelper.getBit(status, 2) == 1); | |||
IoStatus.put(i * 8 + 3, ByteHelper.getBit(status, 3) == 1); | |||
IoStatus.put(i * 8 + 4, ByteHelper.getBit(status, 4) == 1); | |||
IoStatus.put(i * 8 + 5, ByteHelper.getBit(status, 5) == 1); | |||
IoStatus.put(i * 8 + 6, ByteHelper.getBit(status, 6) == 1); | |||
IoStatus.put(i * 8 + 7, ByteHelper.getBit(status, 7) == 1); | |||
} | |||
}); | |||
if (ConfigName.getInstance().PLC_Address.containsKey("实时状态")) { | |||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get("实时状态"); | |||
if (!plcaddress.address.isEmpty() && ConfigName.getInstance().PlcIsConnect) { | |||
ModbusTcpServer.get().ReadStatus(plcaddress.address, 4, (data) -> { | |||
for (int i = 0; i < data.length; i++) { | |||
byte status=data[i];//0x92 | |||
IoStatus.put(i*8+0, ByteHelper.getBit(status,0)==1); | |||
IoStatus.put(i*8+1, ByteHelper.getBit(status,1)==1); | |||
IoStatus.put(i*8+2, ByteHelper.getBit(status,2)==1); | |||
IoStatus.put(i*8+3, ByteHelper.getBit(status,3)==1); | |||
IoStatus.put(i*8+4, ByteHelper.getBit(status,4)==1); | |||
IoStatus.put(i*8+5, ByteHelper.getBit(status,5)==1); | |||
IoStatus.put(i*8+6, ByteHelper.getBit(status,6)==1); | |||
IoStatus.put(i*8+7, ByteHelper.getBit(status,7)==1); | |||
} | |||
}); | |||
} | |||
} | |||
} catch (Exception ex) { | |||
ToastUtils.error("异常信息:" + ex.getMessage()); | |||
} finally { | |||
} | |||
} | |||
/** | |||
* 读取扫码信息 | |||
*/ | |||
public static void ReadCode() { | |||
try { | |||
if (ConfigName.getInstance().PLC_Address.containsKey("扫码数据")) { | |||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get("扫码数据"); | |||
if (!plcaddress.address.isEmpty() && ConfigName.getInstance().PlcIsConnect) { | |||
ModbusTcpServer.get().ReadString(plcaddress.address, 40, (data) -> { | |||
if (!Code.equals(data)) { | |||
if (!data.isEmpty() && OnScanTheCodeInformationT != null) { | |||
ToastUtils.error("当前扫码信息:" + data); | |||
} | |||
Code = data; | |||
} | |||
}); | |||
} | |||
} | |||
} catch (Exception ex) { | |||
ToastUtils.error("异常信息:" + ex.getMessage()); | |||
} finally { | |||
} | |||
} | |||
/** | |||
* 信号检测 | |||
*/ | |||
public static void ChargeSignal() { | |||
try { | |||
//配料完成 M0.3 | |||
CompleteListen("配料完成", OnChargeMixtureCompleteNotify); | |||
//按钮状态 M0.5 | |||
CompleteListen( "按钮启动", OnIngredientButtonPressedNotify); | |||
//校准校正完成信号 M0.7 | |||
CompleteListen( "校准完成", OnChargeMixtureComNotPar); | |||
} catch (Exception ex) { | |||
ToastUtils.error("异常信息:" + ex.getMessage()); | |||
} finally { | |||
} | |||
} | |||
/** | |||
* 完成信号监听 | |||
* | |||
* @param name 监听 KEY | |||
* @param callback 执行委托 | |||
*/ | |||
private static void CompleteListen(String name, IRun callback) { | |||
if (ConfigName.getInstance().PLC_Address.containsKey(name)) { | |||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(name); | |||
if (!plcaddress.address.isEmpty() && ConfigName.getInstance().PlcIsConnect) { | |||
ModbusTcpServer.get().ReadBool(plcaddress.address, 1, booleans -> { | |||
RTrig.get(name).Start(booleans[0], () -> { | |||
if (callback != null) | |||
callback.Run(); | |||
}); | |||
}); | |||
} | |||
} | |||
} | |||
//endregion | |||
//region 获取基础挡位变量 | |||
@@ -1025,4 +1197,86 @@ public class ExecuteTheRecipe { | |||
} | |||
} | |||
//endregion | |||
//region 电子称校验 | |||
/** | |||
* 启动校验模式 | |||
*/ | |||
public static boolean StartJiaoYanMode() | |||
{ | |||
final boolean[] issucess1 = {false}; | |||
final boolean[] issucess2 = {false}; | |||
final boolean[] issucess3 = {false}; | |||
//写校准模式 | |||
WritePLC("砝码校准模式", true, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
issucess1[0] =true; | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
} | |||
}); | |||
WritePLC("打开写保护", true, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
issucess2[0] =true; | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
} | |||
}); | |||
WritePLC("零点校准", true, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
issucess3[0] =true; | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
} | |||
}); | |||
return issucess1[0] && issucess2[0]&& issucess3[0]; | |||
} | |||
/** | |||
* 停止校验模式 | |||
*/ | |||
public static boolean StopJiaoYanMode() | |||
{ | |||
final boolean[] issucess1 = {false}; | |||
final boolean[] issucess2 = {false}; | |||
//写校准模式 | |||
WritePLC("砝码校准模式", false, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
issucess1[0] =true; | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
} | |||
}); | |||
WritePLC("打开写保护", false, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
issucess2[0] =true; | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
} | |||
}); | |||
return issucess1[0] && issucess2[0]; | |||
} | |||
//endregion | |||
} |
@@ -244,136 +244,186 @@ public class ConfigName { | |||
*/ | |||
public List<Res_PLCADDRESS> PlcAddress_奶茶机 = new ArrayList<Res_PLCADDRESS>() {{ | |||
//硬件设备 初始化 | |||
add(new Res_PLCADDRESS("硬件设备", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("初始化", "M10.0", 1, 1)); | |||
add(new Res_PLCADDRESS("停止", "M10.1", 1, 1)); | |||
add(new Res_PLCADDRESS("复位", "M10.2", 0, 1)); | |||
//搅拌模型 | |||
add(new Res_PLCADDRESS("模型控制", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("搅拌", "M10.3", 0, 1)); | |||
add(new Res_PLCADDRESS("搅拌速度", "VW102", 1, 1)); | |||
//翻转正转模型 | |||
add(new Res_PLCADDRESS("翻转正转", "M10.4", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转反转", "M10.5", 0, 1)); | |||
add(new Res_PLCADDRESS("转动速度", "VW104", 1, 1)); | |||
//加热模型 | |||
add(new Res_PLCADDRESS("加热", "M10.6", 0, 1)); | |||
add(new Res_PLCADDRESS("加热功率", "VW100", 1, 1)); | |||
//主料 | |||
add(new Res_PLCADDRESS("主料", "M17.4", 0, 1)); | |||
//抽水放水 | |||
add(new Res_PLCADDRESS("炒锅抽水", "M10.7", 0, 1)); | |||
add(new Res_PLCADDRESS("炒锅放水", "M11.0", 0, 1)); | |||
//出菜模型 | |||
add(new Res_PLCADDRESS("出菜", "M11.5", 0, 1)); | |||
//位置动作 | |||
add(new Res_PLCADDRESS("原点位", "M11.4", 0, 1)); | |||
add(new Res_PLCADDRESS("倒菜位", "M12.7", 0, 1)); | |||
add(new Res_PLCADDRESS("抽料位", "M11.7", 0, 1)); | |||
add(new Res_PLCADDRESS("清洗位", "M13.0", 0, 1)); | |||
add(new Res_PLCADDRESS("炒菜位1", "M12.0", 0, 1)); | |||
add(new Res_PLCADDRESS("炒菜位2", "M12.1", 0, 1)); | |||
add(new Res_PLCADDRESS("炒菜位3", "M12.2", 0, 1)); | |||
add(new Res_PLCADDRESS("出餐启动", "M11.5", 0, 1)); | |||
add(new Res_PLCADDRESS("炒锅清洗", "M11.6", 0, 1)); | |||
//液体料模型 | |||
add(new Res_PLCADDRESS("料仓校准", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("校准时间", "VW112", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓1校准开关", "M12.3", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓1校准值", "VW114", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓2校准开关", "M12.4", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓2校准值", "VW116", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓3校准开关", "M12.5", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓3校准值", "VW118", 1, 1)); | |||
add(new Res_PLCADDRESS("开始校正", "M12.6", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓自动", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("料仓1需求值", "VW106", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓1下料", "M11.1", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓2需求值", "VW108", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓2下料", "M11.2", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓3需求值", "VW110", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓3下料", "M11.3", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓手动", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("料仓1手动开关", "M13.1", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓2手动开关", "M13.2", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓3手动开关", "M13.3", 1, 1)); | |||
//上下限 | |||
add(new Res_PLCADDRESS("位置上下限", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("原点位置下限", "VD150", 1, 1)); | |||
add(new Res_PLCADDRESS("原点位置上限", "VD154", 1, 1)); | |||
add(new Res_PLCADDRESS("洗锅位置下限", "VD158", 1, 1)); | |||
add(new Res_PLCADDRESS("洗锅位置上限", "VD162", 1, 1)); | |||
add(new Res_PLCADDRESS("倒菜位置下限", "VD166", 1, 1)); | |||
add(new Res_PLCADDRESS("倒菜位置上限", "VD170", 1, 1)); | |||
add(new Res_PLCADDRESS("抽调料位置下限", "VD174", 1, 1)); | |||
add(new Res_PLCADDRESS("抽调料位置上限", "VD178", 1, 1)); | |||
add(new Res_PLCADDRESS("1#炒制位置下限", "VD182", 1, 1)); | |||
add(new Res_PLCADDRESS("1#炒制位置上限", "VD186", 1, 1)); | |||
add(new Res_PLCADDRESS("2#炒制位置下限", "VD190", 1, 1)); | |||
add(new Res_PLCADDRESS("2#炒制位置上限", "VD194", 1, 1)); | |||
add(new Res_PLCADDRESS("3#炒制位置下限", "VD198", 1, 1)); | |||
add(new Res_PLCADDRESS("3#炒制位置上限", "VD202", 1, 1)); | |||
add(new Res_PLCADDRESS("炒锅工作范围下限", "VD206", 1, 1)); | |||
add(new Res_PLCADDRESS("炒锅工作范围上限", "VD210", 1, 1)); | |||
//反馈信号 | |||
add(new Res_PLCADDRESS("反馈信号", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("初始化完成", "M40.0", 1, 0)); | |||
add(new Res_PLCADDRESS("设备急停", "M40.1", 1, 0)); | |||
add(new Res_PLCADDRESS("原点位反馈", "M40.2", 1, 0)); | |||
add(new Res_PLCADDRESS("抽料位反馈", "M40.3", 1, 0)); | |||
add(new Res_PLCADDRESS("炒菜位1反馈", "M40.4", 1, 0)); | |||
add(new Res_PLCADDRESS("炒菜位2反馈", "M40.5", 1, 0)); | |||
add(new Res_PLCADDRESS("炒菜位3反馈", "M40.6", 1, 0)); | |||
add(new Res_PLCADDRESS("倒菜位反馈", "M40.7", 1, 0)); | |||
add(new Res_PLCADDRESS("投料位反馈", "M41.0", 1, 0)); | |||
add(new Res_PLCADDRESS("清洗位反馈", "M41.1", 1, 0)); | |||
add(new Res_PLCADDRESS("料仓1下料完成", "M41.2", 1, 0)); | |||
add(new Res_PLCADDRESS("料仓2下料完成", "M41.3", 1, 0)); | |||
add(new Res_PLCADDRESS("料仓3下料完成", "M41.4", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅清洗反馈", "M41.5", 1, 0)); | |||
add(new Res_PLCADDRESS("出餐启动反馈", "M41.6", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅倒菜减速位", "M41.7", 1, 0)); | |||
//检测信号 | |||
add(new Res_PLCADDRESS("监测信号", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("当前锅底温度", "VD300", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅搅拌转速", "VD304", 1, 0)); | |||
add(new Res_PLCADDRESS("当前加热档位", "VD308", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅当前电压", "VD312", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅当前电流", "VD316", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅当前功率", "VD320", 1, 0)); | |||
add(new Res_PLCADDRESS("搅拌频率", "VW324", 1, 0)); | |||
add(new Res_PLCADDRESS("搅拌电机电流", "VW326", 1, 0)); | |||
add(new Res_PLCADDRESS("搅拌电机电压", "VW328", 1, 0)); | |||
add(new Res_PLCADDRESS("搅拌变频器温度", "VW330", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转频率", "VW332", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转电机电流", "VW334", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转电机电压", "VW336", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转变频器温度", "VW338", 1, 0)); | |||
add(new Res_PLCADDRESS("编码器当前位值", "VD340", 1, 0)); | |||
//状态上报 | |||
add(new Res_PLCADDRESS("状态上报", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("搅拌电机", "VW350", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转电机", "VW352", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅", "VW354", 1, 0)); | |||
//通道校准 | |||
add(new Res_PLCADDRESS("通道校准", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("校准值1", "VW0", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值2", "VW2", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值3", "VW4", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值4", "VW6", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值5", "VW8", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值6", "VW10", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值7", "VW12", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值8", "VW14", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值9", "VW16", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值10", "VW18", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值11", "VW20", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值12", "VW22", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值13", "VW24", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值14", "VW26", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值15", "VW28", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值16", "VW30", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值17", "VW32", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值18", "VW34", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值19", "VW36", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值20", "VW38", 1, 1)); | |||
add(new Res_PLCADDRESS("通道1校准开关", "M2.0", 1, 1)); | |||
add(new Res_PLCADDRESS("通道2校准开关", "M2.1", 1, 1)); | |||
add(new Res_PLCADDRESS("通道3校准开关", "M2.2", 1, 1)); | |||
add(new Res_PLCADDRESS("通道4校准开关", "M2.3", 1, 1)); | |||
add(new Res_PLCADDRESS("通道5校准开关", "M2.4", 1, 1)); | |||
add(new Res_PLCADDRESS("通道6校准开关", "M2.5", 1, 1)); | |||
add(new Res_PLCADDRESS("通道7校准开关", "M2.6", 1, 1)); | |||
add(new Res_PLCADDRESS("通道8校准开关", "M2.7", 1, 1)); | |||
add(new Res_PLCADDRESS("通道9校准开关", "M3.0", 1, 1)); | |||
add(new Res_PLCADDRESS("通道10校准开关", "M3.1", 1, 1)); | |||
add(new Res_PLCADDRESS("通道11校准开关", "M3.2", 1, 1)); | |||
add(new Res_PLCADDRESS("通道12校准开关", "M3.3", 1, 1)); | |||
add(new Res_PLCADDRESS("通道13校准开关", "M3.4", 1, 1)); | |||
add(new Res_PLCADDRESS("通道14校准开关", "M3.5", 1, 1)); | |||
add(new Res_PLCADDRESS("通道15校准开关", "M3.6", 1, 1)); | |||
add(new Res_PLCADDRESS("通道16校准开关", "M3.7", 1, 1)); | |||
add(new Res_PLCADDRESS("通道17校准开关", "M4.0", 1, 1)); | |||
add(new Res_PLCADDRESS("通道18校准开关", "M4.1", 1, 1)); | |||
add(new Res_PLCADDRESS("通道19校准开关", "M4.2", 1, 1)); | |||
add(new Res_PLCADDRESS("通道20校准开关", "M4.3", 1, 1)); | |||
add(new Res_PLCADDRESS("反转时间", "VW94", 0, 1)); | |||
add(new Res_PLCADDRESS("基准时间", "VW98", 0, 1)); | |||
add(new Res_PLCADDRESS("通道校准", "M0.0", 0, 1)); | |||
add(new Res_PLCADDRESS("校准完成", "M0.7", 1, 0)); | |||
add(new Res_PLCADDRESS("出料系数1", "VR400", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数2", "VR404", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数3", "VR408", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数4", "VR412", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数5", "VR416", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数6", "VR420", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数7", "VR424", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数8", "VR428", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数9", "VR432", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数10", "VR436", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数11", "VR440", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数12", "VR444", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数13", "VR448", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数14", "VR452", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数15", "VR456", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数16", "VR460", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数17", "VR464", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数18", "VR468", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数19", "VR472", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数20", "VR476", 1, 1)); | |||
//模拟出料 | |||
add(new Res_PLCADDRESS("模拟出料", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("需求值1", "VW100", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值2", "VW102", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值3", "VW104", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值4", "VW106", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值5", "VW108", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值6", "VW110", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值7", "VW112", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值8", "VW114", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值9", "VW116", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值10", "VW118", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值11", "VW120", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值12", "VW122", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值13", "VW124", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值14", "VW126", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值15", "VW128", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值16", "VW130", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值17", "VW132", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值18", "VW134", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值19", "VW136", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值20", "VW138", 1, 1)); | |||
add(new Res_PLCADDRESS("配料启动", "M0.1", 0, 1)); | |||
add(new Res_PLCADDRESS("手自切换", "M0.2", 1, 1)); | |||
add(new Res_PLCADDRESS("配料完成", "M0.3", 1, 0)); | |||
add(new Res_PLCADDRESS("按钮启动", "M0.5", 1, 0)); | |||
//出料算法补偿 | |||
add(new Res_PLCADDRESS("出料算法补偿", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("低系数1", "VW44", 1, 1)); | |||
add(new Res_PLCADDRESS("低系数2", "VW46", 1, 1)); | |||
add(new Res_PLCADDRESS("低系数3", "VW48", 1, 1)); | |||
add(new Res_PLCADDRESS("低系数4", "VW50", 1, 1)); | |||
add(new Res_PLCADDRESS("低系数5", "VW52", 1, 1)); | |||
add(new Res_PLCADDRESS("低系数6", "VW54", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数1", "VW144", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数2", "VW146", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数3", "VW148", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数4", "VW150", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数5", "VW152", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数6", "VW154", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿1时间", "VW168", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿2时间", "VW170", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿3时间", "VW172", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿4时间", "VW174", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿5时间", "VW176", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿6时间", "VW178", 1, 1)); | |||
add(new Res_PLCADDRESS("通道1补偿开关", "V194.0", 1, 1)); | |||
add(new Res_PLCADDRESS("通道2补偿开关", "V194.1", 1, 1)); | |||
add(new Res_PLCADDRESS("通道3补偿开关", "V194.2", 1, 1)); | |||
add(new Res_PLCADDRESS("通道4补偿开关", "V194.3", 1, 1)); | |||
add(new Res_PLCADDRESS("通道5补偿开关", "V194.4", 1, 1)); | |||
add(new Res_PLCADDRESS("通道6补偿开关", "V194.5", 1, 1)); | |||
//电子秤校验 | |||
add(new Res_PLCADDRESS("电子秤校验", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("称当前重量", "VD344", 1, 0)); | |||
add(new Res_PLCADDRESS("砝码值", "VW96", 1, 1)); | |||
add(new Res_PLCADDRESS("砝码校准模式", "M1.0", 1, 1)); | |||
add(new Res_PLCADDRESS("重量清零", "M1.1", 0, 1)); | |||
add(new Res_PLCADDRESS("关闭写保护", "M1.2", 0, 1)); | |||
add(new Res_PLCADDRESS("零点校准", "M1.3", 0, 1)); | |||
add(new Res_PLCADDRESS("砝码值写入", "M1.4", 0, 1)); | |||
add(new Res_PLCADDRESS("打开写保护", "M1.5", 0, 1)); | |||
//温度监控 | |||
add(new Res_PLCADDRESS("温度控制", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("水池温度", "VD352", 1, 0)); | |||
add(new Res_PLCADDRESS("水池温度设置", "VD360", 1, 1)); | |||
//手动控制 | |||
add(new Res_PLCADDRESS("手动控制", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("M_外置仓1正转", "M50.0", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓2正转", "M50.1", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓3正转", "M50.2", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓4正转", "M50.3", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓5正转", "M50.4", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓6正转", "M50.5", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓1反转", "M50.6", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓2反转", "M50.7", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓3反转", "M51.0", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓4反转", "M51.1", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓5反转", "M51.2", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓6反转", "M51.3", 1, 1)); | |||
add(new Res_PLCADDRESS("M_粉料通道1", "M51.4", 1, 1)); | |||
add(new Res_PLCADDRESS("M_粉料通道2", "M51.5", 1, 1)); | |||
add(new Res_PLCADDRESS("M_粉料通道3", "M51.6", 1, 1)); | |||
add(new Res_PLCADDRESS("M_酱油通道", "M51.7", 1, 1)); | |||
add(new Res_PLCADDRESS("M_醋通道", "M52.0", 1, 1)); | |||
add(new Res_PLCADDRESS("M_猪油通道", "M52.1", 1, 1)); | |||
add(new Res_PLCADDRESS("M_牛油通道", "M52.2", 1, 1)); | |||
add(new Res_PLCADDRESS("M_保温池进水阀", "M53.4", 1, 1)); | |||
add(new Res_PLCADDRESS("M_保温池排水阀", "M53.5", 1, 1)); | |||
add(new Res_PLCADDRESS("M_猪油管道保温", "M53.6", 1, 1)); | |||
add(new Res_PLCADDRESS("M_牛油管道保温", "M53.7", 1, 1)); | |||
add(new Res_PLCADDRESS("M_保温池加热", "M54.0", 1, 1)); | |||
add(new Res_PLCADDRESS("M_三色灯-绿", "M54.1", 1, 1)); | |||
add(new Res_PLCADDRESS("M_三色灯-红", "M54.2", 1, 1)); | |||
add(new Res_PLCADDRESS("扫码数据读取", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("扫码数据", "VW702", 1, 0)); | |||
add(new Res_PLCADDRESS("实时状态读取", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("实时状态", "VW500", 1, 0)); | |||
}}; | |||
/** | |||
* 奶茶机工序模型 | |||
@@ -411,195 +461,186 @@ public class ConfigName { | |||
*/ | |||
public List<Res_PLCADDRESS> PlcAddress_配料吧台 = new ArrayList<Res_PLCADDRESS>() {{ | |||
//硬件设备 初始化 | |||
add(new Res_PLCADDRESS("硬件设备", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("初始化", "M10.0", 1, 1)); | |||
add(new Res_PLCADDRESS("停止", "M10.1", 1, 1)); | |||
add(new Res_PLCADDRESS("复位", "M10.2", 0, 1)); | |||
//搅拌模型 | |||
add(new Res_PLCADDRESS("模型控制", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("搅拌", "M10.3", 0, 1)); | |||
add(new Res_PLCADDRESS("搅拌速度", "VW102", 1, 1)); | |||
//翻转正转模型 | |||
add(new Res_PLCADDRESS("翻转正转", "M10.4", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转反转", "M10.5", 0, 1)); | |||
add(new Res_PLCADDRESS("转动速度", "VW104", 1, 1)); | |||
//加热模型 | |||
add(new Res_PLCADDRESS("加热", "M10.6", 0, 1)); | |||
add(new Res_PLCADDRESS("加热功率", "VW100", 1, 1)); | |||
//主料 | |||
add(new Res_PLCADDRESS("主料", "M17.4", 0, 1)); | |||
//抽水放水 | |||
add(new Res_PLCADDRESS("炒锅抽水", "M10.7", 0, 1)); | |||
add(new Res_PLCADDRESS("炒锅放水", "M11.0", 0, 1)); | |||
//出菜模型 | |||
add(new Res_PLCADDRESS("出菜", "M11.5", 0, 1)); | |||
//位置动作 | |||
add(new Res_PLCADDRESS("原点位", "M11.4", 0, 1)); | |||
add(new Res_PLCADDRESS("倒菜位", "M12.7", 0, 1)); | |||
add(new Res_PLCADDRESS("抽料位", "M11.7", 0, 1)); | |||
add(new Res_PLCADDRESS("清洗位", "M13.0", 0, 1)); | |||
add(new Res_PLCADDRESS("炒菜位1", "M12.0", 0, 1)); | |||
add(new Res_PLCADDRESS("炒菜位2", "M12.1", 0, 1)); | |||
add(new Res_PLCADDRESS("炒菜位3", "M12.2", 0, 1)); | |||
add(new Res_PLCADDRESS("出餐启动", "M11.5", 0, 1)); | |||
add(new Res_PLCADDRESS("炒锅清洗", "M11.6", 0, 1)); | |||
//液体料模型 | |||
add(new Res_PLCADDRESS("料仓校准", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("校准时间", "VW112", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓1校准开关", "M12.3", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓1校准值", "VW114", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓2校准开关", "M12.4", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓2校准值", "VW116", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓3校准开关", "M12.5", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓3校准值", "VW118", 1, 1)); | |||
add(new Res_PLCADDRESS("开始校正", "M12.6", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓自动", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("料仓1需求值", "VW106", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓1下料", "M11.1", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓2需求值", "VW108", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓2下料", "M11.2", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓3需求值", "VW110", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓3下料", "M11.3", 0, 1)); | |||
add(new Res_PLCADDRESS("料仓手动", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("料仓1手动开关", "M13.1", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓2手动开关", "M13.2", 1, 1)); | |||
add(new Res_PLCADDRESS("料仓3手动开关", "M13.3", 1, 1)); | |||
//上下限 | |||
add(new Res_PLCADDRESS("位置上下限", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("原点位置下限", "VD150", 1, 1)); | |||
add(new Res_PLCADDRESS("原点位置上限", "VD154", 1, 1)); | |||
add(new Res_PLCADDRESS("洗锅位置下限", "VD158", 1, 1)); | |||
add(new Res_PLCADDRESS("洗锅位置上限", "VD162", 1, 1)); | |||
add(new Res_PLCADDRESS("倒菜位置下限", "VD166", 1, 1)); | |||
add(new Res_PLCADDRESS("倒菜位置上限", "VD170", 1, 1)); | |||
add(new Res_PLCADDRESS("抽调料位置下限", "VD174", 1, 1)); | |||
add(new Res_PLCADDRESS("抽调料位置上限", "VD178", 1, 1)); | |||
add(new Res_PLCADDRESS("1#炒制位置下限", "VD182", 1, 1)); | |||
add(new Res_PLCADDRESS("1#炒制位置上限", "VD186", 1, 1)); | |||
add(new Res_PLCADDRESS("2#炒制位置下限", "VD190", 1, 1)); | |||
add(new Res_PLCADDRESS("2#炒制位置上限", "VD194", 1, 1)); | |||
add(new Res_PLCADDRESS("3#炒制位置下限", "VD198", 1, 1)); | |||
add(new Res_PLCADDRESS("3#炒制位置上限", "VD202", 1, 1)); | |||
add(new Res_PLCADDRESS("炒锅工作范围下限", "VD206", 1, 1)); | |||
add(new Res_PLCADDRESS("炒锅工作范围上限", "VD210", 1, 1)); | |||
//自动投料-平移轴 | |||
add(new Res_PLCADDRESS("平移轴控制", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("平移-伺服当前值", "VD220", 1, 1)); | |||
add(new Res_PLCADDRESS("平移-点动速度", "VD224", 1, 1)); | |||
add(new Res_PLCADDRESS("平移-回原点速度", "VD228", 1, 1)); | |||
add(new Res_PLCADDRESS("平移-定位运行速度", "VD232", 1, 1)); | |||
add(new Res_PLCADDRESS("平移-点动正转", "M14.0", 0, 1)); | |||
add(new Res_PLCADDRESS("平移-点动反转", "M14.1", 0, 1)); | |||
add(new Res_PLCADDRESS("平移-回原点", "M14.2", 0, 1)); | |||
add(new Res_PLCADDRESS("平移-去1号位", "M14.3", 0, 1)); | |||
add(new Res_PLCADDRESS("平移-去2号位", "M14.4", 0, 1)); | |||
add(new Res_PLCADDRESS("平移-去3号位", "M14.5", 0, 1)); | |||
add(new Res_PLCADDRESS("平移-去4号位", "M14.6", 0, 1)); | |||
add(new Res_PLCADDRESS("平移-1号位置值", "VD236", 1, 1)); | |||
add(new Res_PLCADDRESS("平移-1#位置设定", "M15.0", 0, 1)); | |||
add(new Res_PLCADDRESS("平移-2号位置值", "VD240", 1, 1)); | |||
add(new Res_PLCADDRESS("平移-2#位置设定", "M15.1", 0, 1)); | |||
add(new Res_PLCADDRESS("平移-3号位置值", "VD244", 1, 1)); | |||
add(new Res_PLCADDRESS("平移-3#位置设定", "M15.2", 0, 1)); | |||
add(new Res_PLCADDRESS("平移-4号位置值", "VD248", 1, 1)); | |||
add(new Res_PLCADDRESS("平移-4#位置设定", "M15.3", 0, 1)); | |||
//自动投料-翻转轴 | |||
add(new Res_PLCADDRESS("翻转轴控制", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("翻转-伺服当前值", "VD260", 1, 1)); | |||
add(new Res_PLCADDRESS("翻转-点动速度", "VD264", 1, 1)); | |||
add(new Res_PLCADDRESS("翻转-回原点速度", "VD268", 1, 1)); | |||
add(new Res_PLCADDRESS("翻转-定位运行速度", "VD272", 1, 1)); | |||
add(new Res_PLCADDRESS("翻转-点动正转", "M16.0", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转-点动反转", "M16.1", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转-回原点", "M16.2", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转-去1号位", "M16.3", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转-去2号位", "M16.4", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转-去3号位", "M16.5", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转-去4号位", "M16.6", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转-1号位置值", "VD276", 1, 1)); | |||
add(new Res_PLCADDRESS("翻转-1#位置设定", "M17.0", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转-2号位置值", "VD280", 1, 1)); | |||
add(new Res_PLCADDRESS("翻转-2#位置设定", "M17.1", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转-3号位置值", "VD284", 1, 1)); | |||
add(new Res_PLCADDRESS("翻转-3#位置设定", "M17.2", 0, 1)); | |||
add(new Res_PLCADDRESS("翻转-4号位置值", "VD288", 1, 1)); | |||
add(new Res_PLCADDRESS("翻转-4#位置设定", "M17.3", 0, 1)); | |||
add(new Res_PLCADDRESS("倒菜启动", "M17.4", 0, 1)); | |||
add(new Res_PLCADDRESS("磁铁吸合", "M17.5", 0, 1)); | |||
//反馈信号 | |||
add(new Res_PLCADDRESS("反馈信号", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("初始化完成", "M40.0", 1, 0)); | |||
add(new Res_PLCADDRESS("设备急停", "M40.1", 1, 0)); | |||
add(new Res_PLCADDRESS("原点位反馈", "M40.2", 1, 0)); | |||
add(new Res_PLCADDRESS("抽料位反馈", "M40.3", 1, 0)); | |||
add(new Res_PLCADDRESS("炒菜位1反馈", "M40.4", 1, 0)); | |||
add(new Res_PLCADDRESS("炒菜位2反馈", "M40.5", 1, 0)); | |||
add(new Res_PLCADDRESS("炒菜位3反馈", "M40.6", 1, 0)); | |||
add(new Res_PLCADDRESS("倒菜位反馈", "M40.7", 1, 0)); | |||
add(new Res_PLCADDRESS("投料位反馈", "M41.0", 1, 0)); | |||
add(new Res_PLCADDRESS("清洗位反馈", "M41.1", 1, 0)); | |||
add(new Res_PLCADDRESS("料仓1下料完成", "M41.2", 1, 0)); | |||
add(new Res_PLCADDRESS("料仓2下料完成", "M41.3", 1, 0)); | |||
add(new Res_PLCADDRESS("料仓3下料完成", "M41.4", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅清洗反馈", "M41.5", 1, 0)); | |||
add(new Res_PLCADDRESS("出餐启动反馈", "M41.6", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅倒菜减速位", "M41.7", 1, 0)); | |||
add(new Res_PLCADDRESS("平移轴在1号位", "M43.0", 1, 0)); | |||
add(new Res_PLCADDRESS("平移轴在2号位", "M43.1", 1, 0)); | |||
add(new Res_PLCADDRESS("平移轴在3号位", "M43.2", 1, 0)); | |||
add(new Res_PLCADDRESS("平移轴在4号位", "M43.3", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转轴在1号位", "M44.0", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转轴在2号位", "M44.1", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转轴在3号位", "M44.2", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转轴在4号位", "M44.3", 1, 0)); | |||
add(new Res_PLCADDRESS("倒菜完成", "M44.4", 1, 0)); | |||
//检测信号 | |||
add(new Res_PLCADDRESS("监测信号", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("当前锅底温度", "VD300", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅搅拌转速", "VD304", 1, 0)); | |||
add(new Res_PLCADDRESS("当前加热档位", "VD308", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅当前电压", "VD312", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅当前电流", "VD316", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅当前功率", "VD320", 1, 0)); | |||
add(new Res_PLCADDRESS("搅拌频率", "VW324", 1, 0)); | |||
add(new Res_PLCADDRESS("搅拌电机电流", "VW326", 1, 0)); | |||
add(new Res_PLCADDRESS("搅拌电机电压", "VW328", 1, 0)); | |||
add(new Res_PLCADDRESS("搅拌变频器温度", "VW330", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转频率", "VW332", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转电机电流", "VW334", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转电机电压", "VW336", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转变频器温度", "VW338", 1, 0)); | |||
add(new Res_PLCADDRESS("编码器当前位值", "VD340", 1, 0)); | |||
//状态上报 | |||
add(new Res_PLCADDRESS("状态上报", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("搅拌电机", "VW350", 1, 0)); | |||
add(new Res_PLCADDRESS("翻转电机", "VW352", 1, 0)); | |||
add(new Res_PLCADDRESS("炒锅", "VW354", 1, 0)); | |||
//通道校准 | |||
add(new Res_PLCADDRESS("通道校准", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("校准值1", "VW0", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值2", "VW2", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值3", "VW4", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值4", "VW6", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值5", "VW8", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值6", "VW10", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值7", "VW12", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值8", "VW14", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值9", "VW16", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值10", "VW18", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值11", "VW20", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值12", "VW22", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值13", "VW24", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值14", "VW26", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值15", "VW28", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值16", "VW30", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值17", "VW32", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值18", "VW34", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值19", "VW36", 1, 1)); | |||
add(new Res_PLCADDRESS("校准值20", "VW38", 1, 1)); | |||
add(new Res_PLCADDRESS("通道1校准开关", "M2.0", 1, 1)); | |||
add(new Res_PLCADDRESS("通道2校准开关", "M2.1", 1, 1)); | |||
add(new Res_PLCADDRESS("通道3校准开关", "M2.2", 1, 1)); | |||
add(new Res_PLCADDRESS("通道4校准开关", "M2.3", 1, 1)); | |||
add(new Res_PLCADDRESS("通道5校准开关", "M2.4", 1, 1)); | |||
add(new Res_PLCADDRESS("通道6校准开关", "M2.5", 1, 1)); | |||
add(new Res_PLCADDRESS("通道7校准开关", "M2.6", 1, 1)); | |||
add(new Res_PLCADDRESS("通道8校准开关", "M2.7", 1, 1)); | |||
add(new Res_PLCADDRESS("通道9校准开关", "M3.0", 1, 1)); | |||
add(new Res_PLCADDRESS("通道10校准开关", "M3.1", 1, 1)); | |||
add(new Res_PLCADDRESS("通道11校准开关", "M3.2", 1, 1)); | |||
add(new Res_PLCADDRESS("通道12校准开关", "M3.3", 1, 1)); | |||
add(new Res_PLCADDRESS("通道13校准开关", "M3.4", 1, 1)); | |||
add(new Res_PLCADDRESS("通道14校准开关", "M3.5", 1, 1)); | |||
add(new Res_PLCADDRESS("通道15校准开关", "M3.6", 1, 1)); | |||
add(new Res_PLCADDRESS("通道16校准开关", "M3.7", 1, 1)); | |||
add(new Res_PLCADDRESS("通道17校准开关", "M4.0", 1, 1)); | |||
add(new Res_PLCADDRESS("通道18校准开关", "M4.1", 1, 1)); | |||
add(new Res_PLCADDRESS("通道19校准开关", "M4.2", 1, 1)); | |||
add(new Res_PLCADDRESS("通道20校准开关", "M4.3", 1, 1)); | |||
add(new Res_PLCADDRESS("反转时间", "VW94", 0, 1)); | |||
add(new Res_PLCADDRESS("基准时间", "VW98", 0, 1)); | |||
add(new Res_PLCADDRESS("通道校准", "M0.0", 0, 1)); | |||
add(new Res_PLCADDRESS("校准完成", "M0.7", 1, 0)); | |||
add(new Res_PLCADDRESS("出料系数1", "VR400", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数2", "VR404", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数3", "VR408", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数4", "VR412", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数5", "VR416", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数6", "VR420", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数7", "VR424", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数8", "VR428", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数9", "VR432", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数10", "VR436", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数11", "VR440", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数12", "VR444", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数13", "VR448", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数14", "VR452", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数15", "VR456", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数16", "VR460", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数17", "VR464", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数18", "VR468", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数19", "VR472", 1, 1)); | |||
add(new Res_PLCADDRESS("出料系数20", "VR476", 1, 1)); | |||
//模拟出料 | |||
add(new Res_PLCADDRESS("模拟出料", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("需求值1", "VW100", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值2", "VW102", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值3", "VW104", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值4", "VW106", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值5", "VW108", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值6", "VW110", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值7", "VW112", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值8", "VW114", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值9", "VW116", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值10", "VW118", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值11", "VW120", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值12", "VW122", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值13", "VW124", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值14", "VW126", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值15", "VW128", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值16", "VW130", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值17", "VW132", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值18", "VW134", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值19", "VW136", 1, 1)); | |||
add(new Res_PLCADDRESS("需求值20", "VW138", 1, 1)); | |||
add(new Res_PLCADDRESS("配料启动", "M0.1", 0, 1)); | |||
add(new Res_PLCADDRESS("手自切换", "M0.2", 1, 1)); | |||
add(new Res_PLCADDRESS("配料完成", "M0.3", 1, 0)); | |||
add(new Res_PLCADDRESS("按钮启动", "M0.5", 1, 0)); | |||
//出料算法补偿 | |||
add(new Res_PLCADDRESS("出料算法补偿", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("低系数1", "VW44", 1, 1)); | |||
add(new Res_PLCADDRESS("低系数2", "VW46", 1, 1)); | |||
add(new Res_PLCADDRESS("低系数3", "VW48", 1, 1)); | |||
add(new Res_PLCADDRESS("低系数4", "VW50", 1, 1)); | |||
add(new Res_PLCADDRESS("低系数5", "VW52", 1, 1)); | |||
add(new Res_PLCADDRESS("低系数6", "VW54", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数1", "VW144", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数2", "VW146", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数3", "VW148", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数4", "VW150", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数5", "VW152", 1, 1)); | |||
add(new Res_PLCADDRESS("高系数6", "VW154", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿1时间", "VW168", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿2时间", "VW170", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿3时间", "VW172", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿4时间", "VW174", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿5时间", "VW176", 1, 1)); | |||
add(new Res_PLCADDRESS("补偿6时间", "VW178", 1, 1)); | |||
add(new Res_PLCADDRESS("通道1补偿开关", "V194.0", 1, 1)); | |||
add(new Res_PLCADDRESS("通道2补偿开关", "V194.1", 1, 1)); | |||
add(new Res_PLCADDRESS("通道3补偿开关", "V194.2", 1, 1)); | |||
add(new Res_PLCADDRESS("通道4补偿开关", "V194.3", 1, 1)); | |||
add(new Res_PLCADDRESS("通道5补偿开关", "V194.4", 1, 1)); | |||
add(new Res_PLCADDRESS("通道6补偿开关", "V194.5", 1, 1)); | |||
//电子秤校验 | |||
add(new Res_PLCADDRESS("电子秤校验", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("称当前重量", "VD344", 1, 0)); | |||
add(new Res_PLCADDRESS("砝码值", "VW96", 1, 1)); | |||
add(new Res_PLCADDRESS("砝码校准模式", "M1.0", 1, 1)); | |||
add(new Res_PLCADDRESS("重量清零", "M1.1", 0, 1)); | |||
add(new Res_PLCADDRESS("关闭写保护", "M1.2", 0, 1)); | |||
add(new Res_PLCADDRESS("零点校准", "M1.3", 0, 1)); | |||
add(new Res_PLCADDRESS("砝码值写入", "M1.4", 0, 1)); | |||
add(new Res_PLCADDRESS("打开写保护", "M1.5", 0, 1)); | |||
//温度监控 | |||
add(new Res_PLCADDRESS("温度控制", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("水池温度", "VD352", 1, 0)); | |||
add(new Res_PLCADDRESS("水池温度设置", "VD360", 1, 1)); | |||
//手动控制 | |||
add(new Res_PLCADDRESS("手动控制", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("M_外置仓1正转", "M50.0", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓2正转", "M50.1", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓3正转", "M50.2", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓4正转", "M50.3", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓5正转", "M50.4", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓6正转", "M50.5", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓1反转", "M50.6", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓2反转", "M50.7", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓3反转", "M51.0", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓4反转", "M51.1", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓5反转", "M51.2", 1, 1)); | |||
add(new Res_PLCADDRESS("M_外置仓6反转", "M51.3", 1, 1)); | |||
add(new Res_PLCADDRESS("M_粉料通道1", "M51.4", 1, 1)); | |||
add(new Res_PLCADDRESS("M_粉料通道2", "M51.5", 1, 1)); | |||
add(new Res_PLCADDRESS("M_粉料通道3", "M51.6", 1, 1)); | |||
add(new Res_PLCADDRESS("M_酱油通道", "M51.7", 1, 1)); | |||
add(new Res_PLCADDRESS("M_醋通道", "M52.0", 1, 1)); | |||
add(new Res_PLCADDRESS("M_猪油通道", "M52.1", 1, 1)); | |||
add(new Res_PLCADDRESS("M_牛油通道", "M52.2", 1, 1)); | |||
add(new Res_PLCADDRESS("M_保温池进水阀", "M53.4", 1, 1)); | |||
add(new Res_PLCADDRESS("M_保温池排水阀", "M53.5", 1, 1)); | |||
add(new Res_PLCADDRESS("M_猪油管道保温", "M53.6", 1, 1)); | |||
add(new Res_PLCADDRESS("M_牛油管道保温", "M53.7", 1, 1)); | |||
add(new Res_PLCADDRESS("M_保温池加热", "M54.0", 1, 1)); | |||
add(new Res_PLCADDRESS("M_三色灯-绿", "M54.1", 1, 1)); | |||
add(new Res_PLCADDRESS("M_三色灯-红", "M54.2", 1, 1)); | |||
add(new Res_PLCADDRESS("扫码数据读取", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("扫码数据", "VW702", 1, 0)); | |||
add(new Res_PLCADDRESS("实时状态读取", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("实时状态", "VW500", 1, 0)); | |||
}}; | |||
/** | |||
@@ -3,6 +3,7 @@ package com.bonait.bnframework.common.constant; | |||
import android.content.Intent; | |||
import com.bonait.bnframework.R; | |||
import com.bonait.bnframework.business.ExecuteTheRecipe; | |||
import com.bonait.bnframework.common.db.QueryDB; | |||
import com.bonait.bnframework.common.db.mode.BPA_ALERTLOG; | |||
import com.bonait.bnframework.common.db.mode.BPA_GOODS; | |||
@@ -13,12 +14,14 @@ import com.bonait.bnframework.common.db.mode.BPA_SUBORDER; | |||
import com.bonait.bnframework.common.db.res.MakeStatus; | |||
import com.bonait.bnframework.common.db.res.ResGoodsMake; | |||
import com.bonait.bnframework.common.db.res.ResGoodsRecipe; | |||
import com.bonait.bnframework.common.db.res.SilosLsjyMode; | |||
import com.bonait.bnframework.common.db.res.StatusMode; | |||
import com.bonait.bnframework.common.db.res.lcMode; | |||
import com.bonait.bnframework.common.helper.I.MyClickListener; | |||
import com.bonait.bnframework.common.helper.mode.OrderA; | |||
import com.bonait.bnframework.common.helper.mode.ResultA; | |||
import com.bonait.bnframework.modules.home.adapter.lc_adapter; | |||
import com.bonait.bnframework.modules.home.adapter.lsjy_adapter; | |||
import com.bonait.bnframework.modules.home.adapter.sp_adapter; | |||
import java.util.ArrayList; | |||
@@ -281,4 +284,45 @@ public class DataBus { | |||
*/ | |||
public ArrayList<ResGoodsRecipe> Recipe=new ArrayList<>(); | |||
//endregion | |||
//region 流速校验 | |||
public ArrayList<SilosLsjyMode> SilosLsjy = new ArrayList<SilosLsjyMode>(); | |||
public lsjy_adapter lsjyAdapter=null; | |||
/** | |||
* 获取流速料仓数据 | |||
*/ | |||
public void GetSilosLsjy() | |||
{ | |||
try { | |||
SilosLsjy=new ArrayList<>(); | |||
//获取料仓数据 | |||
ArrayList<BPA_SILOS> bpa_silos = QueryDB.GetSilosALL(); | |||
//加载materials数据 | |||
if (bpa_silos.size() > 0) { | |||
for (BPA_SILOS silo : bpa_silos) { | |||
List<BPA_MATERIAL> m = QueryDB.GetMaterialBySilosID(silo.id); | |||
SilosLsjyMode mode=new SilosLsjyMode(); | |||
mode.num= silo.num; | |||
mode.name= silo.name; | |||
mode.materialName=m.size() > 0?m.get(0).name:"未设置"; | |||
mode.xs= ExecuteTheRecipe.getCalibrationValueXS(silo.num)+""; | |||
Object kg=ExecuteTheRecipe.getListingValue("通道"+silo.num+"校准开关"); | |||
Object _val=ExecuteTheRecipe.getListingValue("校准值"+silo.num); | |||
short val=_val==null?0:(short)_val; | |||
String s = String.valueOf(val); | |||
mode.jzkg= kg==null?false:(boolean) kg; | |||
mode.Value= String.format("%.1f", (Double.parseDouble(s) / 10)); | |||
SilosLsjy.add(mode); | |||
} | |||
} | |||
if (lsjyAdapter!=null) | |||
{ | |||
lsjyAdapter.refresh(); | |||
} | |||
} catch (Exception e) { | |||
e.printStackTrace(); | |||
} | |||
} | |||
//endregion | |||
} |
@@ -0,0 +1,20 @@ | |||
package com.bonait.bnframework.common.db.res; | |||
public class SilosLsjyMode { | |||
//料仓编号:1、2、3 | |||
public int num; | |||
//料仓名称 | |||
public String name; | |||
//PLC控制信号量 | |||
public String plcValue; | |||
//PLC校准信号量 | |||
public String plcjzValue; | |||
//物料名称 | |||
public String materialName; | |||
//系数 | |||
public String xs; | |||
//校准开关 | |||
public boolean jzkg; | |||
//通道校准值 | |||
public String Value; | |||
} |
@@ -133,4 +133,17 @@ public class ByteHelper { | |||
return bit; | |||
} | |||
public static short setBit(short num, int position, boolean value) { | |||
if (position < 0 || position > 15) { | |||
return num; | |||
} | |||
if (value) { | |||
num |= (1 << position); | |||
} else { | |||
num &= ~(1 << position); | |||
} | |||
return num; | |||
} | |||
} |
@@ -384,9 +384,42 @@ public class ModbusTcpServer { | |||
try { | |||
ReadHoldingRegistersResponse res = ModbusTcpHelper.get().syncReadHoldingRegisters(1, add, length); | |||
byte[] data = res.getData(); | |||
byte[] tempData = new byte[6]; | |||
byte[] tempData = new byte[8]; | |||
tempData[0] = data[1]; | |||
tempData[1] = data[0]; | |||
tempData[2] = data[3]; | |||
tempData[3] = data[2]; | |||
tempData[4] = data[5]; | |||
tempData[5] = data[4]; | |||
tempData[6] = data[7]; | |||
tempData[7] = data[6]; | |||
if (callback != null) callback.onSuccess(tempData); | |||
} catch (InterruptedException e) { | |||
MessageLog.ShowError("ReadShort onFailure,Address=" + Address + ",length=" + length + ",msg:" + e.toString()); | |||
} catch (ExecutionException e) { | |||
MessageLog.ShowError("ReadShort onFailure,Address=" + Address + ",length=" + length + ",msg:" + e.toString()); | |||
} catch (ModbusTransportException e) { | |||
MessageLog.ShowError("ReadShort onFailure,Address=" + Address + ",length=" + length + ",msg:" + e.toString()); | |||
} catch (ModbusInitException e) { | |||
MessageLog.ShowError("ReadShort onFailure,Address=" + Address + ",length=" + length + ",msg:" + e.toString()); | |||
} catch (ModbusRespException e) { | |||
MessageLog.ShowError("ReadShort onFailure,Address=" + Address + ",length=" + length + ",msg:" + e.toString()); | |||
} | |||
} | |||
/** | |||
* 读取补偿算法 | |||
* @param Address | |||
* @param length | |||
* @param callback | |||
*/ | |||
public void ReadbcStatus(String Address, int length, IReadCallBack<byte[]> callback) { | |||
int add = GetAddress(Address); | |||
if (add < 0) return; | |||
try { | |||
ReadHoldingRegistersResponse res = ModbusTcpHelper.get().syncReadHoldingRegisters(1, add, length); | |||
byte[] data = res.getData(); | |||
byte[] tempData = new byte[1]; | |||
tempData[0] = data[1]; | |||
if (callback != null) callback.onSuccess(tempData); | |||
} catch (InterruptedException e) { | |||
MessageLog.ShowError("ReadShort onFailure,Address=" + Address + ",length=" + length + ",msg:" + e.toString()); | |||
@@ -401,6 +434,7 @@ public class ModbusTcpServer { | |||
} | |||
} | |||
/*** | |||
*读取扫码数据 | |||
* @param Address the address | |||
@@ -413,11 +447,12 @@ public class ModbusTcpServer { | |||
try { | |||
ReadHoldingRegistersResponse res = ModbusTcpHelper.get().syncReadHoldingRegisters(1, add, length); | |||
byte[] data = res.getData(); | |||
byte[] data1 = Arrays.copyOfRange(data, 0, 18); | |||
byte[] data1 = Arrays.copyOfRange(data, 0, data.length); | |||
//36 GUID 18 Number | |||
String id = ""; | |||
try { | |||
byte[] tempdata = new byte[18]; | |||
byte[] tempdata = new byte[data.length]; | |||
int index=0; | |||
for (int i = 0; i < data1.length; i++) { | |||
if (i % 2 == 0) { | |||
@@ -425,7 +460,13 @@ public class ModbusTcpServer { | |||
} else { | |||
tempdata[i - 1] = data1[i]; | |||
} | |||
if (data1[i]==0 && index==0) | |||
{ | |||
index=i; | |||
} | |||
} | |||
id = new String(tempdata, "UTF-8").trim(); | |||
} catch (UnsupportedEncodingException ex) { | |||
} | |||
@@ -521,7 +562,7 @@ public class ModbusTcpServer { | |||
int add = GetAddress(Address); | |||
if (add < 0) return; | |||
try { | |||
ReadHoldingRegistersResponse res = ModbusTcpHelper.get().syncReadHoldingRegisters(1, add, length); | |||
ReadHoldingRegistersResponse res = ModbusTcpHelper.get().syncReadHoldingRegisters(1, add, length*2); | |||
byte[] data = res.getData(); | |||
float[] tempValues = new float[length]; | |||
for (int i = 0; i < length; i++) { | |||
@@ -529,7 +570,7 @@ public class ModbusTcpServer { | |||
for (int m = 0; m < 4; m++) { | |||
tempData[m] = data[i * 4 + m]; | |||
} | |||
tempValues[i] = BytesToFloat(tempData, DataFormat.ABCD); | |||
tempValues[i] = BytesToFloat(tempData, DataFormat.BADC); | |||
} | |||
if (tempValues.length == length) { | |||
if (callback != null) callback.onSuccess(tempValues); | |||
@@ -642,7 +683,7 @@ public class ModbusTcpServer { | |||
int add = GetAddress(Address); | |||
if (add < 0) return; | |||
int intBits = Float.floatToRawIntBits(Value); | |||
short[] send = new short[]{(short) ((intBits >> 16) & 0xffff), (short) (intBits & 0xffff)}; | |||
short[] send = IntToShorts(intBits); | |||
try { | |||
ModbusTcpHelper.get().syncWriteRegisters(1, add, send); | |||
@@ -19,6 +19,7 @@ import androidx.fragment.app.FragmentActivity; | |||
import androidx.fragment.app.FragmentTransaction; | |||
import com.bonait.bnframework.R; | |||
import com.bonait.bnframework.common.constant.DataBus; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
@@ -346,6 +347,17 @@ public class MainNavigateTabBar extends LinearLayout implements View.OnClickList | |||
if (index >= 0 && index < mViewHolderList.size()) { | |||
ViewHolder holder = mViewHolderList.get(index); | |||
showFragment(holder); | |||
} | |||
} | |||
public void SetDataResh(int index) | |||
{ | |||
if(index==1)//校验 | |||
{ | |||
//刷新料仓 | |||
DataBus.getInstance().GetSilosLsjy(); | |||
} | |||
} | |||
@@ -6,16 +6,23 @@ import androidx.fragment.app.Fragment; | |||
import androidx.viewpager.widget.ViewPager; | |||
import android.os.Bundle; | |||
import android.util.Log; | |||
import android.view.MenuItem; | |||
import android.widget.RelativeLayout; | |||
import com.bonait.bnframework.R; | |||
import com.bonait.bnframework.business.ConfigData; | |||
import com.bonait.bnframework.common.base.BaseActivity; | |||
import com.bonait.bnframework.common.constant.ConfigName; | |||
import com.bonait.bnframework.common.constant.MessageName; | |||
import com.bonait.bnframework.common.helper.I.IThread; | |||
import com.bonait.bnframework.common.helper.MessageLog; | |||
import com.bonait.bnframework.common.helper.ThreadManager; | |||
import com.bonait.bnframework.common.message.MessageLooper; | |||
import com.bonait.bnframework.common.message.MessageManager; | |||
import com.bonait.bnframework.common.modbus.ModbusTcpServer; | |||
import com.bonait.bnframework.common.tabbar.MainNavigateTabBar; | |||
import com.bonait.bnframework.common.utils.NetworkUtils; | |||
import com.bonait.bnframework.modules.home.adapter.FragmentAdapter; | |||
import com.bonait.bnframework.modules.home.fragment.DingDanfragment; | |||
import com.bonait.bnframework.modules.home.fragment.GongnengFragment; | |||
@@ -63,6 +70,14 @@ public class BottomNavigationMainActivity extends BaseActivity { | |||
initFragment(); | |||
} | |||
@Override | |||
protected void onDestroy() { | |||
//关闭PLC连接 | |||
ConfigData.getInstance().ColsePLC(); | |||
super.onDestroy(); | |||
} | |||
private List<Fragment> fragmentList; | |||
/** | |||
* viewPager里添加fragment | |||
@@ -85,6 +100,73 @@ public class BottomNavigationMainActivity extends BaseActivity { | |||
viewPager.setCurrentItem(3); | |||
} | |||
/** | |||
* 初始化 | |||
*/ | |||
public void Init() | |||
{ | |||
//1.同步时间 | |||
NetworkUtils.SynchronizationTime(); | |||
//主持 | |||
ConfigData.getInstance().GetOrganize(this); | |||
//判断连接环境 | |||
ConfigData.getInstance().ToggleEnvironment(); | |||
//2.初始化PLC | |||
ReconnectModbus(); | |||
//初始化阿里云连接 | |||
//AliyunIOTManager.getInstance().OpenDev(this); | |||
} | |||
/** | |||
* 重新连接plc | |||
*/ | |||
public void ReconnectModbus() | |||
{ | |||
try { | |||
ThreadManager.Get().StartLong("PLC断线重连线程", true, new IThread() { | |||
@Override | |||
public void Run() throws InterruptedException { | |||
try { | |||
if(ConfigName.getInstance().PlcIsConnect) | |||
{ | |||
//ping 不通 | |||
boolean status = ModbusTcpServer.ping2(ConfigName.getInstance().Address,1,1); | |||
if(!status) //ping 不通 连接 | |||
{ | |||
MessageLog.ShowInfo("PLC状态断开,尝试连接..."); | |||
ConfigName.getInstance().PlcIsConnect=false; | |||
} | |||
}else | |||
{ | |||
boolean status = ModbusTcpServer.ping2(ConfigName.getInstance().Address,1,1); | |||
if(status) | |||
{ | |||
MessageLog.ShowInfo("设备 " + ConfigName.getInstance().Address + " PLC通讯正常,准备连接!"); | |||
ModbusTcpServer.ConnectPLC(); | |||
}else | |||
{ | |||
MessageLog.ShowInfo("PLC状态断开,尝试连接..."); | |||
ConfigName.getInstance().PlcIsConnect=false; | |||
} | |||
} | |||
Thread.sleep(10000); | |||
} catch (Exception e) { | |||
Log.i("PLC", "PLC重连接失败!"+e.getMessage()); | |||
} | |||
} | |||
@Override | |||
public void RunComplete() throws InterruptedException { | |||
} | |||
}); | |||
}catch (Exception e) { | |||
MessageLog.ShowInfo("重新连接Modbus异常," +e.getMessage()); | |||
} | |||
} | |||
/** | |||
* 配置bottom底部菜单栏监听器,手指点击底部菜单监听 | |||
*/ | |||
@@ -92,29 +174,26 @@ public class BottomNavigationMainActivity extends BaseActivity { | |||
= new MainNavigateTabBar.OnTabSelectedListener() { | |||
@Override | |||
public void onTabSelected(MainNavigateTabBar.ViewHolder holder) { | |||
int _postion=3; | |||
switch (holder.tag) { | |||
case "功能": | |||
viewPager.setCurrentItem(0); | |||
_postion=0; | |||
break; | |||
case "校验": | |||
viewPager.setCurrentItem(1); | |||
case "校验":_postion=1; | |||
break; | |||
case "订单": | |||
viewPager.setCurrentItem(2); | |||
case "订单":_postion=2; | |||
break; | |||
case "管理": | |||
viewPager.setCurrentItem(4); | |||
case "管理":_postion=4; | |||
break; | |||
case "设置": | |||
viewPager.setCurrentItem(5); | |||
case "设置":_postion=5; | |||
break; | |||
case "我的": | |||
viewPager.setCurrentItem(6); | |||
case "我的":_postion=6; | |||
break; | |||
case "": | |||
viewPager.setCurrentItem(3); | |||
case "":_postion=3; | |||
break; | |||
} | |||
viewPager.setCurrentItem(_postion); | |||
mNavigateTabBar.SetDataResh(_postion); | |||
} | |||
}; | |||
/** | |||
@@ -127,6 +206,7 @@ public class BottomNavigationMainActivity extends BaseActivity { | |||
@Override | |||
public void onPageSelected(int position) { | |||
mNavigateTabBar.setCurrentSelectedTab(position); | |||
mNavigateTabBar.SetDataResh(position); | |||
} | |||
@Override | |||
public void onPageScrollStateChanged(int state) { | |||
@@ -0,0 +1,183 @@ | |||
package com.bonait.bnframework.modules.home.adapter; | |||
import android.app.Activity; | |||
import android.content.Context; | |||
import android.content.ContextWrapper; | |||
import android.view.LayoutInflater; | |||
import android.view.View; | |||
import android.view.ViewGroup; | |||
import android.widget.Button; | |||
import android.widget.EditText; | |||
import android.widget.ImageView; | |||
import android.widget.ProgressBar; | |||
import android.widget.TextView; | |||
import androidx.annotation.NonNull; | |||
import androidx.recyclerview.widget.RecyclerView; | |||
import com.bonait.bnframework.R; | |||
import com.bonait.bnframework.business.ExecuteTheRecipe; | |||
import com.bonait.bnframework.common.constant.DataBus; | |||
import com.bonait.bnframework.common.db.res.SilosLsjyMode; | |||
import com.bonait.bnframework.common.helper.I.IWriteCallBack; | |||
import com.bonait.bnframework.common.utils.ToastUtils; | |||
import com.suke.widget.SwitchButton; | |||
import java.util.List; | |||
/** | |||
* 流速校验 | |||
*/ | |||
public class lsjy_adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { | |||
private final LayoutInflater mLayoutInflater; | |||
private Context context; | |||
public List<SilosLsjyMode> mainGoods = DataBus.getInstance().SilosLsjy; | |||
public lsjy_adapter(Context context) { | |||
this.context = context; | |||
mLayoutInflater = LayoutInflater.from(context); | |||
} | |||
@NonNull | |||
@Override | |||
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { | |||
View inflate = mLayoutInflater.inflate(R.layout.lsjy_item, parent, false); | |||
return new MyGoodLCViewHolder(inflate); | |||
} | |||
@Override | |||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { | |||
try { | |||
if (holder instanceof MyGoodLCViewHolder) { | |||
MyGoodLCViewHolder myViewHolder = (MyGoodLCViewHolder) holder; | |||
SilosLsjyMode goodsMake= mainGoods.get(position); | |||
String name= "通道"+goodsMake.num+"(" +goodsMake.name+")"; | |||
myViewHolder.name.setText(name+""); | |||
myViewHolder.wlname.setText(goodsMake.materialName+""); | |||
myViewHolder.edittext_xs.setText(goodsMake.xs+""); | |||
myViewHolder.control_switch.setChecked(goodsMake.jzkg); | |||
myViewHolder.edittext_tdzl.setText(goodsMake.Value+""); | |||
myViewHolder.control_switch.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() { | |||
@Override | |||
public void onCheckedChanged(SwitchButton view, boolean isChecked) { | |||
//boolean ischick= myViewHolder.control_switch.isChecked(); | |||
DataBus.getInstance().SilosLsjy.get(position).jzkg=isChecked; | |||
ExecuteTheRecipe.WritePLC("通道" + goodsMake.num+"校准开关", isChecked, null); | |||
//goodsMake.jzkg=ischick; | |||
//notifyDataSetChanged(); | |||
// ExecuteTheRecipe.WritePLC("通道1校准开关",ischick,null); | |||
// ToastUtils.info("写入地址:"+model.address+"成功!状态:"+(ischick?"打开":"关闭")); | |||
} | |||
}); | |||
myViewHolder.save_value.setOnClickListener(new View.OnClickListener() { | |||
@Override | |||
public void onClick(View view) { | |||
String value = myViewHolder.edittext_tdzl.getText().toString(); | |||
String value1=myViewHolder.edittext_xs.getText().toString(); | |||
Short val = 0; | |||
float xs= 1.0F; | |||
try { | |||
val = (short) Math.round((Double.parseDouble(value) * 10)); | |||
xs=Float.parseFloat(value1); | |||
} catch (Exception e) { | |||
} | |||
ExecuteTheRecipe.WritePLC("出料系数"+goodsMake.num,xs,null); | |||
ExecuteTheRecipe.WritePLC("校准值" + goodsMake.num, val, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ToastUtils.info(name+"保存成功!"); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.error(name+"保存失败!"); | |||
} | |||
}); | |||
} | |||
}); | |||
} | |||
} catch (Exception e) { | |||
e.printStackTrace(); | |||
} | |||
} | |||
private Activity findActivity(@NonNull Context context) { | |||
if (context instanceof Activity) { | |||
return (Activity) context; | |||
} else if (context instanceof ContextWrapper) { | |||
return findActivity(((ContextWrapper) context).getBaseContext()); | |||
} else { | |||
return null; | |||
} | |||
} | |||
/** | |||
* 刷新 | |||
* @param | |||
*/ | |||
public void refresh(){ | |||
Activity activity= findActivity(context); | |||
if(activity!=null) | |||
{ | |||
activity.runOnUiThread(new Runnable() { | |||
@Override | |||
public void run() { | |||
try { | |||
mainGoods.clear(); | |||
mainGoods = DataBus.getInstance().SilosLsjy; | |||
notifyDataSetChanged(); | |||
} catch (Exception e) { | |||
} | |||
} | |||
}); | |||
} | |||
} | |||
@Override | |||
public int getItemCount() { | |||
return mainGoods.size(); | |||
} | |||
public static class MyGoodLCViewHolder extends RecyclerView.ViewHolder { | |||
/** | |||
* 通道名称 | |||
*/ | |||
TextView name; | |||
/** | |||
* 物料名称 | |||
*/ | |||
TextView wlname; | |||
/** | |||
* 系数 | |||
*/ | |||
EditText edittext_xs; | |||
/** | |||
* 校准开关 | |||
*/ | |||
SwitchButton control_switch; | |||
/** | |||
* 通道重量 | |||
*/ | |||
EditText edittext_tdzl; | |||
/** | |||
* 保存值 | |||
*/ | |||
Button save_value; | |||
public MyGoodLCViewHolder(View view) { | |||
super(view); | |||
name = (TextView) view.findViewById(R.id.name); | |||
wlname = (TextView) view.findViewById(R.id.wlname); | |||
edittext_xs=(EditText) view.findViewById(R.id.edittext_xs); | |||
control_switch = (SwitchButton)view.findViewById(R.id.control_switch); | |||
edittext_tdzl=(EditText) view.findViewById(R.id.edittext_tdzl); | |||
save_value=(Button) view.findViewById(R.id.save_value); | |||
} | |||
} | |||
} |
@@ -12,14 +12,18 @@ import android.os.Message; | |||
import android.text.InputType; | |||
import android.view.LayoutInflater; | |||
import android.view.View; | |||
import android.widget.Button; | |||
import android.widget.EditText; | |||
import com.bonait.bnframework.R; | |||
import com.bonait.bnframework.business.ConfigData; | |||
import com.bonait.bnframework.business.ExecuteTheRecipe; | |||
import com.bonait.bnframework.common.base.BaseFragment; | |||
import com.bonait.bnframework.common.constant.ConfigName; | |||
import com.bonait.bnframework.common.constant.DataBus; | |||
import com.bonait.bnframework.common.db.QueryDB; | |||
import com.bonait.bnframework.common.db.mode.BPA_MATERIAL; | |||
import com.bonait.bnframework.common.helper.I.IWriteCallBack; | |||
import com.bonait.bnframework.common.helper.I.MyClickListener; | |||
import com.bonait.bnframework.common.utils.NetworkUtils; | |||
import com.bonait.bnframework.common.utils.ToastUtils; | |||
@@ -27,12 +31,21 @@ import com.bonait.bnframework.modules.home.adapter.wl_adapter; | |||
import com.orhanobut.logger.Logger; | |||
import com.qmuiteam.qmui.widget.dialog.QMUIDialog; | |||
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; | |||
import com.qmuiteam.qmui.widget.section.QMUIStickySectionLayout; | |||
import butterknife.BindView; | |||
import butterknife.ButterKnife; | |||
import butterknife.OnClick; | |||
public class JiaoYan_dzcjy_fragment extends BaseFragment { | |||
@BindView(R.id.ldjz) | |||
Button ldjz;//零点校准 | |||
@BindView(R.id.edittext_zl) | |||
EditText edittext_zl;//砝码重量 | |||
@BindView(R.id.jzzl) | |||
Button jzzl;//校正重量 | |||
private Context context; | |||
@Override | |||
protected View onCreateView() { | |||
@@ -48,6 +61,7 @@ public class JiaoYan_dzcjy_fragment extends BaseFragment { | |||
context = getContext(); | |||
InitView(); | |||
} | |||
/** | |||
* 初始化界面 | |||
*/ | |||
@@ -56,14 +70,51 @@ public class JiaoYan_dzcjy_fragment extends BaseFragment { | |||
} | |||
// @OnClick({R.id.add_wl}) | |||
// public void onViewClicked(View view) { | |||
// switch (view.getId()) { | |||
// case R.id.add_wl: | |||
// | |||
// break; | |||
// } | |||
// } | |||
boolean IsOpen=false; | |||
@OnClick({R.id.ldjz,R.id.jzzl}) | |||
public void onViewClicked(View view) { | |||
switch (view.getId()) { | |||
case R.id.ldjz://零点校准 | |||
IsOpen= ExecuteTheRecipe.StartJiaoYanMode(); | |||
if(IsOpen) | |||
{ | |||
ToastUtils.info("开启零点校正成功!"); | |||
}else | |||
{ | |||
ToastUtils.error("开启零点校正失败,请检测plc连接!"); | |||
} | |||
break; | |||
case R.id.jzzl://校正重量 | |||
if(!IsOpen) | |||
{ | |||
ToastUtils.info("请先点击[零点校正],进入校正模式!"); | |||
return; | |||
} | |||
String outres = edittext_zl.getText().toString().trim(); | |||
if (!outres.equals("")) { | |||
ExecuteTheRecipe.WritePLC("砝码值", Short.parseShort(outres), new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ExecuteTheRecipe.WritePLC("砝码值写入",true,null); | |||
ToastUtils.info("校正重量成功!"); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.error("校正重量失败!"); | |||
} | |||
}); | |||
}else | |||
{ | |||
ToastUtils.info("砝码值不能为空!"); | |||
} | |||
ExecuteTheRecipe.StopJiaoYanMode(); | |||
IsOpen=false; | |||
break; | |||
} | |||
} | |||
//region 数据加载 | |||
@@ -3,21 +3,53 @@ package com.bonait.bnframework.modules.home.fragment.from.fragment; | |||
import androidx.annotation.NonNull; | |||
import androidx.annotation.Nullable; | |||
import androidx.appcompat.app.AppCompatActivity; | |||
import androidx.recyclerview.widget.LinearLayoutManager; | |||
import androidx.recyclerview.widget.RecyclerView; | |||
import android.content.Context; | |||
import android.os.Bundle; | |||
import android.os.Handler; | |||
import android.util.Log; | |||
import android.view.LayoutInflater; | |||
import android.view.View; | |||
import android.view.WindowManager; | |||
import android.widget.Button; | |||
import android.widget.EditText; | |||
import android.widget.TextView; | |||
import com.bonait.bnframework.R; | |||
import com.bonait.bnframework.business.ExecuteTheRecipe; | |||
import com.bonait.bnframework.common.base.BaseFragment; | |||
import com.bonait.bnframework.common.constant.ConfigName; | |||
import com.bonait.bnframework.common.constant.DataBus; | |||
import com.bonait.bnframework.common.db.res.SilosLsjyMode; | |||
import com.bonait.bnframework.common.helper.I.IRun; | |||
import com.bonait.bnframework.common.helper.I.IWriteCallBack; | |||
import com.bonait.bnframework.common.helper.WrapContentLinearLayoutManager; | |||
import com.bonait.bnframework.common.utils.ToastUtils; | |||
import com.bonait.bnframework.modules.home.adapter.lsjy_adapter; | |||
import com.orhanobut.logger.Logger; | |||
import butterknife.BindView; | |||
import butterknife.ButterKnife; | |||
import butterknife.OnClick; | |||
public class JiaoYan_lsjy_fragment extends BaseFragment { | |||
@BindView(R.id.Recy_Lsjy) | |||
RecyclerView Recy_Lsjy;//流速校验 | |||
@BindView(R.id.zhongliang) | |||
TextView zhongliang;//实时重量 | |||
@BindView(R.id.edittext_jzsj) | |||
EditText edittext_jzsj;//校准时间 | |||
@BindView(R.id.edittext_fzsj) | |||
EditText edittext_fzsj;//反转时间 | |||
@BindView(R.id.edittext_cl) | |||
EditText edittext_cl;//出料重量 | |||
private Context context; | |||
@Override | |||
protected View onCreateView() { | |||
@@ -40,28 +72,280 @@ public class JiaoYan_lsjy_fragment extends BaseFragment { | |||
Initdata(); | |||
} | |||
public int selectIndexSilos=-99; | |||
@OnClick({R.id.save_jzsj,R.id.save_fzsj | |||
,R.id.czql,R.id.save_czql,R.id.ksjz | |||
,R.id.kscl | |||
}) | |||
public void onViewClicked(View view) { | |||
switch (view.getId()) { | |||
case R.id.save_jzsj://保存校准时间 | |||
try { | |||
String stime = edittext_jzsj.getText().toString(); | |||
if (stime.equals("")) { | |||
ToastUtils.info("校准基准时间不能为空!"); | |||
return; | |||
} | |||
int ftime = 0; | |||
try { | |||
ftime = (int) Math.round((Double.parseDouble(stime) * 10)); | |||
} catch (Exception e) { | |||
ToastUtils.error("校准基准时间异常!" + e.getMessage()); | |||
return; | |||
} | |||
ExecuteTheRecipe.WritePLC("基准时间", (short) ftime, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ToastUtils.info("校准基准时间保存成功!"); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.error("校准基准时间保存失败!"); | |||
} | |||
}); | |||
} catch (WindowManager.BadTokenException e) { | |||
ToastUtils.error("校准基准时间保存配置异常!" + e.getMessage()); | |||
} | |||
break; | |||
case R.id.save_fzsj://保存反转时间 | |||
try { | |||
String stime = edittext_fzsj.getText().toString(); | |||
if (stime.equals("")) { | |||
ToastUtils.info("反转时间不能为空!"); | |||
return; | |||
} | |||
int ftime = 0; | |||
try { | |||
ftime = (int) Math.round((Double.parseDouble(stime) * 10)); | |||
} catch (Exception e) { | |||
ToastUtils.error("反转时间异常!" + e.getMessage()); | |||
return; | |||
} | |||
ExecuteTheRecipe.WritePLC("反转时间", (short) ftime, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ToastUtils.info("反转时间保存成功!"); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.error("反转时间保存失败!"); | |||
} | |||
}); | |||
} catch (WindowManager.BadTokenException e) { | |||
ToastUtils.error("反转时间保存配置异常!" + e.getMessage()); | |||
} | |||
break; | |||
case R.id.czql://称重清零 | |||
case R.id.save_czql: | |||
ExecuteTheRecipe.WritePLC("重量清零", true, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ToastUtils.info("清零成功!"); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.error("清零失败!"); | |||
} | |||
}); | |||
break; | |||
case R.id.ksjz://开始校准 | |||
//切换手动 | |||
//region 判断是否只勾选了一个料仓 | |||
SelectSilos(); | |||
//endregion | |||
ExecuteTheRecipe.WritePLC("手自切换", false, null); | |||
ExecuteTheRecipe.WritePLC("通道校准", true, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ToastUtils.info("启动通道校准成功!"); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.error("启动通道校准失败!"); | |||
} | |||
}); | |||
break; | |||
case R.id.kscl://开始出料 | |||
String zltext = edittext_cl.getText().toString(); | |||
if (zltext.equals("")) { | |||
ToastUtils.warning("出料重量不能为空!"); | |||
return; | |||
} | |||
double zl = 0; | |||
try { | |||
zl = Double.parseDouble(zltext); | |||
} catch (Exception e) { | |||
ToastUtils.warning("出料重量获取异常!" + e.getMessage()); | |||
return; | |||
} | |||
if(zl<=1) | |||
{ | |||
ToastUtils.warning("出料重量至少大于1g!"); | |||
return; | |||
} | |||
// @OnClick({R.id.add_wl}) | |||
// public void onViewClicked(View view) { | |||
// switch (view.getId()) { | |||
// case R.id.add_wl: | |||
// | |||
// break; | |||
// } | |||
// } | |||
//region 判断是否只勾选了一个料仓 | |||
SelectSilos(); | |||
//endregion | |||
if (selectIndexSilos==-88) | |||
{ | |||
ToastUtils.warning("只能打开一个通道开关!"); | |||
return; | |||
} | |||
if (selectIndexSilos<=0) | |||
{ | |||
ToastUtils.warning("请打开通道开关!"); | |||
return; | |||
} | |||
ExecuteTheRecipe.WritePLC("手自切换", true, null); | |||
ExecuteTheRecipe.WritePLC("需求值" + selectIndexSilos, (short) ((int) (zl * 10)), new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ToastUtils.warning("需求值下发成功!开始配料......"); | |||
ExecuteTheRecipe.WritePLC("配料启动", true, null); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.error("需求值下发失败!请稍后重试......"); | |||
} | |||
}); | |||
break; | |||
} | |||
} | |||
/** | |||
* 判断是否只勾选了一个料仓 | |||
*/ | |||
public void SelectSilos() | |||
{ | |||
//region 判断是否只勾选了一个料仓 | |||
selectIndexSilos=-99; | |||
for (SilosLsjyMode item:DataBus.getInstance().SilosLsjy) | |||
{ | |||
if(item.jzkg) | |||
{ | |||
if(selectIndexSilos==-99) | |||
{ | |||
selectIndexSilos=item.num; | |||
}else | |||
{ | |||
selectIndexSilos=-88; | |||
} | |||
} | |||
} | |||
//endregion | |||
} | |||
//region 数据加载 | |||
/** | |||
* 初始化数据加载 | |||
*/ | |||
public void Initdata() { | |||
try { | |||
//顶部料仓信息 | |||
DataBus.getInstance().GetSilosLsjy(); | |||
Recy_Lsjy.setLayoutManager(new WrapContentLinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL,false)); | |||
DataBus.getInstance().lsjyAdapter = new lsjy_adapter(getContext()); | |||
Recy_Lsjy.setAdapter(DataBus.getInstance().lsjyAdapter); | |||
//底部按钮信息 | |||
Object obj= ExecuteTheRecipe.ReadPLC("基准时间"); | |||
String time = obj==null?"0":obj.toString(); | |||
//校准时间 | |||
edittext_jzsj.setText(String.format("%.1f", (Double.parseDouble(time) / 10))); | |||
Object obj1= ExecuteTheRecipe.ReadPLC("反转时间"); | |||
String fztime = obj1==null?"0":obj1.toString(); | |||
edittext_fzsj.setText(String.format("%.1f", (Double.parseDouble(fztime) / 10))); | |||
} catch (Exception e) { | |||
} | |||
} | |||
/** | |||
* 实时显示线程 | |||
*/ | |||
public void Run() { | |||
new Thread(new Runnable() { | |||
@Override | |||
public void run() { | |||
while (ConfigName.getInstance().PlcIsConnect) { | |||
try { | |||
getActivity().runOnUiThread(new Runnable() { | |||
@Override | |||
public void run() { | |||
try { | |||
Object obj= ExecuteTheRecipe.ReadPLC("称当前重量"); | |||
zhongliang.setText(String.valueOf((int)obj / 10.0) + " g"); | |||
} catch (Exception e) { | |||
ToastUtils.error("重量解析显示异常!" + e.getMessage()); | |||
} | |||
} | |||
}); | |||
Thread.sleep(50); | |||
} catch (InterruptedException e) { | |||
throw new RuntimeException(e); | |||
} | |||
} | |||
} | |||
}).start(); | |||
ExecuteTheRecipe.OnChargeMixtureComNotPar = new IRun() { | |||
@Override | |||
public void Run() { | |||
if (selectIndexSilos > 0) { | |||
final int kkk = selectIndexSilos; | |||
try { | |||
getActivity().runOnUiThread(new Runnable() { | |||
@Override | |||
public void run() { | |||
try { | |||
// 在2秒后执行按钮操作 | |||
new Handler().postDelayed(new Runnable() { | |||
@Override | |||
public void run() { | |||
Object obj= ExecuteTheRecipe.ReadPLC("称当前重量"); | |||
int val = (int)obj; | |||
val=val<=0?0:val; | |||
ExecuteTheRecipe.WritePLC("校准值"+kkk,(short) val,null); | |||
String s = String.valueOf(val); | |||
for (SilosLsjyMode item:DataBus.getInstance().SilosLsjy) | |||
{ | |||
if(selectIndexSilos==item.num) | |||
{ | |||
item.Value=String.format("%.1f", (Double.parseDouble(s) / 10)); | |||
} | |||
} | |||
if (DataBus.getInstance().lsjyAdapter!=null) | |||
{ | |||
DataBus.getInstance().lsjyAdapter.refresh(); | |||
} | |||
} | |||
}, 2000); | |||
} catch (Exception e) { | |||
ToastUtils.error("重量解析显示异常!" + e.getMessage()); | |||
} | |||
} | |||
}); | |||
} catch (Exception ex) { | |||
Log.d("dsds", "Run: " + ex.getMessage()); | |||
} | |||
selectIndexSilos = -99; | |||
} | |||
} | |||
}; | |||
} | |||
//endregion | |||
@Override | |||
@@ -29,7 +29,7 @@ | |||
android:layout_height="26dp" | |||
android:layout_centerInParent="true" | |||
android:background="@drawable/bg_btn_login_selected" | |||
android:text="零点校准" | |||
android:text="零点校正" | |||
android:textColor="@color/white" | |||
android:textSize="14dp" /> | |||
@@ -77,7 +77,7 @@ | |||
android:textAlignment="center" /> | |||
<Button | |||
android:layout_marginTop="@dimen/dp_10" | |||
android:id="@+id/add_fl" | |||
android:id="@+id/jzzl" | |||
android:layout_width="match_parent" | |||
android:layout_height="26dp" | |||
android:layout_centerInParent="true" | |||
@@ -1,5 +1,6 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<com.qmuiteam.qmui.widget.QMUIWindowInsetLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||
<com.qmuiteam.qmui.widget.QMUIWindowInsetLayout | |||
xmlns:android="http://schemas.android.com/apk/res/android" | |||
xmlns:app="http://schemas.android.com/apk/res-auto" | |||
xmlns:tools="http://schemas.android.com/tools" | |||
android:layout_width="match_parent" | |||
@@ -10,10 +11,415 @@ | |||
android:layout_height="match_parent" | |||
android:background="@color/main_background" | |||
android:orientation="vertical"> | |||
<TextView | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="流速"/> | |||
<!-- 物料信息管理 --> | |||
<!-- 顶部通道 --> | |||
<RelativeLayout | |||
android:layout_width="match_parent" | |||
android:layout_height="0dp" | |||
android:layout_weight="1"> | |||
<androidx.recyclerview.widget.RecyclerView | |||
android:id="@+id/Recy_Lsjy" | |||
android:layout_width="wrap_content" | |||
android:layout_height="match_parent" | |||
android:layout_marginLeft="0dp"> | |||
</androidx.recyclerview.widget.RecyclerView> | |||
</RelativeLayout> | |||
<!--边框分割细线--> | |||
<LinearLayout | |||
android:layout_alignParentBottom="true" | |||
android:layout_width="match_parent" | |||
android:layout_height="1dp" | |||
android:background="@color/color3" /> | |||
<!-- 底部流程 --> | |||
<RelativeLayout | |||
android:layout_width="match_parent" | |||
android:layout_height="0dp" | |||
android:layout_weight="1"> | |||
<LinearLayout | |||
android:layout_marginTop="@dimen/dp_10" | |||
android:layout_centerHorizontal="true" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content"> | |||
<TextView | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="重量:" | |||
android:textSize="20dp"/> | |||
<TextView | |||
android:layout_marginLeft="10dp" | |||
android:id="@+id/zhongliang" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="0g" | |||
android:textColor="@color/colorAccent" | |||
android:textStyle="bold" | |||
android:textSize="30dp"></TextView> | |||
</LinearLayout> | |||
<LinearLayout | |||
android:layout_marginTop="50dp" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content"> | |||
<LinearLayout | |||
android:layout_marginLeft="@dimen/dp_10" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="vertical"> | |||
<TextView | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="①" | |||
android:textAlignment="center" /> | |||
<LinearLayout | |||
android:layout_marginTop="@dimen/dp_10" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="horizontal"> | |||
<TextView | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="校准时间(s):" | |||
android:textAlignment="center" /> | |||
<EditText | |||
android:id="@+id/edittext_jzsj" | |||
android:layout_width="100dp" | |||
android:layout_height="wrap_content" | |||
android:background="@drawable/input_bj" | |||
android:hint="请输入" | |||
android:inputType="number|numberDecimal" | |||
android:digits="0123456789." | |||
android:maxLines="1" | |||
android:padding="3dp" | |||
android:textSize="12dp" | |||
android:text="0.0"/> | |||
<Button | |||
android:id="@+id/save_jzsj" | |||
android:layout_marginLeft="@dimen/dp_10" | |||
android:layout_width="50dp" | |||
android:layout_height="26dp" | |||
android:layout_centerInParent="true" | |||
android:background="@drawable/bg_btn_login_selected" | |||
android:text="保存" | |||
android:textColor="@color/white" | |||
android:textSize="14dp" /> | |||
</LinearLayout> | |||
<LinearLayout | |||
android:layout_marginTop="@dimen/dp_10" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="horizontal"> | |||
<TextView | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="反转时间(s):" | |||
android:textAlignment="center" /> | |||
<EditText | |||
android:id="@+id/edittext_fzsj" | |||
android:layout_width="100dp" | |||
android:layout_height="wrap_content" | |||
android:background="@drawable/input_bj" | |||
android:hint="请输入" | |||
android:inputType="number|numberDecimal" | |||
android:digits="0123456789." | |||
android:maxLines="1" | |||
android:padding="3dp" | |||
android:textSize="12dp" | |||
android:text="0.0"/> | |||
<Button | |||
android:id="@+id/save_fzsj" | |||
android:layout_marginLeft="@dimen/dp_10" | |||
android:layout_width="50dp" | |||
android:layout_height="26dp" | |||
android:layout_centerInParent="true" | |||
android:background="@drawable/bg_btn_login_selected" | |||
android:text="保存" | |||
android:textColor="@color/white" | |||
android:textSize="14dp" /> | |||
</LinearLayout> | |||
</LinearLayout> | |||
<ImageView | |||
android:layout_marginLeft="20dp" | |||
android:layout_marginRight="20dp" | |||
android:layout_marginTop="30dp" | |||
android:layout_width="wrap_content" | |||
android:layout_height="match_parent" | |||
android:src="@mipmap/jt_y"/> | |||
<LinearLayout | |||
android:layout_marginLeft="@dimen/dp_10" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="vertical"> | |||
<TextView | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="②" | |||
android:textAlignment="center" /> | |||
<Button | |||
android:layout_marginTop="@dimen/dp_10" | |||
android:id="@+id/czql" | |||
android:layout_width="match_parent" | |||
android:layout_height="match_parent" | |||
android:layout_centerInParent="true" | |||
android:background="@drawable/bg_btn_login_selected" | |||
android:text="称重清零" | |||
android:textColor="@color/white" | |||
android:textSize="14dp" /> | |||
</LinearLayout> | |||
<ImageView | |||
android:layout_marginLeft="20dp" | |||
android:layout_marginRight="20dp" | |||
android:layout_marginTop="30dp" | |||
android:layout_width="wrap_content" | |||
android:layout_height="match_parent" | |||
android:src="@mipmap/jt_y"/> | |||
<LinearLayout | |||
android:layout_marginLeft="@dimen/dp_10" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="vertical"> | |||
<TextView | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="③" | |||
android:textAlignment="center" /> | |||
<TextView | |||
android:layout_marginTop="30dp" | |||
android:layout_width="match_parent" | |||
android:layout_height="match_parent" | |||
android:text="打开校准开关" | |||
android:textAlignment="center" /> | |||
</LinearLayout> | |||
<ImageView | |||
android:layout_marginLeft="20dp" | |||
android:layout_marginRight="20dp" | |||
android:layout_marginTop="30dp" | |||
android:layout_width="wrap_content" | |||
android:layout_height="match_parent" | |||
android:src="@mipmap/jt_y"/> | |||
<LinearLayout | |||
android:layout_marginLeft="@dimen/dp_10" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="vertical"> | |||
<TextView | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="④" | |||
android:textAlignment="center" /> | |||
<Button | |||
android:layout_marginTop="@dimen/dp_10" | |||
android:id="@+id/ksjz" | |||
android:layout_width="match_parent" | |||
android:layout_height="match_parent" | |||
android:layout_centerInParent="true" | |||
android:background="@drawable/bg_btn_login_selected" | |||
android:text="开始校准" | |||
android:textColor="@color/white" | |||
android:textSize="14dp" /> | |||
</LinearLayout> | |||
<!-- <ImageView--> | |||
<!-- android:layout_marginLeft="20dp"--> | |||
<!-- android:layout_marginRight="20dp"--> | |||
<!-- android:layout_marginTop="30dp"--> | |||
<!-- android:layout_width="wrap_content"--> | |||
<!-- android:layout_height="match_parent"--> | |||
<!-- android:src="@mipmap/jt_y"/>--> | |||
<!-- <LinearLayout--> | |||
<!-- android:layout_marginLeft="@dimen/dp_10"--> | |||
<!-- android:layout_width="wrap_content"--> | |||
<!-- android:layout_height="wrap_content"--> | |||
<!-- android:orientation="vertical">--> | |||
<!-- <TextView--> | |||
<!-- android:layout_width="match_parent"--> | |||
<!-- android:layout_height="wrap_content"--> | |||
<!-- android:text="⑤"--> | |||
<!-- android:textAlignment="center" />--> | |||
<!-- <TextView--> | |||
<!-- android:layout_marginTop="30dp"--> | |||
<!-- android:layout_width="match_parent"--> | |||
<!-- android:layout_height="match_parent"--> | |||
<!-- android:text="写入通道重量"--> | |||
<!-- android:textAlignment="center" />--> | |||
<!-- </LinearLayout>--> | |||
<!-- <ImageView--> | |||
<!-- android:layout_marginLeft="20dp"--> | |||
<!-- android:layout_marginRight="20dp"--> | |||
<!-- android:layout_marginTop="30dp"--> | |||
<!-- android:layout_width="wrap_content"--> | |||
<!-- android:layout_height="match_parent"--> | |||
<!-- android:src="@mipmap/jt_y"/>--> | |||
<!-- <LinearLayout--> | |||
<!-- android:layout_marginLeft="@dimen/dp_10"--> | |||
<!-- android:layout_width="wrap_content"--> | |||
<!-- android:layout_height="wrap_content"--> | |||
<!-- android:orientation="vertical">--> | |||
<!-- <TextView--> | |||
<!-- android:layout_width="match_parent"--> | |||
<!-- android:layout_height="wrap_content"--> | |||
<!-- android:text="⑥"--> | |||
<!-- android:textAlignment="center" />--> | |||
<!-- <Button--> | |||
<!-- android:layout_marginTop="@dimen/dp_10"--> | |||
<!-- android:id="@+id/save_jzz"--> | |||
<!-- android:layout_width="match_parent"--> | |||
<!-- android:layout_height="match_parent"--> | |||
<!-- android:layout_centerInParent="true"--> | |||
<!-- android:background="@drawable/bg_btn_login_selected"--> | |||
<!-- android:text="保存校准值"--> | |||
<!-- android:textColor="@color/white"--> | |||
<!-- android:textSize="14dp" />--> | |||
<!-- </LinearLayout>--> | |||
</LinearLayout> | |||
<LinearLayout | |||
android:layout_marginTop="160dp" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content"> | |||
<TextView | |||
android:layout_marginLeft="@dimen/dp_10" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="模拟出料:" | |||
android:textSize="20dp"/> | |||
<LinearLayout | |||
android:layout_marginLeft="@dimen/dp_10" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="vertical"> | |||
<TextView | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="①" | |||
android:textAlignment="center" /> | |||
<TextView | |||
android:layout_marginTop="10dp" | |||
android:layout_width="match_parent" | |||
android:layout_height="match_parent" | |||
android:text="打开校准开关\n(只允许一个通道模拟出料\n请关闭其他通道)" | |||
android:textAlignment="center" /> | |||
</LinearLayout> | |||
<ImageView | |||
android:layout_marginLeft="20dp" | |||
android:layout_marginRight="20dp" | |||
android:layout_marginTop="30dp" | |||
android:layout_width="wrap_content" | |||
android:layout_height="match_parent" | |||
android:src="@mipmap/jt_y"/> | |||
<LinearLayout | |||
android:layout_marginLeft="@dimen/dp_10" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="vertical"> | |||
<TextView | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="②" | |||
android:textAlignment="center" /> | |||
<Button | |||
android:layout_marginTop="@dimen/dp_10" | |||
android:id="@+id/save_czql" | |||
android:layout_width="match_parent" | |||
android:layout_height="match_parent" | |||
android:layout_centerInParent="true" | |||
android:background="@drawable/bg_btn_login_selected" | |||
android:text="称重清零" | |||
android:textColor="@color/white" | |||
android:textSize="14dp" /> | |||
</LinearLayout> | |||
<ImageView | |||
android:layout_marginLeft="20dp" | |||
android:layout_marginRight="20dp" | |||
android:layout_marginTop="30dp" | |||
android:layout_width="wrap_content" | |||
android:layout_height="match_parent" | |||
android:src="@mipmap/jt_y"/> | |||
<LinearLayout | |||
android:layout_marginLeft="@dimen/dp_10" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="vertical"> | |||
<TextView | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="③" | |||
android:textAlignment="center" /> | |||
<LinearLayout | |||
android:layout_marginTop="25dp" | |||
android:layout_width="wrap_content" | |||
android:layout_height="match_parent" | |||
android:orientation="horizontal"> | |||
<TextView | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="出料重量(g):" | |||
android:textAlignment="center" /> | |||
<EditText | |||
android:id="@+id/edittext_cl" | |||
android:layout_width="100dp" | |||
android:layout_height="wrap_content" | |||
android:background="@drawable/input_bj" | |||
android:hint="请输入" | |||
android:inputType="number|numberDecimal" | |||
android:digits="0123456789." | |||
android:maxLines="1" | |||
android:padding="3dp" | |||
android:textSize="12dp" | |||
android:text="0.0"/> | |||
</LinearLayout> | |||
</LinearLayout> | |||
<ImageView | |||
android:layout_marginLeft="20dp" | |||
android:layout_marginRight="20dp" | |||
android:layout_marginTop="30dp" | |||
android:layout_width="wrap_content" | |||
android:layout_height="match_parent" | |||
android:src="@mipmap/jt_y"/> | |||
<LinearLayout | |||
android:layout_marginLeft="@dimen/dp_10" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="vertical"> | |||
<TextView | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:text="④" | |||
android:textAlignment="center" /> | |||
<Button | |||
android:layout_marginTop="@dimen/dp_10" | |||
android:id="@+id/kscl" | |||
android:layout_width="match_parent" | |||
android:layout_height="match_parent" | |||
android:layout_centerInParent="true" | |||
android:background="@drawable/bg_btn_login_selected" | |||
android:text="出料" | |||
android:textColor="@color/white" | |||
android:textSize="14dp" /> | |||
</LinearLayout> | |||
</LinearLayout> | |||
</RelativeLayout> | |||
</LinearLayout> | |||
</com.qmuiteam.qmui.widget.QMUIWindowInsetLayout> |
@@ -0,0 +1,130 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<RelativeLayout | |||
xmlns:android="http://schemas.android.com/apk/res/android" | |||
xmlns:app="http://schemas.android.com/apk/res-auto" | |||
android:layout_width="wrap_content" | |||
android:layout_height="match_parent" | |||
> | |||
<LinearLayout | |||
android:layout_marginLeft="20dp" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="vertical"> | |||
<TextView | |||
android:layout_marginTop="20dp" | |||
android:id="@+id/name" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="通道一通道一通道一通道一通道一通道一" | |||
android:minWidth="140dp" | |||
android:textAlignment="center" | |||
android:textColor="@color/app_color_blue" | |||
android:textSize="@dimen/text_size_16" /> | |||
<TextView | |||
android:id="@+id/wlname" | |||
android:layout_marginTop="10dp" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:textAlignment="center" | |||
android:text="牛奶"/> | |||
<RelativeLayout | |||
android:layout_marginTop="10dp" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content"> | |||
<LinearLayout | |||
android:layout_centerInParent="true" | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:orientation="horizontal"> | |||
<TextView | |||
android:layout_width="wrap_content" | |||
android:layout_height="wrap_content" | |||
android:text="系数:" | |||
android:textAlignment="center" /> | |||
<EditText | |||
android:id="@+id/edittext_xs" | |||
android:layout_width="60dp" | |||
android:layout_height="wrap_content" | |||
android:background="@drawable/input_bj" | |||
android:hint="请输入" | |||
android:inputType="number|numberDecimal" | |||
android:digits="0123456789." | |||
android:maxLines="1" | |||
android:padding="3dp" | |||
android:textSize="12dp" | |||
android:text="0.0"/> | |||
</LinearLayout> | |||
</RelativeLayout> | |||
<TextView | |||
android:layout_marginTop="10dp" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:textAlignment="center" | |||
android:text="校准开关"/> | |||
<RelativeLayout | |||
android:layout_marginTop="10dp" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content"> | |||
<com.suke.widget.SwitchButton | |||
android:layout_centerInParent="true" | |||
app:sb_uncheck_color="@color/app_color_blue" | |||
app:sb_uncheckcircle_color="@color/app_color_blue" | |||
app:sb_button_color="@color/app_color_blue" | |||
android:id="@+id/control_switch" | |||
android:layout_width="80dp" | |||
android:layout_height="wrap_content" | |||
android:focusable="true" | |||
/> | |||
</RelativeLayout> | |||
<TextView | |||
android:layout_marginTop="10dp" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content" | |||
android:textAlignment="center" | |||
android:text="通道重量(g)"/> | |||
<RelativeLayout | |||
android:layout_marginTop="10dp" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content"> | |||
<EditText | |||
android:layout_centerInParent="true" | |||
android:id="@+id/edittext_tdzl" | |||
android:layout_width="100dp" | |||
android:layout_height="wrap_content" | |||
android:background="@drawable/input_bj" | |||
android:hint="请输入" | |||
android:inputType="number|numberDecimal" | |||
android:digits="0123456789." | |||
android:maxLines="1" | |||
android:padding="3dp" | |||
android:textSize="12dp" | |||
android:text="0.0"/> | |||
</RelativeLayout> | |||
<RelativeLayout | |||
android:layout_marginTop="10dp" | |||
android:layout_width="match_parent" | |||
android:layout_height="wrap_content"> | |||
<Button | |||
android:id="@+id/save_value" | |||
android:layout_width="100dp" | |||
android:layout_height="26dp" | |||
android:layout_centerInParent="true" | |||
android:background="@drawable/bg_btn_login_selected" | |||
android:text="保存" | |||
android:textColor="@color/white" | |||
android:textSize="14dp" /> | |||
</RelativeLayout> | |||
</LinearLayout> | |||
</RelativeLayout> |