@@ -0,0 +1,10 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="deploymentTargetSelector"> | |||||
<selectionStates> | |||||
<SelectionState runConfigName="app"> | |||||
<option name="selectionMode" value="DROPDOWN" /> | |||||
</SelectionState> | |||||
</selectionStates> | |||||
</component> | |||||
</project> |
@@ -5,7 +5,7 @@ | |||||
<option name="linkedExternalProjectsSettings"> | <option name="linkedExternalProjectsSettings"> | ||||
<GradleProjectSettings> | <GradleProjectSettings> | ||||
<option name="externalProjectPath" value="$PROJECT_DIR$" /> | <option name="externalProjectPath" value="$PROJECT_DIR$" /> | ||||
<option name="gradleJvm" value="corretto-11" /> | |||||
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" /> | |||||
<option name="modules"> | <option name="modules"> | ||||
<set> | <set> | ||||
<option value="$PROJECT_DIR$" /> | <option value="$PROJECT_DIR$" /> | ||||
@@ -0,0 +1,10 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | |||||
<component name="ProjectMigrations"> | |||||
<option name="MigrateToGradleLocalJavaHome"> | |||||
<set> | |||||
<option value="$PROJECT_DIR$" /> | |||||
</set> | |||||
</option> | |||||
</component> | |||||
</project> |
@@ -1,4 +1,3 @@ | |||||
<?xml version="1.0" encoding="UTF-8"?> | |||||
<project version="4"> | <project version="4"> | ||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="corretto-11" project-jdk-type="JavaSDK" /> | <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="corretto-11" project-jdk-type="JavaSDK" /> | ||||
<component name="VisualizationToolProject"> | <component name="VisualizationToolProject"> | ||||
@@ -25,11 +25,12 @@ public class Unity { | |||||
if(func==null) return OperateResult.CreateFailed("条件为空"); | if(func==null) return OperateResult.CreateFailed("条件为空"); | ||||
boolean tag=false; | boolean tag=false; | ||||
while(!tag){ | while(!tag){ | ||||
Delay(100); | |||||
tag=func.Run(); | tag=func.Run(); | ||||
Delay(100); | Delay(100); | ||||
if(timeOut>0&&(System.currentTimeMillis()-startTime)>timeOut) break; | if(timeOut>0&&(System.currentTimeMillis()-startTime)>timeOut) break; | ||||
} | } | ||||
if(!tag) MessageLog.ShowInfo("任务超时,超时时间:"+String.valueOf(timeOut)+"/"+String.valueOf(System.currentTimeMillis()-startTime)); | |||||
if(!tag) MessageLog.ShowInfo("任务超时,超时时间:"+String.valueOf(timeOut)+"/"+String.valueOf(System.currentTimeMillis()-startTime)); | |||||
// System.out.println("任务超时,超时时间:"+String.valueOf(timeOut)+"/"+String.valueOf(System.currentTimeMillis()-startTime)); | // System.out.println("任务超时,超时时间:"+String.valueOf(timeOut)+"/"+String.valueOf(System.currentTimeMillis()-startTime)); | ||||
return tag?OperateResult.CreateSuccess():OperateResult.CreateFailed("任务超时"); | return tag?OperateResult.CreateSuccess():OperateResult.CreateFailed("任务超时"); | ||||
@@ -87,7 +88,18 @@ public class Unity { | |||||
*/ | */ | ||||
public static float Scale( float InputValue, float InputMax, float InputMin, float OutMax, float OutMin) | public static float Scale( float InputValue, float InputMax, float InputMin, float OutMax, float OutMin) | ||||
{ | { | ||||
MessageLog.ShowInfo("AnalogConvert measureCookTime InputValue="+InputValue+" InputMax="+InputMax+";InputMin="+InputMin+";OutMax="+OutMax+";OutMin="+OutMin); | |||||
if(InputValue<=0|| InputMax<=0||InputMin<=0){ | |||||
return 0; | |||||
} | |||||
if(((InputMax - InputMin) + OutMin)==0){ | |||||
return 0; | |||||
} | |||||
float value = ((OutMax - OutMin) * (InputValue - InputMin)) / (InputMax - InputMin) + OutMin; | float value = ((OutMax - OutMin) * (InputValue - InputMin)) / (InputMax - InputMin) + OutMin; | ||||
if(value<=0){ | |||||
value = 0; | |||||
} | |||||
String formattedNum = String.format("%.2f", value); | String formattedNum = String.format("%.2f", value); | ||||
return Float.parseFloat(formattedNum); | return Float.parseFloat(formattedNum); | ||||
} | } | ||||
@@ -40,6 +40,7 @@ import com.bonait.bnframework.common.helper.ThreadManager; | |||||
import com.bonait.bnframework.common.modbus.ModbusTcpServer; | import com.bonait.bnframework.common.modbus.ModbusTcpServer; | ||||
import com.bonait.bnframework.common.utils.AlertDialogUtils; | import com.bonait.bnframework.common.utils.AlertDialogUtils; | ||||
import com.bonait.bnframework.common.utils.ToastUtils; | import com.bonait.bnframework.common.utils.ToastUtils; | ||||
import com.http.utils.LogUtils; | |||||
import com.qmuiteam.qmui.widget.dialog.QMUIDialog; | import com.qmuiteam.qmui.widget.dialog.QMUIDialog; | ||||
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; | import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; | ||||
@@ -520,9 +521,12 @@ public class ExecuteTheRecipe { | |||||
* @param value | * @param value | ||||
*/ | */ | ||||
public static void WritePLC(String name, Object value, IWriteCallBack callback) { | public static void WritePLC(String name, Object value, IWriteCallBack callback) { | ||||
MessageLog.ShowInfo("WritePLC name="+name +";value="+value.toString()); | |||||
try { | try { | ||||
if (ConfigName.getInstance().PLC_Address.containsKey(name)) { | if (ConfigName.getInstance().PLC_Address.containsKey(name)) { | ||||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(name); | BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(name); | ||||
MessageLog.ShowInfo("WritePLC name="+name + ";plcaddress.address="+plcaddress.address.toString()+";value="+value.toString()); | |||||
if (!plcaddress.address.isEmpty() && ConfigName.getInstance().PlcIsConnect) { | if (!plcaddress.address.isEmpty() && ConfigName.getInstance().PlcIsConnect) { | ||||
if (plcaddress.address.toUpperCase().startsWith("VD"))//int | if (plcaddress.address.toUpperCase().startsWith("VD"))//int | ||||
{ | { | ||||
@@ -563,6 +567,7 @@ public class ExecuteTheRecipe { | |||||
} | } | ||||
public static void Write(Object plcName,Object value,IWriteCallBack callBack){ | public static void Write(Object plcName,Object value,IWriteCallBack callBack){ | ||||
MessageLog.ShowInfo("WritePLC plcName=" +plcName.toString() +";value="+value.toString()); | |||||
WritePLC(plcName.toString(),value,callBack); | WritePLC(plcName.toString(),value,callBack); | ||||
} | } | ||||
@@ -573,10 +578,12 @@ public class ExecuteTheRecipe { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public static Object ReadPLC(String name) { | public static Object ReadPLC(String name) { | ||||
final Object[] ReturnsVariable = {null}; | final Object[] ReturnsVariable = {null}; | ||||
try { | try { | ||||
if (ConfigName.getInstance().PLC_Address.containsKey(name)) { | if (ConfigName.getInstance().PLC_Address.containsKey(name)) { | ||||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(name); | BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(name); | ||||
MessageLog.ShowInfo("ReadPLC name=" +name +" plcaddress="+plcaddress.address.toString()); | |||||
if (!plcaddress.address.isEmpty() && ConfigName.getInstance().PlcIsConnect) { | if (!plcaddress.address.isEmpty() && ConfigName.getInstance().PlcIsConnect) { | ||||
if (plcaddress.address.toUpperCase().startsWith("VD"))//int | if (plcaddress.address.toUpperCase().startsWith("VD"))//int | ||||
{ | { | ||||
@@ -611,16 +618,23 @@ public class ExecuteTheRecipe { | |||||
ReturnsVariable[0] = val[0]; | ReturnsVariable[0] = val[0]; | ||||
}); | }); | ||||
} | } | ||||
if ((plcaddress.address.toUpperCase().equals("VW82"))){ | |||||
MessageLog.ShowInfo("ReadPLC 称当前重量 name=" +name+" ReturnsVariable[0]="+ReturnsVariable[0] ); | |||||
OutletWeigh = (short)ReturnsVariable[0]; | |||||
} | |||||
} | } | ||||
} | } | ||||
} catch (Exception ex) { | } catch (Exception ex) { | ||||
ToastUtils.error("异常信息:" + ex.getMessage()); | ToastUtils.error("异常信息:" + ex.getMessage()); | ||||
} finally { | } finally { | ||||
MessageLog.ShowInfo("ReadPLC name=" +name+" ReturnsVariable[0]="+ReturnsVariable[0] ); | |||||
return ReturnsVariable[0]; | return ReturnsVariable[0]; | ||||
} | } | ||||
} | } | ||||
public static boolean ReadBool(Object plcName){ | public static boolean ReadBool(Object plcName){ | ||||
MessageLog.ShowInfo("ReadBool plcName=" +plcName.toString() ); | |||||
try{ | try{ | ||||
if(ListeningValue.containsKey(plcName)){ | if(ListeningValue.containsKey(plcName)){ | ||||
return Boolean.parseBoolean(ListeningValue.get(plcName).toString()); | return Boolean.parseBoolean(ListeningValue.get(plcName).toString()); | ||||
@@ -633,11 +647,16 @@ public class ExecuteTheRecipe { | |||||
} | } | ||||
public static short ReadShort(Object plcName){ | public static short ReadShort(Object plcName){ | ||||
MessageLog.ShowInfo("ReadShort "+plcName.toString()); | |||||
try{ | try{ | ||||
if(ListeningValue.containsKey(plcName)){ | if(ListeningValue.containsKey(plcName)){ | ||||
return Short.parseShort(ListeningValue.get(plcName).toString()); | |||||
short result = Short.parseShort(ListeningValue.get(plcName).toString()); | |||||
MessageLog.ShowInfo(plcName.toString()+" result="+result); | |||||
return result; | |||||
}else{ | }else{ | ||||
return Short.parseShort(ReadPLC(plcName.toString()).toString()); | |||||
short result = Short.parseShort(ReadPLC(plcName.toString()).toString()); | |||||
MessageLog.ShowInfo(plcName.toString()+" result="+result); | |||||
return result; | |||||
} | } | ||||
}catch(Exception e){ | }catch(Exception e){ | ||||
return 0; | return 0; | ||||
@@ -956,7 +975,7 @@ public class ExecuteTheRecipe { | |||||
final boolean[] issucess3 = {false}; | final boolean[] issucess3 = {false}; | ||||
//写校准模式 | //写校准模式 | ||||
WritePLC("砝码校准模式", true, new IWriteCallBack() { | |||||
WritePLC("校准模式", true, new IWriteCallBack() { | |||||
@Override | @Override | ||||
public void onSuccess() { | public void onSuccess() { | ||||
issucess1[0] =true; | issucess1[0] =true; | ||||
@@ -1000,7 +1019,7 @@ public class ExecuteTheRecipe { | |||||
final boolean[] issucess2 = {false}; | final boolean[] issucess2 = {false}; | ||||
//写校准模式 | //写校准模式 | ||||
WritePLC("砝码校准模式", false, new IWriteCallBack() { | |||||
WritePLC("校准模式", false, new IWriteCallBack() { | |||||
@Override | @Override | ||||
public void onSuccess() { | public void onSuccess() { | ||||
issucess1[0] =true; | issucess1[0] =true; | ||||
@@ -2,7 +2,7 @@ package com.bonait.bnframework.business; | |||||
public enum PLCName { | public enum PLCName { | ||||
重量清零, | 重量清零, | ||||
当前重量, | |||||
称当前重量, | |||||
外置仓1出料时间, | 外置仓1出料时间, | ||||
外置仓2出料时间, | 外置仓2出料时间, | ||||
外置仓3出料时间, | 外置仓3出料时间, | ||||
@@ -52,6 +52,7 @@ public class BaseActivity extends QMUIActivity implements EasyPermissions.Permis | |||||
@Override | @Override | ||||
protected void onDestroy() { | protected void onDestroy() { | ||||
super.onDestroy(); | super.onDestroy(); | ||||
ActiveMax.destroy(this); | |||||
/*LocalCacheUtils.Get().ClearBitmapFile();*/ | /*LocalCacheUtils.Get().ClearBitmapFile();*/ | ||||
} | } | ||||
@@ -46,6 +46,7 @@ import java.util.concurrent.ConcurrentHashMap; | |||||
* 配置文件 | * 配置文件 | ||||
*/ | */ | ||||
public class ConfigName { | public class ConfigName { | ||||
public static final boolean TEST = true; | |||||
//region 单例模式 | //region 单例模式 | ||||
private static ConfigName mInstance; //实例变量设置私有,防止直接通过类名访问 | private static ConfigName mInstance; //实例变量设置私有,防止直接通过类名访问 | ||||
@@ -49,6 +49,11 @@ public class ActiveMax { | |||||
// activity.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(setOnSystemUiVisibilityChangeListener); | // activity.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(setOnSystemUiVisibilityChangeListener); | ||||
} | } | ||||
public static void destroy(Activity activity){ | |||||
activities.remove(activity); | |||||
activity.getWindow().getDecorView().getViewTreeObserver().removeOnGlobalLayoutListener(keyboardVisibilityListener); | |||||
} | |||||
/** | /** | ||||
* 状态栏变化后事件 | * 状态栏变化后事件 | ||||
*/ | */ | ||||
@@ -477,6 +477,7 @@ public class MakeGoodFragment extends BaseFragment { | |||||
@Override | @Override | ||||
public void onSuccess() { | public void onSuccess() { | ||||
ToastUtils.info("清零成功!"); | ToastUtils.info("清零成功!"); | ||||
mHandler.sendEmptyMessage(0); | |||||
} | } | ||||
@Override | @Override | ||||
@@ -505,6 +506,7 @@ public class MakeGoodFragment extends BaseFragment { | |||||
plc_status.setText(ConfigName.getInstance().PlcIsConnect ? "正常" : "异常"); | plc_status.setText(ConfigName.getInstance().PlcIsConnect ? "正常" : "异常"); | ||||
plc_status.setTextColor(ConfigName.getInstance().PlcIsConnect ? Color.parseColor("#4CAF50") : Color.parseColor("#D32F2F")); | plc_status.setTextColor(ConfigName.getInstance().PlcIsConnect ? Color.parseColor("#4CAF50") : Color.parseColor("#D32F2F")); | ||||
wendu1.setText(ExecuteTheRecipe.WaterTemp + "°C"); | wendu1.setText(ExecuteTheRecipe.WaterTemp + "°C"); | ||||
MessageLog.ShowInfo("重量 ExecuteTheRecipe.OutletWeigh="+ExecuteTheRecipe.OutletWeigh); | |||||
dianzichen.setText(String.valueOf((int) ExecuteTheRecipe.OutletWeigh / 10.0) + " g"); | dianzichen.setText(String.valueOf((int) ExecuteTheRecipe.OutletWeigh / 10.0) + " g"); | ||||
break; | break; | ||||
case 1: | case 1: | ||||
@@ -666,11 +668,12 @@ public class MakeGoodFragment extends BaseFragment { | |||||
//接收扫码信息 | //接收扫码信息 | ||||
ExecuteTheRecipe.OnScanTheCodeInformationT = new IRunT<String>() { | ExecuteTheRecipe.OnScanTheCodeInformationT = new IRunT<String>() { | ||||
@Override | @Override | ||||
public void Run(String msg) { | |||||
public void Run(String msg2) { | |||||
activity.runOnUiThread(new Runnable() { | activity.runOnUiThread(new Runnable() { | ||||
@Override | @Override | ||||
public void run() { | public void run() { | ||||
String msg = " |03cb1364-8b85-446a-b00b-d3657de1a19f| | "; | |||||
if ((msg != null) && (((String) msg).length() > 2) && ((String) msg).contains("|")) { | if ((msg != null) && (((String) msg).length() > 2) && ((String) msg).contains("|")) { | ||||
//拿到扫码数据 | //拿到扫码数据 | ||||
//例如 ORD001|P0003|A001,M002,T001|2 | //例如 ORD001|P0003|A001,M002,T001|2 | ||||
@@ -712,8 +715,11 @@ public class MakeGoodFragment extends BaseFragment { | |||||
} | } | ||||
} catch (Exception ex) { | } catch (Exception ex) { | ||||
} | } | ||||
BPA_GOODS good = QueryDB.GetGoodsforeignKeyId(goodid); | BPA_GOODS good = QueryDB.GetGoodsforeignKeyId(goodid); | ||||
ConfigName.getInstance(); | |||||
if(ConfigName.TEST){ | |||||
good = QueryDB.GetGoodsId(goodid); | |||||
} | |||||
if (good == null) { | if (good == null) { | ||||
message = "没有查询到该商品!"; | message = "没有查询到该商品!"; | ||||
mHandler.sendEmptyMessage(1); | mHandler.sendEmptyMessage(1); | ||||
@@ -83,7 +83,7 @@ public class DzcjyActivity extends BaseActivity { | |||||
String outres = edittext_zl.getText().toString().trim(); | String outres = edittext_zl.getText().toString().trim(); | ||||
if (!outres.equals("")) { | if (!outres.equals("")) { | ||||
ExecuteTheRecipe.WritePLC("砝码值", Short.parseShort(outres), new IWriteCallBack() { | |||||
ExecuteTheRecipe.WritePLC("砝码值", Short.parseShort(outres)*10, new IWriteCallBack() { | |||||
@Override | @Override | ||||
public void onSuccess() { | public void onSuccess() { | ||||
ExecuteTheRecipe.WritePLC("砝码值写入",true,null); | ExecuteTheRecipe.WritePLC("砝码值写入",true,null); | ||||
@@ -48,6 +48,7 @@ import java.util.ArrayList; | |||||
import java.util.LinkedHashMap; | import java.util.LinkedHashMap; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | import java.util.Map; | ||||
import java.util.concurrent.Delayed; | |||||
import butterknife.BindView; | import butterknife.BindView; | ||||
import butterknife.ButterKnife; | import butterknife.ButterKnife; | ||||
@@ -347,11 +348,21 @@ public class add_silos_ck extends LinearLayout { | |||||
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { | if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) { | ||||
Log.e("鼠标", "按下:2222 "); | Log.e("鼠标", "按下:2222 "); | ||||
ExecuteTheRecipe.WritePLC("清洗模式", true,null); | ExecuteTheRecipe.WritePLC("清洗模式", true,null); | ||||
try { | |||||
Thread.sleep(100L);//避免启动的时候还是按时间出料 | |||||
} catch (InterruptedException e) { | |||||
throw new RuntimeException(e); | |||||
} | |||||
ExecuteTheRecipe.WritePLC(name, true, null); | ExecuteTheRecipe.WritePLC(name, true, null); | ||||
} else if (motionEvent.getAction() == MotionEvent.ACTION_UP) { | } else if (motionEvent.getAction() == MotionEvent.ACTION_UP) { | ||||
Log.e("鼠标", "松开:33333 "); | Log.e("鼠标", "松开:33333 "); | ||||
ExecuteTheRecipe.WritePLC("清洗模式", false,null); | |||||
ExecuteTheRecipe.WritePLC(name, false, null); | ExecuteTheRecipe.WritePLC(name, false, null); | ||||
try { | |||||
Thread.sleep(100L);//避免启动的时候还是按时间出料 | |||||
} catch (InterruptedException e) { | |||||
throw new RuntimeException(e); | |||||
} | |||||
ExecuteTheRecipe.WritePLC("清洗模式", false,null); | |||||
} | } | ||||
return false; | return false; | ||||
}); | }); | ||||
@@ -1,30 +1,18 @@ | |||||
package com.bonait.bnframework.modules.home.fragment.mode; | package com.bonait.bnframework.modules.home.fragment.mode; | ||||
import android.app.Activity; | import android.app.Activity; | ||||
import android.app.ProgressDialog; | |||||
import android.content.Context; | import android.content.Context; | ||||
import android.content.DialogInterface; | |||||
import android.graphics.Color; | |||||
import android.os.Handler; | import android.os.Handler; | ||||
import android.os.Message; | import android.os.Message; | ||||
import android.os.SystemClock; | |||||
import android.provider.ContactsContract; | |||||
import android.util.AttributeSet; | import android.util.AttributeSet; | ||||
import android.util.Log; | import android.util.Log; | ||||
import android.view.LayoutInflater; | import android.view.LayoutInflater; | ||||
import android.view.MotionEvent; | |||||
import android.view.View; | import android.view.View; | ||||
import android.widget.ArrayAdapter; | |||||
import android.widget.Button; | import android.widget.Button; | ||||
import android.widget.Chronometer; | |||||
import android.widget.EditText; | import android.widget.EditText; | ||||
import android.widget.ImageView; | |||||
import android.widget.LinearLayout; | import android.widget.LinearLayout; | ||||
import android.widget.RelativeLayout; | |||||
import android.widget.Spinner; | |||||
import android.widget.TextView; | import android.widget.TextView; | ||||
import androidx.annotation.NonNull; | |||||
import androidx.annotation.Nullable; | import androidx.annotation.Nullable; | ||||
import androidx.fragment.app.FragmentManager; | import androidx.fragment.app.FragmentManager; | ||||
@@ -32,38 +20,18 @@ import com.bonait.bnframework.HBL.Dialog.AlertDialogButton; | |||||
import com.bonait.bnframework.HBL.Dialog.DialogManager; | import com.bonait.bnframework.HBL.Dialog.DialogManager; | ||||
import com.bonait.bnframework.HBL.Dialog.WaitDialog; | import com.bonait.bnframework.HBL.Dialog.WaitDialog; | ||||
import com.bonait.bnframework.HBL.Executor; | 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.Trig.TTrig; | ||||
import com.bonait.bnframework.HBL.Unity; | import com.bonait.bnframework.HBL.Unity; | ||||
import com.bonait.bnframework.R; | import com.bonait.bnframework.R; | ||||
import com.bonait.bnframework.business.ExecuteTheRecipe; | import com.bonait.bnframework.business.ExecuteTheRecipe; | ||||
import com.bonait.bnframework.business.PLCName; | 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.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.mode.BPA_SILOS_CALIBRATE; | ||||
import com.bonait.bnframework.common.db.res.lcMode; | import com.bonait.bnframework.common.db.res.lcMode; | ||||
import com.bonait.bnframework.common.helper.I.IRun; | 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.helper.I.MyClickListener; | ||||
import com.bonait.bnframework.common.model.mode.ResMenuLeft; | |||||
import com.bonait.bnframework.common.helper.MessageLog; | |||||
import com.bonait.bnframework.common.utils.ToastUtils; | 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; | |||||
import com.qmuiteam.qmui.widget.dialog.QMUIDialog; | |||||
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; | |||||
import java.util.List; | |||||
import butterknife.BindView; | import butterknife.BindView; | ||||
import butterknife.ButterKnife; | import butterknife.ButterKnife; | ||||
@@ -90,19 +58,21 @@ public class silos_jiaoyan extends LinearLayout { | |||||
private View root; | private View root; | ||||
@BindView(R.id.min_time) | @BindView(R.id.min_time) | ||||
EditText min_time; | |||||
EditText min_time; | |||||
@BindView(R.id.min_weight) | @BindView(R.id.min_weight) | ||||
EditText min_weight; | |||||
EditText min_weight; | |||||
@BindView(R.id.max_time) | @BindView(R.id.max_time) | ||||
EditText max_time; | |||||
EditText max_time; | |||||
@BindView(R.id.max_weight) | @BindView(R.id.max_weight) | ||||
EditText max_weight; | |||||
EditText max_weight; | |||||
@BindView(R.id.sim_discharge_weight) | @BindView(R.id.sim_discharge_weight) | ||||
EditText sim_discharge_weight; | EditText sim_discharge_weight; | ||||
@BindView(R.id.tv_discharge_result) | |||||
TextView tv_discharge_result; | |||||
// @BindView(R.id.controlStatus) | // @BindView(R.id.controlStatus) | ||||
// TextView controlStatus; | // TextView controlStatus; | ||||
@@ -297,29 +267,44 @@ public class silos_jiaoyan extends LinearLayout { | |||||
if(time<0) return; | if(time<0) return; | ||||
DialogManager.showWarn(activity,"校准前请确认是否准备就绪?\r\n是否开始校准?", AlertDialogButton.YesNo,s->{ | DialogManager.showWarn(activity,"校准前请确认是否准备就绪?\r\n是否开始校准?", AlertDialogButton.YesNo,s->{ | ||||
if(s){ | if(s){ | ||||
WaitDialog.Show("最小校准","开始校准",getContext(),activity); | |||||
WaitDialog.Show(view.getId()==R.id.min_time?"最小校准":"最大校准","开始校准",getContext(),activity); | |||||
Executor.get().runThread(()->{ | Executor.get().runThread(()->{ | ||||
WaitDialog.AddText("电子秤清零"); | WaitDialog.AddText("电子秤清零"); | ||||
ExecuteTheRecipe.Write(PLCName.重量清零, true, null);//电子秤重量清零 | ExecuteTheRecipe.Write(PLCName.重量清零, true, null);//电子秤重量清零 | ||||
ExecuteTheRecipe.Write(PLCName.重量清零, true, null);//电子秤重量清零 | |||||
ExecuteTheRecipe.Write(PLCName.重量清零, true, null);//电子秤重量清零 | |||||
WaitDialog.AddText("等待清零完成"); | WaitDialog.AddText("等待清零完成"); | ||||
//等待清零完成 | //等待清零完成 | ||||
Unity.Wait(()->{return ExecuteTheRecipe.ReadShort(PLCName.当前重量)==0;},3000).OnSource(()->{ | |||||
Unity.Wait(()->{return ExecuteTheRecipe.ReadShort(PLCName.称当前重量)>-20&&ExecuteTheRecipe.ReadShort(PLCName.称当前重量)<=20;},3000).OnSource(()->{ | |||||
WaitDialog.AddText("下发参数,开始校准"); | WaitDialog.AddText("下发参数,开始校准"); | ||||
ExecuteTheRecipe.Write(lcMode.name+lcMode.num+"出料时间",time,null);//下发出料时间 | |||||
ExecuteTheRecipe.Write(lcMode.name+lcMode.num+"出料时间",((int) time)*100,null);//下发出料时间 | |||||
long startTime = System.currentTimeMillis(); | |||||
MessageLog.ShowInfo("下发参数,开始校准 当前时间:"+startTime +" 出料时间"+((int) time)*100); | |||||
ExecuteTheRecipe.Write(lcMode.name+lcMode.num+"启停控制",true,null);//下发启动信号 | ExecuteTheRecipe.Write(lcMode.name+lcMode.num+"启停控制",true,null);//下发启动信号 | ||||
WaitDialog.AddText("等待校准完成"); | WaitDialog.AddText("等待校准完成"); | ||||
String name = lcMode.name+lcMode.num+"启停控制"; | String name = lcMode.name+lcMode.num+"启停控制"; | ||||
//等待出料完成 | //等待出料完成 | ||||
Unity.Wait(()->{return TTrig.get(name).Start(ExecuteTheRecipe.ReadBool(name));},(int)(time+2000)).OnSource(()->{ | |||||
Unity.Wait(()->{return TTrig.get(name).Start(ExecuteTheRecipe.ReadBool(name));},(int)(time*1000+2000)).OnSource(()->{ | |||||
//获取电子秤重量,并填充到对应位置 | //获取电子秤重量,并填充到对应位置 | ||||
try { | |||||
Thread.sleep(500); | |||||
} catch (InterruptedException e) { | |||||
throw new RuntimeException(e); | |||||
} | |||||
MessageLog.ShowInfo("下发参数,结束校准 结束时间:"+(System.currentTimeMillis()-startTime) +" 读取启停控制 false"); | |||||
activity.runOnUiThread(()->{ | activity.runOnUiThread(()->{ | ||||
if(view.getId()==R.id.min_time) min_time.setText(ExecuteTheRecipe.ReadShort(PLCName.当前重量)); | |||||
else max_time.setText(ExecuteTheRecipe.ReadShort(PLCName.当前重量)); | |||||
float weight = (float) (ExecuteTheRecipe.ReadShort(PLCName.称当前重量)/10.0); | |||||
MessageLog.ShowInfo("下发参数,结束校准 校准重量:"+weight); | |||||
if(view.getId()==R.id.btn_min_standard) min_weight.setText(weight+""); | |||||
else max_weight.setText(weight+""); | |||||
}); | }); | ||||
WaitDialog.Dismiss(); | |||||
DialogManager.showInfo(activity,"校准完成",AlertDialogButton.OK,null); | DialogManager.showInfo(activity,"校准完成",AlertDialogButton.OK,null); | ||||
}).OnFailed(msg->{WaitDialog.TimeOut("等待校准完成超时,请退出后重试!");}); | }).OnFailed(msg->{WaitDialog.TimeOut("等待校准完成超时,请退出后重试!");}); | ||||
TTrig.Remove(name); | TTrig.Remove(name); | ||||
@@ -333,15 +318,15 @@ public class silos_jiaoyan extends LinearLayout { | |||||
float minWeight = Float.parseFloat(min_weight.getText().toString()); | float minWeight = Float.parseFloat(min_weight.getText().toString()); | ||||
float weight = Float.parseFloat(sim_discharge_weight.getText().toString()); | float weight = Float.parseFloat(sim_discharge_weight.getText().toString()); | ||||
float maxweight = Float.parseFloat(max_weight.getText().toString()); | float maxweight = Float.parseFloat(max_weight.getText().toString()); | ||||
if(weight<minWeight){ | |||||
DialogManager.showError(activity,"模拟出料重量小于最小出料重量,请重新输入模拟出料重量",AlertDialogButton.OK,null); | |||||
return; | |||||
} | |||||
if(weight>maxweight){ | |||||
DialogManager.showError(activity,"模拟出料重量大于最大出料重量,请重新输入模拟出料重量",AlertDialogButton.OK,null); | |||||
return; | |||||
} | |||||
// if(weight<minWeight){ | |||||
// DialogManager.showError(activity,"模拟出料重量小于最小出料重量,请重新输入模拟出料重量",AlertDialogButton.OK,null); | |||||
// return; | |||||
// } | |||||
// | |||||
// if(weight>maxweight){ | |||||
// DialogManager.showError(activity,"模拟出料重量大于最大出料重量,请重新输入模拟出料重量",AlertDialogButton.OK,null); | |||||
// return; | |||||
// } | |||||
}catch(Exception e){} | }catch(Exception e){} | ||||
@@ -351,19 +336,36 @@ public class silos_jiaoyan extends LinearLayout { | |||||
float weight = Float.parseFloat(sim_discharge_weight.getText().toString()); | float weight = Float.parseFloat(sim_discharge_weight.getText().toString()); | ||||
BPA_SILOS_CALIBRATE res = QueryDB.GetSilosCalibrateByNum(lcMode.num); | BPA_SILOS_CALIBRATE res = QueryDB.GetSilosCalibrateByNum(lcMode.num); | ||||
if(res!=null){ | if(res!=null){ | ||||
float 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+"出料时间",(short)(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));},(int)(outValue*1000)+2000).OnSource(()->{ | |||||
WaitDialog.Dismiss(); | |||||
}).OnFailed(msg->{WaitDialog.TimeOut("等待出料完成超时,请退出后重试!");}); | |||||
TTrig.Remove(name); | |||||
}); | |||||
WaitDialog.AddText("电子秤清零"); | |||||
ExecuteTheRecipe.Write(PLCName.重量清零, true, null);//电子秤重量清零 | |||||
ExecuteTheRecipe.Write(PLCName.重量清零, true, null);//电子秤重量清零 | |||||
ExecuteTheRecipe.Write(PLCName.重量清零, true, null);//电子秤重量清零 | |||||
WaitDialog.AddText("等待清零完成"); | |||||
//等待清零完成 | |||||
Unity.Wait(()->{return ExecuteTheRecipe.ReadShort(PLCName.称当前重量)>-20&&ExecuteTheRecipe.ReadShort(PLCName.称当前重量)<=20;},3000).OnSource(()->{ | |||||
float 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+"出料时间",(short)(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));},(int)(outValue*1000)+2000).OnSource(()->{ | |||||
try { | |||||
Thread.sleep(500); | |||||
} catch (InterruptedException e) { | |||||
throw new RuntimeException(e); | |||||
} | |||||
WaitDialog.Dismiss(); | |||||
activity.runOnUiThread(()->{ | |||||
float resultWeight = (float) (ExecuteTheRecipe.ReadShort(PLCName.称当前重量)/10.0); | |||||
tv_discharge_result.setText(resultWeight+"g"); | |||||
}); | |||||
}).OnFailed(msg->{WaitDialog.TimeOut("等待出料完成超时,请退出后重试!");}); | |||||
TTrig.Remove(name); | |||||
}); | |||||
}).OnFailed((msg)->{WaitDialog.TimeOut("等待清零超时,请退出后重试!");}); | |||||
}else{ | }else{ | ||||
DialogManager.showWarn(activity,"料仓参数未校准,请校准后再试!",AlertDialogButton.OK,null); | DialogManager.showWarn(activity,"料仓参数未校准,请校准后再试!",AlertDialogButton.OK,null); | ||||
} | } | ||||
@@ -133,7 +133,7 @@ | |||||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:fontFamily="sans-serif-condensed-medium" | android:fontFamily="sans-serif-condensed-medium" | ||||
android:text="饮料配方管理" | |||||
android:text="配方管理" | |||||
android:textColor="@color/white" | android:textColor="@color/white" | ||||
android:textSize="26dp" | android:textSize="26dp" | ||||
android:focusable="false"/> | android:focusable="false"/> | ||||
@@ -243,13 +243,24 @@ | |||||
android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
android:layout_height="wrap_content" | android:layout_height="wrap_content" | ||||
android:background="@color/app_color_blue" > | android:background="@color/app_color_blue" > | ||||
<Button | |||||
android:id="@+id/btn_sync" | |||||
<FrameLayout | |||||
android:layout_width="wrap_content" | android:layout_width="wrap_content" | ||||
android:layout_height="wrap_content" | |||||
android:layout_marginLeft="20dp" | |||||
android:background="@mipmap/yxz" | |||||
android:textSize="16sp" | |||||
android:layout_centerHorizontal="true"/> | |||||
android:layout_height="wrap_content"> | |||||
<Button | |||||
android:id="@+id/btn_sync" | |||||
android:layout_width="100dp" | |||||
android:layout_height="match_parent" | |||||
android:background="null" | |||||
android:textSize="16sp" | |||||
android:layout_centerHorizontal="true"/> | |||||
<ImageView | |||||
android:layout_width="48dp" | |||||
android:layout_height="48dp" | |||||
android:src="@mipmap/yxz" | |||||
android:layout_gravity="center" | |||||
android:scaleType="fitXY" | |||||
/> | |||||
</FrameLayout> | |||||
</com.qmuiteam.qmui.widget.QMUITopBarLayout> | </com.qmuiteam.qmui.widget.QMUITopBarLayout> | ||||
</com.qmuiteam.qmui.widget.QMUIWindowInsetLayout> | </com.qmuiteam.qmui.widget.QMUIWindowInsetLayout> |
@@ -22,12 +22,11 @@ | |||||
</RelativeLayout> | </RelativeLayout> | ||||
<Button | <Button | ||||
android:id="@+id/close_from" | android:id="@+id/close_from" | ||||
android:layout_width="32dp" | |||||
android:layout_height="32dp" | |||||
android:layout_width="50dp" | |||||
android:layout_height="50dp" | |||||
android:layout_alignParentRight="true" | android:layout_alignParentRight="true" | ||||
android:layout_alignParentTop="true" | android:layout_alignParentTop="true" | ||||
android:layout_marginRight="@dimen/dp_10" | android:layout_marginRight="@dimen/dp_10" | ||||
android:layout_marginTop="@dimen/dp_10" | |||||
android:background="@mipmap/newdelete" | android:background="@mipmap/newdelete" | ||||
android:textSize="14dp" | android:textSize="14dp" | ||||
android:textColor="@color/white"/> | android:textColor="@color/white"/> | ||||
@@ -139,7 +138,7 @@ | |||||
android:orientation="vertical"> | android:orientation="vertical"> | ||||
<Button | <Button | ||||
android:id="@+id/control_switch_shoudong" | android:id="@+id/control_switch_shoudong" | ||||
android:layout_width="60dp" | |||||
android:layout_width="80dp" | |||||
android:layout_height="40dp" | android:layout_height="40dp" | ||||
android:layout_centerHorizontal="true" | android:layout_centerHorizontal="true" | ||||
android:background="@drawable/silosbuttonbj" | android:background="@drawable/silosbuttonbj" | ||||
@@ -150,7 +149,7 @@ | |||||
<Button | <Button | ||||
android:layout_marginTop="@dimen/dp_10" | android:layout_marginTop="@dimen/dp_10" | ||||
android:id="@+id/control_huishou" | android:id="@+id/control_huishou" | ||||
android:layout_width="60dp" | |||||
android:layout_width="80dp" | |||||
android:layout_height="40dp" | android:layout_height="40dp" | ||||
android:layout_centerHorizontal="true" | android:layout_centerHorizontal="true" | ||||
android:background="@drawable/silosbuttonbj" | android:background="@drawable/silosbuttonbj" | ||||
@@ -238,6 +238,22 @@ | |||||
</LinearLayout> | </LinearLayout> | ||||
<View | |||||
android:layout_width="650dp" | |||||
android:layout_height="1dp" | |||||
android:layout_marginTop="20dp" | |||||
android:background="@color/gray"/> | |||||
<Button | |||||
android:layout_marginTop="30dp" | |||||
android:id="@+id/btn_save" | |||||
android:layout_width="match_parent" | |||||
android:layout_height="wrap_content" | |||||
android:background="@drawable/bg_btn_login_selected" | |||||
android:text="保存参数" | |||||
android:textColor="@color/white" | |||||
android:textSize="25sp" /> | |||||
<View | <View | ||||
android:layout_width="650dp" | android:layout_width="650dp" | ||||
android:layout_height="1dp" | android:layout_height="1dp" | ||||
@@ -288,28 +304,41 @@ | |||||
</LinearLayout> | </LinearLayout> | ||||
<View | |||||
android:layout_width="650dp" | |||||
android:layout_height="1dp" | |||||
android:layout_marginTop="20dp" | |||||
android:background="@color/gray"/> | |||||
<Button | |||||
android:layout_marginTop="30dp" | |||||
android:id="@+id/btn_save" | |||||
<LinearLayout | |||||
android:layout_width="match_parent" | android:layout_width="match_parent" | ||||
android:layout_height="wrap_content" | |||||
android:background="@drawable/bg_btn_login_selected" | |||||
android:text="保存参数" | |||||
android:textColor="@color/white" | |||||
android:textSize="25sp" /> | |||||
android:layout_height="match_parent" | |||||
android:layout_marginTop="30dp" | |||||
android:orientation="horizontal"> | |||||
<LinearLayout | |||||
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:textSize="25sp"/> | |||||
<TextView | |||||
android:id="@+id/tv_discharge_result" | |||||
android:layout_width="wrap_content" | |||||
android:layout_height="wrap_content" | |||||
android:text="" | |||||
android:textSize="25sp"/> | |||||
</LinearLayout> | |||||
</LinearLayout> | |||||
<!-- <TextView--> | |||||
<!-- android:id="@+id/controlStatus"--> | |||||
<!-- android:layout_width="match_parent"--> | |||||
<!-- android:layout_height="match_parent"--> | |||||
<!-- android:text="控制状态:"--> | |||||
<!-- android:textSize="20sp"/>--> | |||||
<!-- <TextView--> | |||||
<!-- android:id="@+id/controlStatus"--> | |||||
<!-- android:layout_width="match_parent"--> | |||||
<!-- android:layout_height="match_parent"--> | |||||
<!-- android:text="控制状态:"--> | |||||
<!-- android:textSize="20sp"/>--> | |||||
</LinearLayout> | </LinearLayout> | ||||