@@ -1,4 +1,11 @@ | |||
<?xml version="1.0" encoding="UTF-8"?> | |||
<project version="4"> | |||
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="corretto-11" project-jdk-type="JavaSDK" /> | |||
<component name="VisualizationToolProject"> | |||
<option name="state"> | |||
<ProjectState> | |||
<option name="scale" value="0.5" /> | |||
</ProjectState> | |||
</option> | |||
</component> | |||
</project> |
@@ -202,7 +202,7 @@ public class DialogManager { | |||
public static void showInfo(String message, AlertDialogButton btn, IDialogAction action) { | |||
if(mActivity!=null) | |||
mActivity.runOnUiThread(()->{showDialog(message,btn,DialogType.提示,action);}); | |||
else showDialog(message,btn,DialogType.提示,action); | |||
else if(mContext!=null) showDialog(message,btn,DialogType.提示,action); | |||
} | |||
/** | |||
@@ -214,7 +214,7 @@ public class DialogManager { | |||
public static void showWarn(String message, AlertDialogButton btn, IDialogAction action) { | |||
if(mActivity!=null) | |||
mActivity.runOnUiThread(()->{showDialog(message,btn,DialogType.警告,action);}); | |||
else showDialog(message,btn,DialogType.警告,action); | |||
else if(mContext!=null) showDialog(message,btn,DialogType.警告,action); | |||
} | |||
/** | |||
@@ -226,7 +226,7 @@ public class DialogManager { | |||
public static void showError(String message, AlertDialogButton btn, IDialogAction action) { | |||
if(mActivity!=null) | |||
mActivity.runOnUiThread(()->{showDialog(message,btn,DialogType.错误,action);}); | |||
else showDialog(message,btn,DialogType.错误,action); | |||
else if(mContext!=null) showDialog(message,btn,DialogType.错误,action); | |||
} | |||
@@ -238,9 +238,12 @@ public class DialogManager { | |||
* @param action 执行回调 | |||
*/ | |||
public static void showInfo( Context ct,String message, AlertDialogButton btn, IDialogAction action) { | |||
if(mActivity!=null) | |||
mActivity.runOnUiThread(()->{showDialog(ct,message,btn,DialogType.提示,action);}); | |||
else showDialog(ct,message,btn,DialogType.提示,action); | |||
if(ct!=null) | |||
showDialog(ct,message,btn,DialogType.提示,action); | |||
else { | |||
if(mActivity!=null)showDialog(mActivity,message,btn,DialogType.提示,action); | |||
else if (mContext!=null)showDialog(mContext,message,btn,DialogType.提示,action); | |||
} | |||
} | |||
/** | |||
@@ -250,9 +253,12 @@ public class DialogManager { | |||
* @param action 执行回调 | |||
*/ | |||
public static void showWarn( Context ct,String message, AlertDialogButton btn, IDialogAction action) { | |||
if(mActivity!=null) | |||
mActivity.runOnUiThread(()->{showDialog(ct,message,btn,DialogType.警告,action);}); | |||
else showDialog(ct,message,btn,DialogType.警告,action); | |||
if(ct!=null) | |||
showDialog(ct,message,btn,DialogType.警告,action); | |||
else { | |||
if(mActivity!=null)showDialog(mActivity,message,btn,DialogType.警告,action); | |||
else if (mContext!=null)showDialog(mContext,message,btn,DialogType.警告,action); | |||
} | |||
} | |||
/** | |||
@@ -262,9 +268,12 @@ public class DialogManager { | |||
* @param action 执行回调 | |||
*/ | |||
public static void showError( Context ct,String message, AlertDialogButton btn, IDialogAction action) { | |||
if(mActivity!=null) | |||
mActivity.runOnUiThread(()->{showDialog(ct,message,btn,DialogType.错误,action);}); | |||
else showDialog(ct,message,btn,DialogType.错误,action); | |||
if(ct!=null){ | |||
showDialog(ct,message,btn,DialogType.错误,action); | |||
}else { | |||
if(mActivity!=null)showDialog(mActivity,message,btn,DialogType.错误,action); | |||
else if (mContext!=null)showDialog(mContext,message,btn,DialogType.错误,action); | |||
} | |||
} | |||
@@ -276,9 +285,12 @@ public class DialogManager { | |||
* @param action 执行回调 | |||
*/ | |||
public static void showInfo( Activity activity,String message, AlertDialogButton btn, IDialogAction action) { | |||
if(mActivity!=null) | |||
mActivity.runOnUiThread(()->{showDialog(activity,message,btn,DialogType.提示,action);}); | |||
else showDialog(activity,message,btn,DialogType.提示,action); | |||
if(activity!=null) | |||
activity.runOnUiThread(()->{showDialog(activity,message,btn,DialogType.提示,action);}); | |||
else { | |||
if(mActivity!=null)showDialog(mActivity,message,btn,DialogType.提示,action); | |||
else if (mContext!=null)showDialog(mContext,message,btn,DialogType.提示,action); | |||
} | |||
} | |||
/** | |||
@@ -288,9 +300,12 @@ public class DialogManager { | |||
* @param action 执行回调 | |||
*/ | |||
public static void showWarn(Activity activity,String message, AlertDialogButton btn, IDialogAction action) { | |||
if(mActivity!=null) | |||
mActivity.runOnUiThread(()->{showDialog(activity,message,btn,DialogType.警告,action);}); | |||
else showDialog(activity,message,btn,DialogType.警告,action); | |||
if(activity!=null) | |||
activity.runOnUiThread(()->{showDialog(activity,message,btn,DialogType.警告,action);}); | |||
else { | |||
if(mActivity!=null)showDialog(mActivity,message,btn,DialogType.警告,action); | |||
else if (mContext!=null)showDialog(mContext,message,btn,DialogType.警告,action); | |||
} | |||
} | |||
/** | |||
@@ -300,9 +315,12 @@ public class DialogManager { | |||
* @param action 执行回调 | |||
*/ | |||
public static void showError( Activity activity,String message, AlertDialogButton btn, IDialogAction action) { | |||
if(mActivity!=null) | |||
mActivity.runOnUiThread(()->{showDialog(activity,message,btn,DialogType.错误,action);}); | |||
else showDialog(activity,message,btn,DialogType.错误,action); | |||
if(activity!=null) | |||
activity.runOnUiThread(()->{showDialog(activity,message,btn,DialogType.错误,action);}); | |||
else { | |||
if(mActivity!=null)showDialog(mActivity,message,btn,DialogType.错误,action); | |||
else if (mContext!=null)showDialog(mContext,message,btn,DialogType.错误,action); | |||
} | |||
} | |||
} | |||
@@ -0,0 +1,46 @@ | |||
package com.bonait.bnframework.HBL.Dialog; | |||
import android.app.Activity; | |||
import android.app.ProgressDialog; | |||
import android.content.Context; | |||
import android.content.DialogInterface; | |||
import com.bonait.bnframework.R; | |||
public class WaitDialog { | |||
static Context context; | |||
static Activity activity; | |||
static ProgressDialog progressDialog; | |||
public static void Show(String title,String msg,Context _context,Activity _activity){ | |||
context=_context; | |||
activity=_activity; | |||
if(context==null) return; | |||
progressDialog = new ProgressDialog(context); | |||
progressDialog.setTitle(title); | |||
progressDialog.setCancelable(false); | |||
progressDialog.setMessage(msg); | |||
progressDialog.show(); | |||
} | |||
public static void AddText(String info){ | |||
if(context==null) return; | |||
if(activity==null) return; | |||
if(progressDialog==null) return; | |||
activity.runOnUiThread(()->{ progressDialog.setMessage(info);}); | |||
} | |||
public static void Dismiss(){ | |||
if(activity==null) return; | |||
if(progressDialog==null) return; | |||
activity.runOnUiThread(()->{ progressDialog.dismiss();}); | |||
} | |||
public static void TimeOut(String info){ | |||
if(activity==null) return; | |||
if(progressDialog==null) return; | |||
Dismiss(); | |||
DialogManager.showError(activity,info,AlertDialogButton.OK,null); | |||
} | |||
} |
@@ -0,0 +1,5 @@ | |||
package com.bonait.bnframework.HBL.Interface; | |||
public interface IFunc { | |||
boolean Run(); | |||
} |
@@ -1,6 +1,7 @@ | |||
package com.bonait.bnframework.HBL.Result; | |||
import com.bonait.bnframework.HBL.Interface.IRun; | |||
import com.bonait.bnframework.HBL.Interface.IRunT; | |||
import com.bonait.bnframework.HBL.Logs.MessageLog; | |||
public class OperateResult extends IResult { | |||
@@ -41,9 +42,9 @@ public class OperateResult extends IResult { | |||
return this; | |||
} | |||
public OperateResult OnFailed(IRun action){ | |||
public OperateResult OnFailed(IRunT<String> action){ | |||
try{ | |||
if(action!=null&&!getIsSuccess())action.Run(); | |||
if(action!=null&&!getIsSuccess())action.Run(message); | |||
}catch(Exception e){ | |||
MessageLog.ShowError(e); | |||
} | |||
@@ -20,6 +20,12 @@ public class RTrig { | |||
return _Instance.get(name); | |||
} | |||
public static void Remove(String name){ | |||
if(_Instance!=null&&_Instance.containsKey(name)){ | |||
_Instance.remove(name); | |||
} | |||
} | |||
private RTrig() { | |||
} | |||
@@ -35,10 +41,15 @@ public class RTrig { | |||
flag = falag; | |||
} | |||
public void Start(boolean IN, IRun callback) { | |||
public boolean Start(boolean IN, IRun callback) { | |||
setIN(IN); | |||
if (Q) | |||
callback.Run(); | |||
if (Q&&callback!=null)callback.Run(); | |||
return Q; | |||
} | |||
public boolean Start(boolean IN) { | |||
setIN(IN); | |||
return Q; | |||
} | |||
} |
@@ -0,0 +1,53 @@ | |||
package com.bonait.bnframework.HBL.Trig; | |||
import com.bonait.bnframework.HBL.Interface.IRun; | |||
import java.util.concurrent.ConcurrentHashMap; | |||
/** | |||
* 下降沿操作类 | |||
*/ | |||
public class TTrig { | |||
private static volatile ConcurrentHashMap<String, TTrig> _Instance; | |||
public static TTrig get(String name) { | |||
if (_Instance == null) | |||
_Instance = new ConcurrentHashMap<String, TTrig>(); | |||
if (!_Instance.containsKey(name)) | |||
_Instance.put(name, new TTrig()); | |||
return _Instance.get(name); | |||
} | |||
public static void Remove(String name){ | |||
if(_Instance!=null&&_Instance.containsKey(name)){ | |||
_Instance.remove(name); | |||
} | |||
} | |||
private TTrig() { | |||
} | |||
private boolean flag=false; | |||
private boolean Q=false; | |||
public boolean getQ() { | |||
return Q; | |||
} | |||
private void setIN(boolean falag) { | |||
Q = !falag && flag; | |||
flag = falag; | |||
} | |||
public boolean Start(boolean IN, IRun callback) { | |||
setIN(IN); | |||
if (Q&&callback!=null)callback.Run(); | |||
return Q; | |||
} | |||
public boolean Start(boolean IN) { | |||
setIN(IN); | |||
return Q; | |||
} | |||
} |
@@ -0,0 +1,73 @@ | |||
package com.bonait.bnframework.HBL; | |||
import com.bonait.bnframework.HBL.Dialog.AlertDialogButton; | |||
import com.bonait.bnframework.HBL.Dialog.DialogManager; | |||
import com.bonait.bnframework.HBL.Interface.IFunc; | |||
import com.bonait.bnframework.HBL.Result.OperateResult; | |||
public class Unity { | |||
public static void Delay(long miss){ | |||
try{ | |||
Thread.sleep(miss); | |||
}catch (Exception e){} | |||
} | |||
/** | |||
* 阻塞等待条件满足 | |||
* @param func | |||
* @param timeOut | |||
* @return | |||
*/ | |||
public static OperateResult Wait(IFunc func, int timeOut){ | |||
long startTime = System.currentTimeMillis(); | |||
if(func==null) return OperateResult.CreateFailed("条件为空"); | |||
while(!func.Run()){ | |||
Delay(10); | |||
if(timeOut>0&&(System.currentTimeMillis()-startTime)>timeOut) break; | |||
} | |||
return func.Run()?OperateResult.CreateSuccess():OperateResult.CreateFailed("任务超时"); | |||
} | |||
/** | |||
* 地址拼接 | |||
* @param Prefix 地址标头 | |||
* @param num 地址偏移量 | |||
* @param StartAdd 起始地址 | |||
* @return 例如:M6.6=GetSiemensBitSingleAdd("M",15,5) | |||
*/ | |||
public static String GetSiemensBitSingleAdd(String Prefix, int num, int StartAdd) | |||
{ | |||
String result = ""; | |||
if (num > 0) { | |||
int FirstAdd = num / 8; | |||
int EndAdd = num % 8; | |||
if (EndAdd == 0) | |||
{ | |||
FirstAdd--; | |||
EndAdd = 7; | |||
} | |||
else EndAdd--; | |||
result =Prefix+(FirstAdd + StartAdd)+"."+ EndAdd; | |||
return result; | |||
} | |||
return result; | |||
} | |||
/** | |||
* 整形数据缩放 | |||
* @param InputValue 需要缩放的值 | |||
* @param InputMax 需要缩放的最大值 | |||
* @param InputMin 需要缩放的最小值 | |||
* @param OutMax 缩放后的最大值 | |||
* @param OutMin 缩放后的最下值 | |||
* @return | |||
*/ | |||
public static int Scale( int InputValue, int InputMax, int InputMin, int OutMax, int OutMin) | |||
{ | |||
int value = ((OutMax - OutMin) * (InputValue - InputMin)) / (InputMax - InputMin) + OutMin; | |||
return value; | |||
} | |||
} |
@@ -4,12 +4,14 @@ import android.app.Activity; | |||
import android.content.Context; | |||
import android.content.ContextWrapper; | |||
import android.media.MediaPlayer; | |||
import android.net.wifi.rtt.WifiRttManager; | |||
import android.os.Handler; | |||
import android.os.Looper; | |||
import android.util.Log; | |||
import androidx.annotation.NonNull; | |||
import com.bonait.bnframework.HBL.Unity; | |||
import com.bonait.bnframework.R; | |||
import com.bonait.bnframework.common.constant.ConfigName; | |||
import com.bonait.bnframework.common.constant.DataBus; | |||
@@ -18,6 +20,7 @@ import com.bonait.bnframework.common.db.mode.BPA_GOODSRECIPE; | |||
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.db.mode.BPA_SILOS_CALIBRATE; | |||
import com.bonait.bnframework.common.db.res.AlertLogEnum; | |||
import com.bonait.bnframework.common.db.res.ResGoodsMake; | |||
import com.bonait.bnframework.common.db.res.ResGoodsRecipe; | |||
@@ -185,26 +188,48 @@ public class ExecuteTheRecipe { | |||
* @param name m名称 | |||
* @param time 时间 毫秒 | |||
*/ | |||
public static void BottomClick(String name,long time) | |||
{ | |||
try | |||
{ | |||
WritePLC(name,true,null); | |||
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { | |||
@Override | |||
public void run() { | |||
ExecuteTheRecipe.WritePLC(name, false, null); | |||
} | |||
}, time); | |||
}catch (Exception ex) | |||
{ | |||
} | |||
} | |||
// public static void BottomClick(String name,long time) | |||
// { | |||
// try | |||
// { | |||
// WritePLC(name,true,null); | |||
// new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { | |||
// @Override | |||
// public void run() { | |||
// ExecuteTheRecipe.WritePLC(name, false, null); | |||
// } | |||
// }, time); | |||
// }catch (Exception ex) | |||
// { | |||
// | |||
// } | |||
// } | |||
//endregion | |||
//region PLC监听线程 | |||
static List<String> names=new ArrayList<>(); | |||
/** | |||
* 心跳标志 | |||
*/ | |||
static boolean HeartbeatMarkers=false; | |||
static long StartTime=0; | |||
static void Heart(){ | |||
if(!HeartbeatMarkers&&(System.currentTimeMillis()-StartTime)>=3000) { | |||
Write("心跳",true,null); | |||
HeartbeatMarkers=true; | |||
StartTime=System.currentTimeMillis(); | |||
} | |||
if(HeartbeatMarkers&&(System.currentTimeMillis()-StartTime)>=3000){ | |||
Write("心跳",false,null); | |||
HeartbeatMarkers=false; | |||
StartTime=System.currentTimeMillis(); | |||
} | |||
Write("掉线标志",false,null); | |||
} | |||
public static void Listening() { | |||
ConfigName.getInstance().PLC_Address.clear(); | |||
@@ -215,48 +240,50 @@ public class ExecuteTheRecipe { | |||
} | |||
} | |||
names.clear(); | |||
if (ConfigName.getInstance().versionSelectionEnum.equals("配料吧台")) { | |||
names.add("水池温度"); | |||
}else if (ConfigName.getInstance().versionSelectionEnum.equals("奶茶机")) | |||
{ | |||
names.add("水池温度"); | |||
names.add("果糖左温度"); | |||
names.add("果糖右温度"); | |||
} | |||
new Thread(new Runnable() { | |||
@Override | |||
public void run() { | |||
//1.自动模式 | |||
ExecuteTheRecipe.WritePLC("手自切换",true,null); | |||
//1.清除开关 | |||
for (int i=1;i<=20;i++) | |||
{ | |||
ExecuteTheRecipe.WritePLC("通道"+i+"校准开关",false,null); | |||
} | |||
for (int i=1;i<=20;i++) | |||
{ | |||
ExecuteTheRecipe.WritePLC("手动控制"+i,false,null); | |||
} | |||
} | |||
}).start(); | |||
// names.clear(); | |||
// if (ConfigName.getInstance().versionSelectionEnum.equals("配料吧台")) { | |||
// names.add("水池温度"); | |||
// }else if (ConfigName.getInstance().versionSelectionEnum.equals("奶茶机")) | |||
// { | |||
// names.add("水池温度"); | |||
// names.add("果糖左温度"); | |||
// names.add("果糖右温度"); | |||
// } | |||
// new Thread(new Runnable() { | |||
// @Override | |||
// public void run() { | |||
// //1.自动模式 | |||
// ExecuteTheRecipe.WritePLC("手自切换",true,null); | |||
// //1.清除开关 | |||
// for (int i=1;i<=20;i++) | |||
// { | |||
// ExecuteTheRecipe.WritePLC("通道"+i+"校准开关",false,null); | |||
// } | |||
// | |||
// for (int i=1;i<=20;i++) | |||
// { | |||
// ExecuteTheRecipe.WritePLC("手动控制"+i,false,null); | |||
// } | |||
// } | |||
// }).start(); | |||
ThreadManager.Get().StartLong("PLC设备数据监听", true, new IThread() { | |||
@Override | |||
public void Run() throws InterruptedException { | |||
try { | |||
//region 临时屏蔽实时数据 | |||
// for (String item : ConfigName.getInstance().PLC_Address.keySet()) { | |||
// String key = item; | |||
// BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(item); | |||
// if (plcaddress.isread == 1) { | |||
// Object val = ReadPLC(key); | |||
// ListeningValue.put(key, val); | |||
// } | |||
// } | |||
//endregion | |||
//状态读取 | |||
for (String item : ConfigName.getInstance().PLC_Address.keySet()) { | |||
String key = item; | |||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(item); | |||
if (plcaddress.isread == 1) { | |||
Object val = ReadPLC(key); | |||
ListeningValue.put(key, val); | |||
} | |||
} | |||
Heart();//心跳处理 | |||
if(!IsMakeGood) | |||
{ | |||
@@ -268,7 +295,7 @@ public class ExecuteTheRecipe { | |||
} catch (Exception ex) { | |||
ToastUtils.error("异常信息:" + ex.getMessage()); | |||
} | |||
Thread.sleep(500); | |||
Thread.sleep(10); | |||
} | |||
@Override | |||
@@ -323,25 +350,25 @@ public class ExecuteTheRecipe { | |||
} | |||
}); | |||
ThreadManager.Get().StartLong("PLC设备-自动加热补水", true, new IThread() { | |||
@Override | |||
public void Run() throws InterruptedException { | |||
try { | |||
if(!IsMakeGood) | |||
{ | |||
AutoJR(); | |||
} | |||
} catch (Exception ex) { | |||
ToastUtils.error("异常信息:" + ex.getMessage()); | |||
} | |||
Thread.sleep(5000); | |||
} | |||
@Override | |||
public void RunComplete() throws InterruptedException { | |||
} | |||
}); | |||
// ThreadManager.Get().StartLong("PLC设备-自动加热补水", true, new IThread() { | |||
// @Override | |||
// public void Run() throws InterruptedException { | |||
// try { | |||
// if(!IsMakeGood) | |||
// { | |||
// AutoJR(); | |||
// } | |||
// } catch (Exception ex) { | |||
// ToastUtils.error("异常信息:" + ex.getMessage()); | |||
// } | |||
// Thread.sleep(5000); | |||
// } | |||
// | |||
// @Override | |||
// public void RunComplete() throws InterruptedException { | |||
// | |||
// } | |||
// }); | |||
ThreadManager.Get().StartLong("PLC设备数据监听-信号检测", true, new IThread() { | |||
@Override | |||
@@ -409,7 +436,15 @@ public class ExecuteTheRecipe { | |||
} else { | |||
//MessageLog.ShowUserMessage(UserLogEnum.订单处理日志, message + "准备下发【" + silos.num + "】号料仓PLC控制命令,需求量:=" + recipe.value); | |||
int _val = (int)Math.round((Double.parseDouble(recipe.value) * 10)); | |||
WritePLC("需求值" + silos.num, (short) _val, null); | |||
BPA_SILOS_CALIBRATE res = QueryDB.GetSilosCalibrateByNum(silos.num); | |||
if(res!=null){ | |||
String name = silos.name+silos.num+"出料时间"; | |||
int outValue = Unity.Scale(_val,res.inputWightMax,res.inputWightMin,res.outputTimeMax,res.outputTimeMin); | |||
WritePLC(name, (short) outValue, null); | |||
}else{ MessageLog.ShowUserMessage(UserLogEnum.订单处理日志, message + "下发失败!物料没有对应的校准值!");} | |||
//減去料仓数量 | |||
int otherG=silos.silosmargin-(_val/10); | |||
@@ -527,6 +562,10 @@ public class ExecuteTheRecipe { | |||
} | |||
} | |||
public static void Write(Object plcName,Object value,IWriteCallBack callBack){ | |||
WritePLC(plcName.toString(),value,callBack); | |||
} | |||
/** | |||
* 读PLC数据 | |||
* | |||
@@ -581,6 +620,30 @@ public class ExecuteTheRecipe { | |||
} | |||
} | |||
public static boolean ReadBool(Object plcName){ | |||
try{ | |||
return Boolean.getBoolean(ReadPLC(plcName.toString()).toString()); | |||
}catch(Exception e){ | |||
return false; | |||
} | |||
} | |||
public static short ReadShort(Object plcName){ | |||
try{ | |||
return Short.parseShort(ReadPLC(plcName.toString()).toString()); | |||
}catch(Exception e){ | |||
return 0; | |||
} | |||
} | |||
public static int ReadInt(Object plcName){ | |||
try{ | |||
return Integer.getInteger(ReadPLC(plcName.toString()).toString()); | |||
}catch(Exception e){ | |||
return 0; | |||
} | |||
} | |||
/** | |||
* 读PLC数据 | |||
* | |||
@@ -710,13 +773,13 @@ public class ExecuteTheRecipe { | |||
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) -> { | |||
ModbusTcpServer.get().ReadString(plcaddress.address, 39, (data) -> { | |||
if(!data.isEmpty() && !Code.equals(data) && OnScanTheCodeInformationT != null) | |||
{ | |||
Log.d("信息", "扫码数据: "+data); | |||
OnScanTheCodeInformationT.Run(data); | |||
ModbusTcpServer.get().WriteString(plcaddress.address, 40, null); | |||
ModbusTcpServer.get().WriteString(plcaddress.address, 39, null); | |||
} | |||
//记录上一次读取PLC 扫码数据 | |||
@@ -0,0 +1,5 @@ | |||
package com.bonait.bnframework.business; | |||
public class PLCControl { | |||
} |
@@ -0,0 +1,13 @@ | |||
package com.bonait.bnframework.business; | |||
public enum PLCName { | |||
重量清零, | |||
当前重量, | |||
外置仓1出料时间, | |||
外置仓2出料时间, | |||
外置仓3出料时间, | |||
外置仓4出料时间, | |||
外置仓5出料时间, | |||
} |
@@ -6,6 +6,7 @@ import android.content.Context; | |||
import androidx.fragment.app.Fragment; | |||
import androidx.fragment.app.FragmentManager; | |||
import com.bonait.bnframework.HBL.Unity; | |||
import com.bonait.bnframework.R; | |||
import com.bonait.bnframework.common.db.mode.BPA_PLCADDRESS; | |||
import com.bonait.bnframework.common.db.mode.BPA_SILOS; | |||
@@ -556,260 +557,82 @@ public class ConfigName { | |||
*/ | |||
public List<Res_PLCADDRESS> PlcAddress_配料吧台 = new ArrayList<Res_PLCADDRESS>() {{ | |||
//通道校准 | |||
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("配料次数", "VD90", 1, 1)); | |||
add(new Res_PLCADDRESS("反转时间", "VW94", 1, 1));//pl | |||
//add(new Res_PLCADDRESS("基准时间", "VW96", 1, 1)); | |||
add(new Res_PLCADDRESS("基准时间", "VW98", 1, 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("配料启动", "M0.0", 0, 1)); | |||
add(new Res_PLCADDRESS("配料完成", "M0.1", 1, 1)); | |||
add(new Res_PLCADDRESS("按钮配料启动", "I0.0", 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("外置仓", "-------------", 0, 0)); | |||
for (int i=1;i<=5;i++){ | |||
add(new Res_PLCADDRESS("外置仓"+i+"出料时间", "VW"+(98+(i*2)), 0, 1)); | |||
add(new Res_PLCADDRESS("外置仓"+i+"启停控制", "M10."+(i-1), 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("加热仓", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("加热仓1出料时间", "VW110", 0, 1)); | |||
add(new Res_PLCADDRESS("加热仓1启停控制", "M10.5", 1, 1)); | |||
add(new Res_PLCADDRESS("加热仓2出料时间", "VW112", 0, 1)); | |||
add(new Res_PLCADDRESS("加热仓2启停控制", "M10.6", 1, 1)); | |||
add(new Res_PLCADDRESS("粉料仓", "-------------", 0, 0)); | |||
for (int i=1;i<=6;i++){ | |||
add(new Res_PLCADDRESS("粉料仓"+i+"出料时间", "VW"+(112+(i*2)), 0, 1)); | |||
add(new Res_PLCADDRESS("粉料仓"+i+"启停控制", Unity.GetSiemensBitSingleAdd("M",7+i,10), 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("液体仓", "-------------", 0, 0)); | |||
for (int i=1;i<=4;i++){ | |||
add(new Res_PLCADDRESS("液体仓"+i+"出料时间", "VW"+(124+(i*2)), 0, 1)); | |||
add(new Res_PLCADDRESS("液体仓"+i+"启停控制", Unity.GetSiemensBitSingleAdd("M",5+i,11), 1, 1)); | |||
} | |||
add(new Res_PLCADDRESS("通道1补偿开关", "VW194.0", 1, 1)); | |||
add(new Res_PLCADDRESS("通道2补偿开关", "VW194.1", 1, 1)); | |||
add(new Res_PLCADDRESS("通道3补偿开关", "VW194.2", 1, 1)); | |||
add(new Res_PLCADDRESS("通道4补偿开关", "VW194.3", 1, 1)); | |||
add(new Res_PLCADDRESS("通道5补偿开关", "VW194.4", 1, 1)); | |||
add(new Res_PLCADDRESS("通道6补偿开关", "VW194.5", 1, 1)); | |||
add(new Res_PLCADDRESS("备用仓", "-------------", 0, 0)); | |||
for (int i=1;i<=9;i++){ | |||
add(new Res_PLCADDRESS("备用仓"+i+"出料时间", "VW"+(132+(i*2)), 0, 1)); | |||
add(new Res_PLCADDRESS("备用仓"+i+"启停控制", Unity.GetSiemensBitSingleAdd("M",1+i,12), 1, 1)); | |||
} | |||
//电子秤校验 | |||
add(new Res_PLCADDRESS("电子秤校验", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("称当前重量", "VD344", 1, 0)); | |||
//add(new Res_PLCADDRESS("砝码值", "VW94", 1, 1)); | |||
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("清洗状态", "M1.6", 1, 0)); | |||
//温度监控 | |||
add(new Res_PLCADDRESS("温度控制", "-------------", 0, 0)); | |||
// add(new Res_PLCADDRESS("水池温度", "VD354", 1, 0)); | |||
// add(new Res_PLCADDRESS("水池温度设置", "VD378", 1, 1)); | |||
// add(new Res_PLCADDRESS("水池温度加热", "M104.1", 1, 0)); | |||
// | |||
// add(new Res_PLCADDRESS("果糖左温度", "VD358", 1, 0)); | |||
// add(new Res_PLCADDRESS("果糖左温度设置", "VD382", 1, 1)); | |||
// add(new Res_PLCADDRESS("果糖左温度加热", "M103.7", 1, 0)); | |||
// | |||
// add(new Res_PLCADDRESS("果糖右温度", "VD362", 1, 0)); | |||
// add(new Res_PLCADDRESS("果糖右温度设置", "VD386", 1, 1)); | |||
// add(new Res_PLCADDRESS("果糖右温度加热", "M104.0", 1, 0)); | |||
add(new Res_PLCADDRESS("水池温度", "VD352", 1, 0)); | |||
add(new Res_PLCADDRESS("水池温度设置", "VD360", 1, 1)); | |||
add(new Res_PLCADDRESS("水池温度加热", "M104.0", 1, 0)); | |||
//自动清洗 | |||
add(new Res_PLCADDRESS("自动清洗", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("排水阀排水时间", "VW244", 1, 1)); | |||
add(new Res_PLCADDRESS("循环清洗时间", "VW246", 1, 1)); | |||
add(new Res_PLCADDRESS("加热时间", "VW248", 1, 1)); | |||
add(new Res_PLCADDRESS("自动补水延迟时间", "VW250", 1, 1)); | |||
add(new Res_PLCADDRESS("清洗模式", "M0.4", 1, 1)); | |||
add(new Res_PLCADDRESS("自动清洗开始", "M0.5", 1, 1)); | |||
add(new Res_PLCADDRESS("自动清洗完成", "M0.6", 1, 1)); | |||
//手动控制 | |||
add(new Res_PLCADDRESS("手动控制", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("手动控制1", "M50.0", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制2", "M50.1", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制3", "M50.2", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制4", "M50.3", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制5", "M50.4", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制6", "M50.5", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制7", "M51.4", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制8", "M51.5", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制9", "M51.6", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制10", "M51.7", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制11", "M52.0", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制12", "M52.1", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制13", "M52.2", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制14", "M52.3", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制15", "M52.4", 1, 1)); | |||
add(new Res_PLCADDRESS("手动控制16", "M52.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("保温池进水阀", "M103.4", 1, 1)); | |||
add(new Res_PLCADDRESS("保温池排水阀", "M103.5", 1, 1)); | |||
add(new Res_PLCADDRESS("猪油管道保温", "M103.6", 1, 1)); | |||
add(new Res_PLCADDRESS("牛油管道保温", "M103.7", 1, 1)); | |||
add(new Res_PLCADDRESS("保温池加热", "M104.0", 1, 1)); | |||
add(new Res_PLCADDRESS("三色灯-绿", "M104.1", 1, 1)); | |||
add(new Res_PLCADDRESS("三色灯-红", "M104.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)); | |||
add(new Res_PLCADDRESS("水池液位检测", "M5.2", 1, 0)); | |||
add(new Res_PLCADDRESS("出料口检测", "M5.3", 1, 0)); | |||
add(new Res_PLCADDRESS("水池进水阀", "M103.4", 1, 1)); | |||
add(new Res_PLCADDRESS("水池排水阀-开", "M103.5", 1, 1)); | |||
add(new Res_PLCADDRESS("水池排水阀-关", "M103.5", 1, 1)); | |||
add(new Res_PLCADDRESS("管道自动排水", "M5.4", 1, 1)); | |||
add(new Res_PLCADDRESS("管道自动排水完成", "M5.5", 1, 1)); | |||
add(new Res_PLCADDRESS("电子秤", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("称当前重量", "VW82", 1, 0)); | |||
add(new Res_PLCADDRESS("砝码值", "VW86", 1, 1)); | |||
add(new Res_PLCADDRESS("重量清零", "M20.2", 0, 1)); | |||
add(new Res_PLCADDRESS("校准模式", "M20.1", 0, 1)); | |||
add(new Res_PLCADDRESS("关闭写保护", "M20.2", 0, 1)); | |||
add(new Res_PLCADDRESS("零点校准", "M20.3", 0, 1)); | |||
add(new Res_PLCADDRESS("砝码值写入", "M20.4", 0, 1)); | |||
add(new Res_PLCADDRESS("打开写保护", "M20.5", 0, 1)); | |||
add(new Res_PLCADDRESS("其它数据", "-------------", 0, 0)); | |||
add(new Res_PLCADDRESS("扫码数据", "VW2", 1, 0)); | |||
add(new Res_PLCADDRESS("掉线标志", "M100.0", 1, 1)); | |||
add(new Res_PLCADDRESS("心跳", "M100.1", 0, 1)); | |||
}}; | |||
/** | |||
* 配料吧台料仓模型 | |||
*/ | |||
public List<ResSilosModel> Silos_配料吧台 = new ArrayList<ResSilosModel>() {{ | |||
add(new ResSilosModel("外置仓",1 , 1 )); | |||
add(new ResSilosModel("外置仓",2 , 2 )); | |||
add(new ResSilosModel("外置仓",3 , 3 )); | |||
add(new ResSilosModel("外置仓",4 , 4 )); | |||
add(new ResSilosModel("外置仓",5 , 5 )); | |||
add(new ResSilosModel("外置仓",6 , 6 )); | |||
add(new ResSilosModel("粉料仓",7 , 7 )); | |||
add(new ResSilosModel("粉料仓",8 , 8 )); | |||
add(new ResSilosModel("粉料仓",9 , 9 )); | |||
add(new ResSilosModel("液料仓",13, 10)); | |||
add(new ResSilosModel("液料仓",14, 11)); | |||
add(new ResSilosModel("加热仓",15, 12)); | |||
add(new ResSilosModel("加热仓",16, 13)); | |||
add(new ResSilosModel("粉料仓",10, 14)); | |||
add(new ResSilosModel("粉料仓",11, 15)); | |||
add(new ResSilosModel("粉料仓",12, 16)); | |||
int num=0; | |||
for(int i=1;i<=5;i++){ | |||
num++; | |||
add(new ResSilosModel("外置仓",num , num )); | |||
} | |||
for(int i=1;i<=6;i++){ | |||
num++; | |||
add(new ResSilosModel("粉料仓",num, num )); | |||
} | |||
for(int i=1;i<=4;i++){ | |||
num++; | |||
add(new ResSilosModel("液体仓",num, num )); | |||
} | |||
for(int i=1;i<=2;i++){ | |||
num++; | |||
add(new ResSilosModel("加热仓",num, num )); | |||
} | |||
}}; | |||
/** | |||
@@ -3144,7 +3144,7 @@ public class QueryDB { | |||
* @param inputMax | |||
* @param inputMin | |||
*/ | |||
public static void UpdateSilosCalibrate(String id, int outputMax,int outputMin,int inputMax,int inputMin) { | |||
public static boolean UpdateSilosCalibrate(String id, int outputMax,int outputMin,int inputMax,int inputMin) { | |||
BPA_SILOS_CALIBRATE silos = GetSilosCalibrate(id); | |||
if (silos != null) { | |||
if(outputMax>=0){ | |||
@@ -3159,9 +3159,9 @@ public class QueryDB { | |||
if(inputMin>=0){ | |||
silos.inputWightMin = inputMin; | |||
} | |||
Update(BPA_SILOS_CALIBRATE.class, silos); | |||
// ModbusHelper.get().Add(QueryDB.GetSilosCalibrateAll()); | |||
return Update(BPA_SILOS_CALIBRATE.class, silos); | |||
} | |||
return false; | |||
} | |||
//endregion | |||
@@ -3579,6 +3579,16 @@ public class QueryDB { | |||
((BPA_PLCADDRESS) data).isread = cursor.getInt((int) cursor.getColumnIndex("isread")); | |||
((BPA_PLCADDRESS) data).iswrite = cursor.getInt((int) cursor.getColumnIndex("iswrite")); | |||
break; | |||
case "BPA_SILOS_CALIBRATE": | |||
data = new BPA_SILOS_CALIBRATE(); | |||
//私有 | |||
((BPA_SILOS_CALIBRATE) data).name = cursor.getString((int) cursor.getColumnIndex("name")); | |||
((BPA_SILOS_CALIBRATE) data).inputWightMin = cursor.getInt((int) cursor.getColumnIndex("inputWightMin")); | |||
((BPA_SILOS_CALIBRATE) data).inputWightMax = cursor.getInt((int) cursor.getColumnIndex("inputWightMax")); | |||
((BPA_SILOS_CALIBRATE) data).outputTimeMin = cursor.getInt((int) cursor.getColumnIndex("outputTimeMin")); | |||
((BPA_SILOS_CALIBRATE) data).outputTimeMax = cursor.getInt((int) cursor.getColumnIndex("outputTimeMax")); | |||
((BPA_SILOS_CALIBRATE) data).num = cursor.getInt((int) cursor.getColumnIndex("num")); | |||
break; | |||
} | |||
((ModeBase) data).id = cursor.getString((int) cursor.getColumnIndex("id")); | |||
((ModeBase) data).createTime = cursor.getString((int) cursor.getColumnIndex("createTime")); | |||
@@ -18,6 +18,18 @@ public class BPA_SILOS_CALIBRATE extends ModeBase { | |||
//输入重量最小值: g | |||
public int inputWightMin; | |||
public BPA_SILOS_CALIBRATE(String _nmae,int _num,int _OutMax,int _OutMin,int _InputMax,int _InputMin){ | |||
name=_nmae; | |||
num=_num; | |||
outputTimeMax=_OutMax; | |||
outputTimeMin=_OutMin; | |||
inputWightMax=_InputMax; | |||
inputWightMin=_InputMin; | |||
} | |||
public BPA_SILOS_CALIBRATE(){ | |||
} | |||
@Override | |||
public String toString() { | |||
@@ -180,7 +180,7 @@ public class BottomNavigationMainActivity extends BaseActivity{ | |||
//判断连接环境 | |||
ConfigData.getInstance().ToggleEnvironment(); | |||
//2.初始化PLC | |||
ReconnectModbus(); | |||
// ReconnectModbus(); | |||
//MQTT数据监听 | |||
OrderServer.Get().MqttInit(); | |||
@@ -1,12 +1,14 @@ | |||
package com.bonait.bnframework.modules.home.fragment.mode; | |||
import android.app.Activity; | |||
import android.app.ProgressDialog; | |||
import android.content.Context; | |||
import android.content.DialogInterface; | |||
import android.graphics.Color; | |||
import android.os.Handler; | |||
import android.os.Message; | |||
import android.os.SystemClock; | |||
import android.provider.ContactsContract; | |||
import android.util.AttributeSet; | |||
import android.util.Log; | |||
import android.view.LayoutInflater; | |||
@@ -26,19 +28,29 @@ import androidx.annotation.NonNull; | |||
import androidx.annotation.Nullable; | |||
import androidx.fragment.app.FragmentManager; | |||
import com.bonait.bnframework.HBL.Dialog.AlertDialogButton; | |||
import com.bonait.bnframework.HBL.Dialog.DialogManager; | |||
import com.bonait.bnframework.HBL.Dialog.WaitDialog; | |||
import com.bonait.bnframework.HBL.Executor; | |||
import com.bonait.bnframework.HBL.Interface.IFunc; | |||
import com.bonait.bnframework.HBL.Trig.TTrig; | |||
import com.bonait.bnframework.HBL.Unity; | |||
import com.bonait.bnframework.R; | |||
import com.bonait.bnframework.business.ExecuteTheRecipe; | |||
import com.bonait.bnframework.business.PLCName; | |||
import com.bonait.bnframework.common.constant.ConfigName; | |||
import com.bonait.bnframework.common.db.QueryDB; | |||
import com.bonait.bnframework.common.db.mode.BPA_MATERIAL; | |||
import com.bonait.bnframework.common.db.mode.BPA_SILOS; | |||
import com.bonait.bnframework.common.db.mode.BPA_SILOSANDMATERIAL; | |||
import com.bonait.bnframework.common.db.mode.BPA_SILOS_CALIBRATE; | |||
import com.bonait.bnframework.common.db.res.lcMode; | |||
import com.bonait.bnframework.common.helper.I.IRun; | |||
import com.bonait.bnframework.common.helper.I.IWriteCallBack; | |||
import com.bonait.bnframework.common.helper.I.MyClickListener; | |||
import com.bonait.bnframework.common.model.mode.ResMenuLeft; | |||
import com.bonait.bnframework.common.utils.ToastUtils; | |||
import com.bonait.bnframework.modules.home.fragment.from.SilosNewActivity; | |||
import com.qmuiteam.qmui.arch.QMUIFragment; | |||
import com.qmuiteam.qmui.arch.QMUIFragmentPagerAdapter; | |||
import com.qmuiteam.qmui.widget.QMUIViewPager; | |||
@@ -47,6 +59,7 @@ import com.qmuiteam.qmui.widget.tab.QMUIBasicTabSegment; | |||
import com.qmuiteam.qmui.widget.tab.QMUITabSegment; | |||
import com.suke.widget.SwitchButton; | |||
import java.io.Console; | |||
import java.math.BigDecimal; | |||
import java.text.DecimalFormat; | |||
import java.util.ArrayList; | |||
@@ -75,80 +88,26 @@ public class silos_jiaoyan extends LinearLayout { | |||
*/ | |||
public MyClickListener mListener=null; | |||
private View root; | |||
//endregion | |||
//region 界面布局 | |||
@BindView(R.id.wuliaojiaozhun) | |||
LinearLayout wuliaojiaozhun; | |||
@BindView(R.id.manguanjiaozhun) | |||
LinearLayout manguanjiaozhun; | |||
@BindView(R.id.jiaoliaojiaozhun) | |||
LinearLayout jiaoliaojiaozhun; | |||
@BindView(R.id.buchangjiaozhun) | |||
LinearLayout buchangjiaozhun; | |||
//endregion | |||
//region 称相关 | |||
// @BindView(R.id.dianzicheng1) | |||
// TextView dianzicheng1; | |||
@BindView(R.id.dianzicheng2) | |||
TextView dianzicheng2; | |||
@BindView(R.id.dianzicheng3) | |||
TextView dianzicheng3; | |||
// @BindView(R.id.chuliaokeshu1) | |||
// EditText chuliaokeshu1; | |||
@BindView(R.id.chuliaokeshu2) | |||
EditText chuliaokeshu2; | |||
@BindView(R.id.chuliaokeshu3) | |||
EditText chuliaokeshu3; | |||
//endregion | |||
@BindView(R.id.min_time) | |||
EditText min_time; | |||
//region 满管 | |||
@BindView(R.id.runtime) | |||
Chronometer runtime; | |||
@BindView(R.id.min_weight) | |||
EditText min_weight; | |||
@BindView(R.id.exit_mgjz) | |||
EditText exit_mgjz; | |||
@BindView(R.id.max_time) | |||
EditText max_time; | |||
final int[] time = {0}; | |||
@BindView(R.id.max_weight) | |||
EditText max_weight; | |||
final int[] zl = {0}; | |||
public boolean isStartMg=false; | |||
@BindView(R.id.sim_discharge_weight) | |||
EditText sim_discharge_weight; | |||
//endregion | |||
//region 物料校准变量 | |||
// @BindView(R.id.wljz1) | |||
// EditText wljz1; | |||
// @BindView(R.id.wljz2) | |||
// EditText wljz2; | |||
// @BindView(R.id.wljz3) | |||
// EditText wljz3; | |||
// @BindView(R.id.text_wljz) | |||
// TextView text_wljz2; | |||
//endregion | |||
//region 通道补偿 | |||
@BindView(R.id.control_switch) | |||
SwitchButton control_switch; | |||
@BindView(R.id.bcjz_gxs) | |||
EditText bcjz_gxs; | |||
@BindView(R.id.bcjz_dxs) | |||
EditText bcjz_dxs; | |||
@BindView(R.id.bcjz_clsj) | |||
EditText bcjz_clsj; | |||
//endregion | |||
public silos_jiaoyan(Context context, @Nullable AttributeSet attrs) { | |||
super(context, attrs); | |||
// root= LayoutInflater.from(context).inflate(R.layout.silos_jiaoyan_item, this); | |||
root= LayoutInflater.from(context).inflate(R.layout.silos_jiaoyan_item_edit, this); | |||
ButterKnife.bind(this, root); | |||
//初始化界面控件的事件 | |||
@@ -156,20 +115,6 @@ public class silos_jiaoyan extends LinearLayout { | |||
} | |||
@BindView(R.id.text_wlkz) | |||
TextView text_wlkz; | |||
@BindView(R.id.text_mgkz) | |||
TextView text_mgkz; | |||
@BindView(R.id.text_jlkz) | |||
TextView text_jlkz; | |||
@BindView(R.id.text_bckz) | |||
TextView text_bckz; | |||
@BindView(R.id.text_jlkz1) | |||
TextView text_jlkz1; | |||
@BindView(R.id.text_bckz1) | |||
TextView text_bckz1; | |||
/** | |||
* 初始化数据 | |||
@@ -177,27 +122,6 @@ public class silos_jiaoyan extends LinearLayout { | |||
private void initData() | |||
{ | |||
title_bc.setText(lcMode.num+" "+lcMode.materialName); | |||
if(lcMode.name.equals("外置仓")) | |||
{ | |||
text_jlkz.setVisibility(View.VISIBLE); | |||
text_bckz.setVisibility(View.VISIBLE); | |||
text_jlkz1.setVisibility(View.VISIBLE); | |||
text_bckz1.setVisibility(View.VISIBLE); | |||
// text_wljz2.setVisibility(View.GONE); | |||
// wljz2.setVisibility(View.GONE); | |||
}else | |||
{ | |||
text_jlkz.setVisibility(View.GONE); | |||
text_bckz.setVisibility(View.GONE); | |||
text_jlkz1.setVisibility(View.GONE); | |||
text_bckz1.setVisibility(View.GONE); | |||
// text_wljz2.setVisibility(View.GONE); | |||
// wljz2.setVisibility(View.GONE); | |||
} | |||
} | |||
private void initEvent() | |||
@@ -206,63 +130,11 @@ public class silos_jiaoyan extends LinearLayout { | |||
close_from.setOnClickListener(new View.OnClickListener() { | |||
@Override | |||
public void onClick(View v) { | |||
// new Thread(new Runnable() { | |||
// @Override | |||
// public void run() { | |||
// try { | |||
// ExecuteTheRecipe.WritePLC("通道" + lcMode.num + "校准开关", false, null); | |||
// ExecuteTheRecipe.WritePLC("手自切换", true, null); | |||
// } catch (Exception e) { | |||
// | |||
// } | |||
// } | |||
// }).start(); | |||
if (mListener != null) { | |||
mListener.clickListenerNew(v,0,null); | |||
} | |||
} | |||
}); | |||
text_wlkz.setOnClickListener(new View.OnClickListener() { | |||
@Override | |||
public void onClick(View v) { | |||
InitView("物料校准"); | |||
} | |||
}); | |||
text_mgkz.setOnClickListener(new View.OnClickListener() { | |||
@Override | |||
public void onClick(View v) { | |||
InitView("满管校准"); | |||
} | |||
}); | |||
text_jlkz.setOnClickListener(new View.OnClickListener() { | |||
@Override | |||
public void onClick(View v) { | |||
InitView("酱料校准"); | |||
} | |||
}); | |||
text_bckz.setOnClickListener(new View.OnClickListener() { | |||
@Override | |||
public void onClick(View v) { | |||
InitView("补偿校准"); | |||
} | |||
}); | |||
control_switch.setOnCheckedChangeListener(new SwitchButton.OnCheckedChangeListener() { | |||
@Override | |||
public void onCheckedChanged(SwitchButton view, boolean isChecked) { | |||
//设置 | |||
boolean isopen = control_switch.isChecked(); | |||
if (ConfigName.getInstance().PlcIsConnect) { | |||
lcMode.isOpenbcsf=isopen?1:0; | |||
ExecuteTheRecipe.WritePLC("通道" + lcMode.num + "补偿开关", isopen, null); | |||
QueryDB.UpdateSilosisOpenbcsf(lcMode.id, isopen); | |||
ToastUtils.info(lcMode.name.toString() + (isopen ? "打开" : "关闭") + "成功!"); | |||
} else { | |||
ToastUtils.warning(lcMode.name.toString() + (isopen ? "打开" : "关闭") + "失败!PLC未连接!!"); | |||
} | |||
} | |||
}); | |||
} | |||
Activity activity =null; | |||
@@ -277,6 +149,20 @@ public class silos_jiaoyan extends LinearLayout { | |||
initData(); | |||
InitView("物料校准"); | |||
Run(); | |||
BPA_SILOS_CALIBRATE res = QueryDB.GetSilosCalibrateByNum(lcMode.num); | |||
if(res!=null){ | |||
min_time.setText(String.valueOf(res.outputTimeMin)); | |||
max_time.setText(String.valueOf(res.outputTimeMax)); | |||
min_weight.setText(String.valueOf(res.inputWightMax)); | |||
max_weight.setText(String.valueOf(res.inputWightMax)); | |||
}else{ | |||
min_time.setText("2"); | |||
max_time.setText("2"); | |||
min_weight.setText("0"); | |||
max_weight.setText("0"); | |||
} | |||
} | |||
@@ -287,65 +173,6 @@ public class silos_jiaoyan extends LinearLayout { | |||
*/ | |||
public void InitView(String _TypeName) { | |||
TypeName=_TypeName; | |||
switch (TypeName) { | |||
case "满管校准": | |||
wuliaojiaozhun.setVisibility(View.GONE); | |||
manguanjiaozhun.setVisibility(View.VISIBLE); | |||
jiaoliaojiaozhun.setVisibility(View.GONE); | |||
buchangjiaozhun.setVisibility(View.GONE); | |||
text_wlkz.setTextColor(Color.BLACK); | |||
text_mgkz.setTextColor(Color.parseColor("#7dcce1")); | |||
text_jlkz.setTextColor(Color.BLACK); | |||
text_bckz.setTextColor(Color.BLACK); | |||
break; | |||
case "酱料校准": | |||
wuliaojiaozhun.setVisibility(View.GONE); | |||
manguanjiaozhun.setVisibility(View.GONE); | |||
jiaoliaojiaozhun.setVisibility(View.VISIBLE); | |||
buchangjiaozhun.setVisibility(View.GONE); | |||
text_wlkz.setTextColor(Color.BLACK); | |||
text_mgkz.setTextColor(Color.BLACK); | |||
text_jlkz.setTextColor(Color.parseColor("#7dcce1")); | |||
text_bckz.setTextColor(Color.BLACK); | |||
break; | |||
case "补偿校准": | |||
wuliaojiaozhun.setVisibility(View.GONE); | |||
manguanjiaozhun.setVisibility(View.GONE); | |||
jiaoliaojiaozhun.setVisibility(View.GONE); | |||
buchangjiaozhun.setVisibility(View.VISIBLE); | |||
text_wlkz.setTextColor(Color.BLACK); | |||
text_mgkz.setTextColor(Color.BLACK); | |||
text_jlkz.setTextColor(Color.BLACK); | |||
text_bckz.setTextColor(Color.parseColor("#7dcce1")); | |||
break; | |||
default: | |||
wuliaojiaozhun.setVisibility(View.VISIBLE); | |||
manguanjiaozhun.setVisibility(View.GONE); | |||
jiaoliaojiaozhun.setVisibility(View.GONE); | |||
buchangjiaozhun.setVisibility(View.GONE); | |||
text_wlkz.setTextColor(Color.parseColor("#7dcce1")); | |||
text_mgkz.setTextColor(Color.BLACK); | |||
text_jlkz.setTextColor(Color.BLACK); | |||
text_bckz.setTextColor(Color.BLACK); | |||
break; | |||
} | |||
/** | |||
* 计时器超时 | |||
*/ | |||
runtime.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { | |||
@Override | |||
public void onChronometerTick(Chronometer chronometer) { | |||
//如果计时到现在超过了一小时秒 20s | |||
if (SystemClock.elapsedRealtime() - runtime.getBase() > 20 * 1000) { | |||
mHandler.sendEmptyMessage(1); | |||
} | |||
} | |||
}); | |||
} | |||
//endregion | |||
@@ -360,11 +187,6 @@ public class silos_jiaoyan extends LinearLayout { | |||
@Override | |||
public void Run() { | |||
mHandler.sendEmptyMessage(0); | |||
if ((ExecuteTheRecipe.OutletWeigh >= (zl[0] + 2)) && isStartMg)//当前重量大于2g | |||
{ | |||
isStartMg=false; | |||
mHandler.sendEmptyMessage(1); | |||
} | |||
} | |||
}; | |||
//通道校准完成 | |||
@@ -415,28 +237,6 @@ public class silos_jiaoyan extends LinearLayout { | |||
ExecuteTheRecipe.WritePLC("通道" + lcMode.num + "校准开关", true, null); | |||
if(activity!=null) | |||
{ | |||
activity.runOnUiThread(new Runnable() { | |||
@Override | |||
public void run() { | |||
exit_mgjz.setText(lcMode.bValue + ""); | |||
//填充校准时间 | |||
String time = lcMode.jTime == null ? "0.0" : lcMode.jTime; | |||
String ftime = lcMode.fTime == null ? "0.0" : lcMode.fTime; | |||
String jvalue = lcMode.jValue == null ? "0.0" : lcMode.jValue; | |||
// wljz1.setText(time); | |||
// wljz2.setText(ftime); | |||
// wljz3.setText(jvalue); | |||
String Gxs = lcMode.Gxs == null ? "0.0" : lcMode.Gxs; | |||
String Lxs = lcMode.Lxs == null ? "0.0" : lcMode.Lxs; | |||
String tdclsj = lcMode.tdclsj == null ? "0.0" : lcMode.tdclsj; | |||
control_switch.setChecked(lcMode.isOpenbcsf == 1); | |||
bcjz_gxs.setText(Gxs); | |||
bcjz_dxs.setText(Lxs); | |||
bcjz_clsj.setText(tdclsj); | |||
} | |||
}); | |||
} | |||
} | |||
}).start(); | |||
@@ -449,389 +249,122 @@ public class silos_jiaoyan extends LinearLayout { | |||
*/ | |||
private Handler mHandler = new Handler() { | |||
public void handleMessage(Message msg) { | |||
switch (msg.what) { | |||
case 0: | |||
// dianzicheng1.setText(String.valueOf((int) ExecuteTheRecipe.OutletWeigh / 10.0) + " g"); | |||
dianzicheng2.setText(String.valueOf((int) ExecuteTheRecipe.OutletWeigh / 10.0) + " g"); | |||
dianzicheng3.setText(String.valueOf((int) ExecuteTheRecipe.OutletWeigh / 10.0) + " g"); | |||
break; | |||
case 1: | |||
time[0] = StopTime(); | |||
lcMode.bValue = time[0]; | |||
exit_mgjz.setText(time[0] + ""); | |||
QueryDB.UpdateMGTime(lcMode.id, time[0]); | |||
break; | |||
case 2: | |||
break; | |||
} | |||
} | |||
}; | |||
//endregion | |||
//region 点击事件 | |||
@OnClick({ | |||
// R.id.qingling1,R.id.chuliao1, | |||
R.id.qingling2, R.id.qingling3, | |||
R.id.chuliao2, R.id.chuliao3, | |||
R.id.click_mgjz, R.id.click_mgjz_save, | |||
R.id.click_wljz, R.id.click_wljz_save, | |||
R.id.click_bcjz_save, | |||
}) | |||
public void onViewClicked(View view) { | |||
switch (view.getId()) { | |||
case R.id.qingling1: | |||
case R.id.qingling2: | |||
case R.id.qingling3: | |||
dzcql(); | |||
break; | |||
case R.id.chuliao1: | |||
case R.id.chuliao2: | |||
case R.id.chuliao3: | |||
mncl(); | |||
break; | |||
case R.id.click_mgjz://满管校准 | |||
zl[0] = ExecuteTheRecipe.OutletWeigh; | |||
StartTime(); | |||
break; | |||
case R.id.click_mgjz_save://满管校准 保存参数 | |||
String value1 = exit_mgjz.getText().toString(); | |||
int val1 = 0; | |||
try { | |||
val1 = (value1 == null || value1.isEmpty()) ? 0 : Integer.parseInt(value1); | |||
lcMode.bValue = val1; | |||
QueryDB.UpdateMGTime(lcMode.id, val1); | |||
ToastUtils.info("校准时间保存成功!"); | |||
} catch (Exception e) { | |||
} | |||
break; | |||
case R.id.click_wljz://物料校准 | |||
WLJZ(); | |||
break; | |||
case R.id.click_wljz_save://物料校准 保存参数 | |||
SaveWLJZ(); | |||
break; | |||
case R.id.click_bcjz_save://补偿校准 保存参数 | |||
SaveBCJZ(); | |||
break; | |||
} | |||
} | |||
//endregion | |||
//region 电子秤清零 | |||
/** | |||
* 电子秤清零 | |||
*/ | |||
public void dzcql() { | |||
ExecuteTheRecipe.WritePLC("重量清零", true, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ToastUtils.info("清零成功!"); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.error("清零失败!"); | |||
} | |||
}); | |||
} | |||
//endregion | |||
//region 模拟出料 | |||
/** | |||
* 模拟出料 | |||
*/ | |||
public void mncl() { | |||
// String zltext = chuliaokeshu1.getText().toString(); | |||
// if (TypeName.equals("物料校准")) { | |||
// zltext = chuliaokeshu1.getText().toString(); | |||
// } else if (TypeName.equals("酱料校准")) { | |||
// zltext = chuliaokeshu2.getText().toString(); | |||
// } else if (TypeName.equals("补偿校准")) { | |||
// zltext = chuliaokeshu3.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 <= 0) { | |||
ToastUtils.warning("出料重量至少大于0g!"); | |||
return; | |||
} | |||
if (ConfigName.getInstance().versionSelectionEnum.equals("奶茶机")) | |||
{ | |||
if (!ExecuteTheRecipe.IsCup) { | |||
ToastUtils.warning("出料口没有检测到器皿!"); | |||
return; | |||
} | |||
} | |||
short kkk = (short) ((int) (zl * 10)); | |||
new Thread(new Runnable() { | |||
@Override | |||
public void run() { | |||
try { | |||
ExecuteTheRecipe.WritePLC("配料完成", false, null); | |||
ExecuteTheRecipe.WritePLC("手自切换", true, null); | |||
int otherG=lcMode.silosmargin-(kkk/10); | |||
QueryDB.UpdateYL(lcMode.id,otherG>=0?otherG:0); | |||
ExecuteTheRecipe.WritePLC("需求值" + lcMode.num, kkk, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ExecuteTheRecipe.WritePLC("配料启动", true, null); | |||
ToastUtils.warning("启动成功......"); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
} | |||
}); | |||
} catch (Exception e) { | |||
} | |||
} | |||
}).start(); | |||
ToastUtils.info("需求值下发成功!开始配料......"); | |||
} | |||
}; | |||
//endregion | |||
//region 保存物料校准参数 | |||
public void SaveWLJZ() { | |||
// String stime = wljz1.getText().toString(); | |||
// String ftime = wljz2.getText().toString(); | |||
// String zl = wljz3.getText().toString(); | |||
// if (stime.equals("")) { | |||
// ToastUtils.warning("校准基准时间不能为空!"); | |||
// return; | |||
// } | |||
if (zl.equals("")) { | |||
ToastUtils.warning("校准重量不能为空!"); | |||
return; | |||
} | |||
int stime_1 = 0; | |||
int ftime_1 = 0; | |||
try { | |||
// stime_1 = (int) Math.round((Double.parseDouble(stime) * 10)); | |||
} catch (Exception e) { | |||
ToastUtils.error("时间异常!" + e.getMessage()); | |||
return; | |||
private int EditTextValidate(EditText et,String info){ | |||
if(et==null) return -1; | |||
if(et.getText().toString().isEmpty()){ | |||
DialogManager.showError(activity,info,AlertDialogButton.OK,null); | |||
return -1; | |||
} | |||
double zhongl= 0; | |||
try { | |||
// zhongl=Double.parseDouble(zl); | |||
} catch (Exception e) { | |||
ToastUtils.error("校准重量获取异常!" + e.getMessage()); | |||
return; | |||
try{ | |||
return Integer.parseInt(et.getText().toString()); | |||
}catch (Exception e){ | |||
return -1; | |||
} | |||
if (zhongl <= 0) { | |||
ToastUtils.warning("校准重量至少大于0g!"); | |||
return; | |||
} | |||
if (!ConfigName.getInstance().versionSelectionEnum.equals("奶茶机")) { | |||
// if (ftime.equals("")) { | |||
// ToastUtils.warning("反转基准时间不能为空!"); | |||
// return; | |||
// } | |||
try { | |||
// ftime_1 = (int) Math.round((Double.parseDouble(ftime) * 10)); | |||
} catch (Exception e) { | |||
ToastUtils.error("时间异常!" + e.getMessage()); | |||
return; | |||
} | |||
ExecuteTheRecipe.WritePLC("反转时间", (short) ftime_1, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ToastUtils.info("反转时间保存成功!"); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.error("反转时间保存失败!"); | |||
} | |||
}); | |||
} | |||
// lcMode.fTime=ftime; | |||
// lcMode.jTime=stime; | |||
// lcMode.jValue=zl; | |||
ArrayList<BPA_SILOS> Ss=QueryDB.GetSilosALL(); | |||
for (BPA_SILOS item:Ss) | |||
{ | |||
// QueryDB.UpdateSilosJZTime(item.id, stime, ftime); | |||
} | |||
// QueryDB.UpdateJYZ(lcMode.id, zl); | |||
ExecuteTheRecipe.WritePLC("基准时间", (short) stime_1, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ToastUtils.info("校准基准时间保存成功!"); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.error("校准基准时间保存失败!"); | |||
} | |||
}); | |||
int kkk= lcMode.num; | |||
ExecuteTheRecipe.WritePLC("校准值" + kkk, (short) (short) ((int) (zhongl * 10)), null); | |||
} | |||
//endregion | |||
//region 物料校准 | |||
public void WLJZ() { | |||
//判断是否为果糖->判断温度 | |||
if (ConfigName.getInstance().versionSelectionEnum.equals("奶茶机")) { | |||
if (lcMode.num == 11) { | |||
if (ExecuteTheRecipe.SugarTempLeft < ExecuteTheRecipe.SugarTempLeft_SZ) { | |||
ToastUtils.warning("果糖左仓温度未达到设置值,不允许校准..."); | |||
return; | |||
} | |||
} else if (lcMode.num == 12) { | |||
if (ExecuteTheRecipe.SugarTempRight < ExecuteTheRecipe.SugarTempRight_SZ) { | |||
ToastUtils.warning("果糖右仓温度未达到设置值,不允许校准..."); | |||
return; | |||
} | |||
} | |||
} | |||
new Thread(new Runnable() { | |||
@Override | |||
public void run() { | |||
try { | |||
ExecuteTheRecipe.WritePLC("校准完成", false, null); | |||
ExecuteTheRecipe.WritePLC("手自切换", false, null); | |||
ExecuteTheRecipe.WritePLC("通道校准", true, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ToastUtils.info("启动通道校准成功!"); | |||
/** | |||
* 按钮单击事件 | |||
* @param view | |||
*/ | |||
@OnClick({R.id.btn_min_standard, R.id.btn_max_standard,R.id.btn_sim_discharge,R.id.btn_save}) | |||
public void onViewClicked(View view) { | |||
switch (view.getId()) { | |||
case R.id.btn_max_standard: | |||
case R.id.btn_min_standard: | |||
int time = EditTextValidate(view.getId()==R.id.btn_min_standard? min_time:max_time,"请输入正确的时间"); | |||
if(time<0) return; | |||
DialogManager.showWarn(activity,"校准前请确认是否准备就绪?\r\n是否开始校准?", AlertDialogButton.YesNo,s->{ | |||
if(s){ | |||
WaitDialog.Show("最小校准","开始校准",getContext(),activity); | |||
Executor.get().runThread(()->{ | |||
WaitDialog.AddText("电子秤清零"); | |||
ExecuteTheRecipe.Write(PLCName.重量清零, true, null);//电子秤重量清零 | |||
WaitDialog.AddText("等待清零完成"); | |||
//等待清零完成 | |||
Unity.Wait(()->{return ExecuteTheRecipe.ReadShort(PLCName.当前重量)==0;},3000).OnSource(()->{ | |||
WaitDialog.AddText("下发参数,开始校准"); | |||
ExecuteTheRecipe.Write(lcMode.name+lcMode.num+"出料时间",time,null);//下发出料时间 | |||
ExecuteTheRecipe.Write(lcMode.name+lcMode.num+"启停控制",true,null);//下发启动信号 | |||
WaitDialog.AddText("等待校准完成"); | |||
String name = lcMode.name+lcMode.num+"启停控制"; | |||
//等待出料完成 | |||
Unity.Wait(()->{return TTrig.get(name).Start(ExecuteTheRecipe.ReadBool(name));},time+2000).OnSource(()->{ | |||
//获取电子秤重量,并填充到对应位置 | |||
activity.runOnUiThread(()->{ | |||
if(view.getId()==R.id.min_time) min_time.setText(ExecuteTheRecipe.ReadShort(PLCName.当前重量)); | |||
else max_time.setText(ExecuteTheRecipe.ReadShort(PLCName.当前重量)); | |||
}); | |||
DialogManager.showInfo(activity,"校准完成",AlertDialogButton.OK,null); | |||
}).OnFailed(msg->{WaitDialog.TimeOut("等待校准完成超时,请退出后重试!");}); | |||
TTrig.Remove(name); | |||
}).OnFailed((msg)->{WaitDialog.TimeOut("等待清零超时,请退出后重试!");}); | |||
}); | |||
} | |||
}); | |||
break; | |||
case R.id.btn_sim_discharge: | |||
DialogManager.showWarn(activity,"模拟出料前请将容器放入指定位置!\r\n请问是否继续",AlertDialogButton.YesNo,(s->{ | |||
if(s){ | |||
try{ | |||
int weight = Integer.parseInt(sim_discharge_weight.getText().toString()); | |||
BPA_SILOS_CALIBRATE res = QueryDB.GetSilosCalibrateByNum(lcMode.num); | |||
if(res!=null){ | |||
int outValue = Unity.Scale(weight,res.inputWightMax,res.inputWightMin,res.outputTimeMax,res.outputTimeMin); | |||
WaitDialog.Show("模拟出料","启动模拟出料",getContext(),activity); | |||
Executor.get().runThread(()->{ | |||
ExecuteTheRecipe.Write(lcMode.name+lcMode.num+"出料时间",outValue*100,null);//下发出料时间 | |||
ExecuteTheRecipe.Write(lcMode.name+lcMode.num+"启停控制",true,null);//下发启动信号 | |||
WaitDialog.AddText("等待出料完成"); | |||
String name = lcMode.name+lcMode.num+"启停控制"; | |||
Unity.Wait(()->{return TTrig.get(name).Start(ExecuteTheRecipe.ReadBool(name));},(outValue*1000)+1000).OnSource(()->{ | |||
WaitDialog.Dismiss(); | |||
}).OnFailed(msg->{WaitDialog.TimeOut("等待出料完成超时,请退出后重试!");}); | |||
TTrig.Remove(name); | |||
}); | |||
}else{ | |||
DialogManager.showWarn(activity,"料仓参数未校准,请校准后再试!",AlertDialogButton.OK,null); | |||
} | |||
}catch(Exception e){ | |||
DialogManager.showError(activity,"模拟出料失败,"+e.getMessage(),AlertDialogButton.OK,null); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.error("启动通道校准失败!"); | |||
} | |||
})); | |||
break; | |||
case R.id.btn_save: | |||
DialogManager.showWarn(activity,"请问是否覆盖本地参数?",AlertDialogButton.YesNo,s->{ | |||
if(s){ | |||
boolean runResult = false; | |||
try{ | |||
int outputMax = Integer.parseInt(max_time.getText().toString()); | |||
int outputMin=Integer.parseInt(min_time.getText().toString()); | |||
int inputMax=Integer.parseInt(max_weight.getText().toString()); | |||
int inputMin=Integer.parseInt(min_weight.getText().toString()); | |||
if(lcMode!=null){ | |||
BPA_SILOS_CALIBRATE res = QueryDB.GetSilosCalibrateByNum(lcMode.num); | |||
if(res!=null) runResult =QueryDB.UpdateSilosCalibrate(res.id,outputMax,outputMin,inputMax,inputMin); | |||
else runResult =QueryDB.AddSilosCalibrate(new BPA_SILOS_CALIBRATE(lcMode.name,lcMode.num,outputMax,outputMin,inputMax,inputMin)); | |||
} | |||
}catch (Exception e){ | |||
} | |||
}); | |||
} catch (Exception e) { | |||
} | |||
} | |||
}).start(); | |||
} | |||
//endregion | |||
//region 补偿校准 | |||
public void SaveBCJZ() { | |||
Short H = 0; | |||
Short L = 0; | |||
Short time = 0; | |||
try { | |||
H = Short.parseShort(bcjz_gxs.getText().toString()); | |||
L = Short.parseShort(bcjz_dxs.getText().toString()); | |||
int ftime = (int) Math.round((Double.parseDouble(bcjz_clsj.getText().toString()) * 10)); | |||
time = (short) ftime; | |||
} catch (Exception ex) { | |||
ToastUtils.error("数据不合法,保存变量失败!" + ex.getMessage()); | |||
return; | |||
if(runResult) DialogManager.showInfo(activity,"参数保存成功",AlertDialogButton.OK,null); | |||
else DialogManager.showError(activity,"参数保存失败",AlertDialogButton.OK,null); | |||
} | |||
}); | |||
break; | |||
} | |||
Short finalH = H; | |||
Short finalL = L; | |||
Short finalTime = time; | |||
lcMode.Gxs = bcjz_gxs.getText().toString(); | |||
lcMode.Lxs = bcjz_dxs.getText().toString(); | |||
lcMode.tdclsj = bcjz_clsj.getText().toString(); | |||
new Thread(new Runnable() { | |||
@Override | |||
public void run() { | |||
try { | |||
ExecuteTheRecipe.WritePLC("高系数" + lcMode.num, finalH, null); | |||
ExecuteTheRecipe.WritePLC("低系数" + lcMode.num, finalL, null); | |||
ExecuteTheRecipe.WritePLC("补偿" + lcMode.num + "时间", finalTime, new IWriteCallBack() { | |||
@Override | |||
public void onSuccess() { | |||
ToastUtils.info("保存变量成功!"); | |||
QueryDB.UpdateSilosisOpenbcsf(lcMode.id, bcjz_gxs.getText().toString(), | |||
bcjz_dxs.getText().toString(), bcjz_clsj.getText().toString()); | |||
} | |||
@Override | |||
public void onFailure(String ErrorMsg) { | |||
ToastUtils.warning("保存变量失败!"); | |||
} | |||
}); | |||
} catch (Exception e) { | |||
} | |||
} | |||
}).start(); | |||
} | |||
//endregion | |||
//region 定时器 | |||
/** | |||
* 启动定时器 | |||
*/ | |||
public void StartTime() { | |||
isStartMg=true; | |||
runtime.setBase(SystemClock.elapsedRealtime()); | |||
runtime.start(); | |||
new Thread(new Runnable() { | |||
@Override | |||
public void run() { | |||
try { | |||
//自动模式 | |||
ExecuteTheRecipe.WritePLC("手自切换", false, null); | |||
//开启 | |||
ExecuteTheRecipe.WritePLC("手动控制" + lcMode.num, true, null); | |||
} catch (Exception e) { | |||
} | |||
} | |||
}).start(); | |||
} | |||
/** | |||
* 停止定时器 | |||
*/ | |||
public int StopTime() { | |||
long elapsedMillis = SystemClock.elapsedRealtime() - runtime.getBase(); | |||
runtime.stop(); | |||
isStartMg=false; | |||
int time = (int) (elapsedMillis / 1000); | |||
new Thread(new Runnable() { | |||
@Override | |||
public void run() { | |||
try { | |||
ExecuteTheRecipe.WritePLC("手动控制" + lcMode.num, false, null); | |||
} catch (Exception e) { | |||
} | |||
} | |||
}).start(); | |||
return time;//当前点击多少秒 | |||
} | |||
//endregion | |||
} |