@@ -1,55 +1,35 @@ | |||||
package com.bonait.bnframework.business; | package com.bonait.bnframework.business; | ||||
import android.app.Activity; | |||||
import android.content.Context; | |||||
import android.content.ContextWrapper; | |||||
import android.media.MediaPlayer; | |||||
import android.os.Handler; | import android.os.Handler; | ||||
import android.os.Looper; | import android.os.Looper; | ||||
import android.util.Log; | |||||
import androidx.annotation.NonNull; | import androidx.annotation.NonNull; | ||||
import com.bonait.bnframework.R; | |||||
import com.bonait.bnframework.business.deviceControl.seasonBar.PLCControl; | |||||
import com.bonait.bnframework.business.deviceControl.seasonBar.ScaleDevice; | |||||
import com.bonait.bnframework.common.constant.ConfigName; | import com.bonait.bnframework.common.constant.ConfigName; | ||||
import com.bonait.bnframework.common.constant.DataBus; | import com.bonait.bnframework.common.constant.DataBus; | ||||
import com.bonait.bnframework.common.db.QueryDB; | import com.bonait.bnframework.common.db.QueryDB; | ||||
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_PLCADDRESS; | ||||
import com.bonait.bnframework.common.db.mode.BPA_SILOS; | import com.bonait.bnframework.common.db.mode.BPA_SILOS; | ||||
import com.bonait.bnframework.common.db.res.AlertLogEnum; | |||||
import com.bonait.bnframework.common.db.res.ResGoodsMake; | import com.bonait.bnframework.common.db.res.ResGoodsMake; | ||||
import com.bonait.bnframework.common.db.res.ResGoodsRecipe; | import com.bonait.bnframework.common.db.res.ResGoodsRecipe; | ||||
import com.bonait.bnframework.common.db.res.SilosLsjyMode; | |||||
import com.bonait.bnframework.common.db.res.UserLogEnum; | import com.bonait.bnframework.common.db.res.UserLogEnum; | ||||
import com.bonait.bnframework.common.helper.ByteHelper; | |||||
import com.bonait.bnframework.common.helper.DataFormat; | |||||
import com.bonait.bnframework.common.helper.I.IReadCallBack; | |||||
import com.bonait.bnframework.common.helper.I.IRun; | import com.bonait.bnframework.common.helper.I.IRun; | ||||
import com.bonait.bnframework.common.helper.I.IRunT; | import com.bonait.bnframework.common.helper.I.IRunT; | ||||
import com.bonait.bnframework.common.helper.I.IThread; | import com.bonait.bnframework.common.helper.I.IThread; | ||||
import com.bonait.bnframework.common.helper.I.IWriteCallBack; | import com.bonait.bnframework.common.helper.I.IWriteCallBack; | ||||
import com.bonait.bnframework.common.helper.MediaPlayerHelper; | |||||
import com.bonait.bnframework.common.helper.MessageLog; | import com.bonait.bnframework.common.helper.MessageLog; | ||||
import com.bonait.bnframework.common.helper.RTrig; | |||||
import com.bonait.bnframework.common.helper.ThreadManager; | import com.bonait.bnframework.common.helper.ThreadManager; | ||||
import com.bonait.bnframework.common.modbus.ModbusTcpServer; | |||||
import com.bonait.bnframework.common.utils.AlertDialogUtils; | |||||
import com.bonait.bnframework.common.modbus.ModbusMaster; | |||||
import com.bonait.bnframework.common.utils.ToastUtils; | import com.bonait.bnframework.common.utils.ToastUtils; | ||||
import com.qmuiteam.qmui.widget.dialog.QMUIDialog; | |||||
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.HashMap; | import java.util.HashMap; | ||||
import java.util.IdentityHashMap; | |||||
import java.util.LinkedHashMap; | import java.util.LinkedHashMap; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | |||||
import java.util.concurrent.ConcurrentHashMap; | import java.util.concurrent.ConcurrentHashMap; | ||||
import kotlin.UShort; | |||||
/** | /** | ||||
* 执行配方 | * 执行配方 | ||||
*/ | */ | ||||
@@ -554,7 +534,7 @@ public class ExecuteTheRecipe { | |||||
ToastUtils.info("检测到PLC连接超时,尝试执行超时处理。"); | ToastUtils.info("检测到PLC连接超时,尝试执行超时处理。"); | ||||
//ModbusTcpHelper.get().release(); | //ModbusTcpHelper.get().release(); | ||||
//ModbusRTUServer.get().ConnectPLC(); | //ModbusRTUServer.get().ConnectPLC(); | ||||
PLCControl.get().initalPLC(new IWriteCallBack() { | |||||
PLCControl.get().inital(new IWriteCallBack() { | |||||
@Override | @Override | ||||
public void onSuccess() { | public void onSuccess() { | ||||
ToastUtils.success("超时处理--复位PLC变量完成。"); | ToastUtils.success("超时处理--复位PLC变量完成。"); | ||||
@@ -617,48 +597,6 @@ public class ExecuteTheRecipe { | |||||
} | } | ||||
} | } | ||||
/** | |||||
* RTU模式向写PLC数据 | |||||
* | |||||
* @param name | |||||
* @param value | |||||
*/ | |||||
public static void WritePLCForRTU(String name, Object value, IWriteCallBack callback) { | |||||
try { | |||||
int plcAddress=ConfigName.getInstance().SerialPLCAddress; | |||||
if (plcAddress<1) return; | |||||
if (ConfigName.getInstance().PLC_Address.containsKey(name)) { | |||||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(name); | |||||
if (!plcaddress.address.isEmpty() && !isTimeOut) { | |||||
if (plcaddress.address.toUpperCase().startsWith("D"))//int | |||||
{ | |||||
int startAddress=ModbusRTUServer.GetAddress(plcaddress.address); | |||||
short newvalue=Short.parseShort(value.toString()); | |||||
ModbusRTUServer.get().WriteShort(plcAddress,startAddress, newvalue, callback); | |||||
} else if (plcaddress.address.toUpperCase().startsWith("M"))//bool | |||||
{ | |||||
int startAddress=ModbusRTUServer.GetAddress(plcaddress.address); | |||||
boolean newValue=Boolean.parseBoolean(value.toString()); | |||||
ModbusRTUServer.get().WriteBool(plcAddress,startAddress, newValue, callback); | |||||
} else if (plcaddress.address.toUpperCase().startsWith("X"))//bool | |||||
{ | |||||
int startAddress=ModbusRTUServer.GetAddress(plcaddress.address); | |||||
boolean newValue=Boolean.parseBoolean(value.toString()); | |||||
ModbusRTUServer.get().WriteBool(plcAddress,startAddress, newValue, callback); | |||||
} else if (plcaddress.address.toUpperCase().startsWith("Y"))//bool | |||||
{ | |||||
int startAddress=ModbusRTUServer.GetAddress(plcaddress.address); | |||||
boolean newValue=Boolean.parseBoolean(value.toString()); | |||||
ModbusRTUServer.get().WriteBool(plcAddress,startAddress, newValue, callback); | |||||
} | |||||
} | |||||
} | |||||
} catch (Exception ex) { | |||||
ToastUtils.error("异常信息:" + ex.getMessage()); | |||||
} finally { | |||||
} | |||||
} | |||||
/** | /** | ||||
* 读PLC数据 | * 读PLC数据 | ||||
@@ -1048,7 +986,7 @@ public class ExecuteTheRecipe { | |||||
final boolean[] issucess2 = {false}; | final boolean[] issucess2 = {false}; | ||||
final boolean[] issucess3 = {false}; | final boolean[] issucess3 = {false}; | ||||
// 1. 关闭写保护。 | // 1. 关闭写保护。 | ||||
PLCControl.get().closeWriteProtect(new IWriteCallBack() { | |||||
ScaleDevice.get().closeWriteProtect(new IWriteCallBack() { | |||||
@Override | @Override | ||||
public void onSuccess() { | public void onSuccess() { | ||||
issucess1[0]=true; | issucess1[0]=true; | ||||
@@ -1060,7 +998,7 @@ public class ExecuteTheRecipe { | |||||
}); | }); | ||||
// 2.称台清零。 | // 2.称台清零。 | ||||
PLCControl.get().zeroScale(new IWriteCallBack() { | |||||
ScaleDevice.get().zeroScale(new IWriteCallBack() { | |||||
@Override | @Override | ||||
public void onSuccess() { | public void onSuccess() { | ||||
issucess2[0]=true; | issucess2[0]=true; | ||||
@@ -1151,7 +1089,7 @@ public class ExecuteTheRecipe { | |||||
final boolean[] issucess1 = {false}; | final boolean[] issucess1 = {false}; | ||||
// 1. 打开写保护 | // 1. 打开写保护 | ||||
PLCControl.get().openWriteProtect(new IWriteCallBack() { | |||||
ScaleDevice.get().openWriteProtect(new IWriteCallBack() { | |||||
@Override | @Override | ||||
public void onSuccess() { | public void onSuccess() { | ||||
issucess1[0]=true; | issucess1[0]=true; | ||||
@@ -11,24 +11,24 @@ import com.bonait.bnframework.common.modbus.ModbusMaster; | |||||
import com.bonait.bnframework.common.utils.ToastUtils; | import com.bonait.bnframework.common.utils.ToastUtils; | ||||
/**PLC控制类*/ | /**PLC控制类*/ | ||||
public class PLCController{ | |||||
public class PLCControl{ | |||||
//region 单例模式 | //region 单例模式 | ||||
private static volatile PLCController instance = null; | |||||
public static PLCController get() { | |||||
PLCController manager = instance; | |||||
private static volatile PLCControl instance = null; | |||||
public static PLCControl get() { | |||||
PLCControl manager = instance; | |||||
if (manager == null) { | if (manager == null) { | ||||
synchronized (PLCController.class) { | |||||
synchronized (PLCControl.class) { | |||||
manager = instance; | manager = instance; | ||||
if (manager == null) { | if (manager == null) { | ||||
manager = new PLCController(); | |||||
manager = new PLCControl(); | |||||
instance = manager; | instance = manager; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
return manager; | return manager; | ||||
} | } | ||||
private PLCController(){}; | |||||
private PLCControl(){}; | |||||
//endregion | //endregion | ||||
//region 私有变量 | //region 私有变量 | ||||
@@ -39,7 +39,7 @@ public class PLCController{ | |||||
//endregion | //endregion | ||||
public void Inital(IWriteCallBack callBack) { | |||||
public void inital(IWriteCallBack callBack) { | |||||
//TODO:确定初始化逻辑再写。 | //TODO:确定初始化逻辑再写。 | ||||
} | } |
@@ -1,340 +0,0 @@ | |||||
package com.bonait.bnframework.business.devicesControl; | |||||
import android.os.Handler; | |||||
import android.os.Looper; | |||||
import com.bonait.bnframework.business.ExecuteTheRecipe; | |||||
import com.bonait.bnframework.common.constant.ConfigName; | |||||
import com.bonait.bnframework.common.db.mode.BPA_PLCADDRESS; | |||||
import com.bonait.bnframework.common.helper.DataFormat; | |||||
import com.bonait.bnframework.common.helper.I.IWriteCallBack; | |||||
import com.bonait.bnframework.common.modbus.ModbusRTUServer; | |||||
import com.bonait.bnframework.common.utils.ToastUtils; | |||||
import java.nio.ByteBuffer; | |||||
import java.nio.ByteOrder; | |||||
public class PLCControl { | |||||
//region 单例模式 | |||||
private static volatile PLCControl instance = null; | |||||
public static PLCControl get() { | |||||
PLCControl manager = instance; | |||||
if (manager == null) { | |||||
synchronized (PLCControl.class) { | |||||
manager = instance; | |||||
if (manager == null) { | |||||
manager = new PLCControl(); | |||||
instance = manager; | |||||
} | |||||
} | |||||
} | |||||
return manager; | |||||
} | |||||
private PLCControl() { | |||||
} | |||||
//endregion | |||||
/**语音模块的从站地址,这个最好不改,设备端不好修改默认地址*/ | |||||
private final int voiceAddress=1; | |||||
/**电子秤的从站地址*/ | |||||
private final int scaleAddress=2; | |||||
/**PLC的从站地址*/ | |||||
private final int PLCAddress=3; | |||||
//region 语音模块控制 , 从站地址:1 | |||||
public void Speak(String content,IWriteCallBack callBack){ | |||||
try { | |||||
if (!content.isEmpty() /*&& !ExecuteTheRecipe.isTimeOut*/) { | |||||
int address = 0; | |||||
short[] values=getGB2312(content); | |||||
ModbusRTUServer.get().WriteString(voiceAddress, address, values, callBack); | |||||
} | |||||
} | |||||
catch (Exception ex) { | |||||
ToastUtils.error("Exception message:" + ex.getMessage()); | |||||
} | |||||
} | |||||
//endregion | |||||
//region 电子秤控制, 从站地址:2 | |||||
/**获取称当前重量、当前AD值、当前零位,文档建议150ms以上轮询一次*/ | |||||
public int getCurrentWeight(){ | |||||
//int readLength=3; | |||||
int[] result=new int[]{0}; | |||||
try { | |||||
ModbusRTUServer.get().ReadInts(scaleAddress, 0, 1, DataFormat.BADC, val-> { | |||||
result[0]=val[0]; | |||||
}); | |||||
}catch (Exception ex){ | |||||
ToastUtils.error("Exception message:" + ex.getMessage()); | |||||
}finally { | |||||
return result[0]; | |||||
} | |||||
} | |||||
/**写入砝码重量*/ | |||||
public void writeCounterWeight(short counterWeight,IWriteCallBack callBack){ | |||||
try { | |||||
ModbusRTUServer.get().WriteShort(scaleAddress, 6,counterWeight,callBack); | |||||
}catch (Exception ex){ | |||||
ToastUtils.error("Exception message:" + ex.getMessage()); | |||||
} | |||||
} | |||||
/**去皮*/ | |||||
public void tare(IWriteCallBack callBack){ | |||||
try { | |||||
ModbusRTUServer.get().WriteShort(scaleAddress, 21,(short) 1,callBack); | |||||
}catch (Exception ex){ | |||||
ToastUtils.error("Exception message:" + ex.getMessage()); | |||||
} | |||||
} | |||||
/**恢复去皮*/ | |||||
public void cancelTare(IWriteCallBack callBack){ | |||||
try { | |||||
ModbusRTUServer.get().WriteShort(scaleAddress, 21,(short) 2,callBack); | |||||
}catch (Exception ex){ | |||||
ToastUtils.error("Exception message:" + ex.getMessage()); | |||||
} | |||||
} | |||||
/**零点校准,写入前需要先关闭写保护*/ | |||||
public void zeroScale(IWriteCallBack callBack){ | |||||
try { | |||||
ModbusRTUServer.get().WriteShort(scaleAddress, 22,(short) 1,callBack); | |||||
}catch (Exception ex){ | |||||
ToastUtils.error("Exception message:" + ex.getMessage()); | |||||
} | |||||
} | |||||
/**恢复出厂设置,写入前需要先关闭写保护*/ | |||||
public void factoryReset(IWriteCallBack callBack){ | |||||
try { | |||||
ModbusRTUServer.get().WriteShort(scaleAddress, 22,(short) 9,callBack); | |||||
}catch (Exception ex){ | |||||
ToastUtils.error("Exception message:" + ex.getMessage()); | |||||
} | |||||
} | |||||
/**打开写保护*/ | |||||
public void openWriteProtect(IWriteCallBack callBack){ | |||||
try { | |||||
ModbusRTUServer.get().WriteShort(scaleAddress, 23,(short) 0,callBack); | |||||
}catch (Exception ex){ | |||||
ToastUtils.error("Exception message:" + ex.getMessage()); | |||||
} | |||||
} | |||||
/**关闭写保护,零点校准、写入砝码重量、恢复出厂设置都需要先执行此操作*/ | |||||
public void closeWriteProtect(IWriteCallBack callBack){ | |||||
try { | |||||
ModbusRTUServer.get().WriteShort(scaleAddress, 23,(short) 1,callBack); | |||||
}catch (Exception ex){ | |||||
ToastUtils.error("Exception message:" + ex.getMessage()); | |||||
} | |||||
} | |||||
//endregion | |||||
//region PLC控制 设备从站地址:3 | |||||
/**复位PLC所有输出以及心跳,[如果输出更换了点位的话,无法复位所有电机]*/ | |||||
public void initalPLC(IWriteCallBack callBack){ | |||||
try { | |||||
short[] values = new short[14]; | |||||
final boolean[] isSuccess={false,false,false}; | |||||
int startAddress = ModbusRTUServer.GetAddress("D10"); | |||||
ModbusRTUServer.get().WriteShorts(PLCAddress, startAddress, values, new IWriteCallBack() { | |||||
@Override | |||||
public void onSuccess() { | |||||
isSuccess[0]=true; | |||||
} | |||||
@Override | |||||
public void onFailure(String ErrorMsg) { | |||||
} | |||||
}); | |||||
int timeoutFlag = ModbusRTUServer.GetAddress("M0"); | |||||
ModbusRTUServer.get().WriteBool(PLCAddress, timeoutFlag, false, new IWriteCallBack() { | |||||
@Override | |||||
public void onSuccess() { | |||||
isSuccess[1]=true; | |||||
} | |||||
@Override | |||||
public void onFailure(String ErrorMsg) { | |||||
} | |||||
}); | |||||
clrHeartbeat("心跳时间", new IWriteCallBack() { | |||||
@Override | |||||
public void onSuccess() { | |||||
isSuccess[2]=true; | |||||
} | |||||
@Override | |||||
public void onFailure(String ErrorMsg) { | |||||
} | |||||
}); | |||||
if (callBack != null) { | |||||
if (isSuccess[0] && isSuccess[1] && isSuccess[2]){ | |||||
callBack.onSuccess(); | |||||
}else{ | |||||
callBack.onFailure("Initial Failure"); | |||||
} | |||||
} | |||||
} catch (Exception ex) { | |||||
if (callBack != null) { | |||||
callBack.onFailure(ex.getMessage()); | |||||
} | |||||
} | |||||
} | |||||
/**打开电机,指定时间后关闭 | |||||
* @param delayTime 关闭延迟时间,单位:ms | |||||
* */ | |||||
public void openMotorAndClose(int index,int delayTime,IWriteCallBack callBack){ | |||||
try { | |||||
openMotor(index, new IWriteCallBack() { | |||||
@Override | |||||
public void onSuccess() { | |||||
new Handler(Looper.getMainLooper()).postDelayed(()->{ | |||||
closeMotor(index, new IWriteCallBack() { | |||||
@Override | |||||
public void onSuccess() { | |||||
callBack.onSuccess(); | |||||
} | |||||
@Override | |||||
public void onFailure(String ErrorMsg) { | |||||
callBack.onFailure(ErrorMsg); | |||||
} | |||||
}); | |||||
},delayTime); | |||||
} | |||||
@Override | |||||
public void onFailure(String ErrorMsg) { | |||||
callBack.onFailure(ErrorMsg); | |||||
} | |||||
}); | |||||
} catch (Exception ex) { | |||||
ToastUtils.error("OpenMotorAndClose Exception:" + ex.getMessage()); | |||||
} | |||||
} | |||||
/**打开电机*/ | |||||
public void openMotor(int index, IWriteCallBack callBack) { | |||||
String name="通道"+index+"开关"; | |||||
try { | |||||
if (ConfigName.getInstance().PLC_Address.containsKey(name)) { | |||||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(name); | |||||
if (!plcaddress.address.isEmpty() && !ExecuteTheRecipe.isTimeOut) { | |||||
int address = ModbusRTUServer.GetAddress(plcaddress.address); | |||||
ModbusRTUServer.get().WriteShort(PLCAddress, address, (short)1, callBack); | |||||
} | |||||
} | |||||
} catch (Exception ex) { | |||||
ToastUtils.error("OpenMotor Exception:" + ex.getMessage()); | |||||
} | |||||
} | |||||
/**关闭电机*/ | |||||
public void closeMotor(int index, IWriteCallBack callBack) { | |||||
String name="通道"+index+"开关"; | |||||
try { | |||||
if (ConfigName.getInstance().PLC_Address.containsKey(name)) { | |||||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(name); | |||||
if (!plcaddress.address.isEmpty() && !ExecuteTheRecipe.isTimeOut) { | |||||
int address = ModbusRTUServer.GetAddress(plcaddress.address); | |||||
ModbusRTUServer.get().WriteShort(PLCAddress, address, (short)0, callBack); | |||||
} | |||||
} | |||||
} catch (Exception ex) { | |||||
ToastUtils.error("CloseMotor Exception:" + ex.getMessage());} | |||||
} | |||||
/**获取所有电机的状态,为true表示正在转,反之,为false。*/ | |||||
public boolean[] getAllMotorStatus(){ | |||||
//一共有14个电机 | |||||
int length = 14; | |||||
boolean[] result = new boolean[length]; | |||||
try { | |||||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get("通道1开关"); | |||||
if (!plcaddress.address.isEmpty() && !ExecuteTheRecipe.isTimeOut) { | |||||
int startAddress = ModbusRTUServer.GetAddress(plcaddress.address); | |||||
ModbusRTUServer.get().ReadShorts(PLCAddress, startAddress, length, val -> { | |||||
for (int i = 0; i < length; i++) { | |||||
result[i] = val[i] > 0 ? true : false; | |||||
} | |||||
}); | |||||
} | |||||
}catch (Exception ex){ | |||||
ToastUtils.error("GetAllMotorStatus Exception:" + ex.getMessage()); | |||||
}finally { | |||||
return result; | |||||
} | |||||
} | |||||
/**复位心跳*/ | |||||
public void clrHeartbeat(String name,IWriteCallBack callBack){ | |||||
try { | |||||
if (ConfigName.getInstance().PLC_Address.containsKey(name)) { | |||||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(name); | |||||
if (!plcaddress.address.isEmpty()/* && !ExecuteTheRecipe.isTimeOut*/) { | |||||
int address = ModbusRTUServer.GetAddress(plcaddress.address); | |||||
ModbusRTUServer.get().WriteShort(PLCAddress , address ,(short) 0 , callBack); | |||||
} | |||||
} | |||||
} catch (Exception ex) { | |||||
ToastUtils.error("ClrHeartbeat Exception:" + ex.getMessage()); | |||||
} | |||||
} | |||||
/**读取是否超时*/ | |||||
public boolean isTimeOut(String name){ | |||||
final boolean[] result = {true}; | |||||
try{ | |||||
if (ConfigName.getInstance().PLC_Address.containsKey(name)) { | |||||
BPA_PLCADDRESS plcaddress = ConfigName.getInstance().PLC_Address.get(name); | |||||
if (!plcaddress.address.isEmpty() /*&& ConfigName.getInstance().SerialIsConnect*/) { | |||||
ModbusRTUServer.get().ReadBools(PLCAddress, plcaddress.address, 1, val-> { | |||||
result[0] =val[0]; | |||||
}); | |||||
} | |||||
} | |||||
}catch (Exception ex){ | |||||
ToastUtils.error("Exception message:" + ex.getMessage()); | |||||
}finally { | |||||
return result[0]; | |||||
} | |||||
} | |||||
//endregion | |||||
/**字符串转换为GB2312编码,需要测试,可能不对*/ | |||||
public short[] getGB2312(String str){ | |||||
try{ | |||||
byte[] bytes=str.getBytes("gb2312"); | |||||
short[] result=new short[bytes.length/2]; | |||||
ByteBuffer.wrap(bytes).order(ByteOrder.BIG_ENDIAN).asShortBuffer().get(result); | |||||
return result; | |||||
}catch (Exception e){ | |||||
return null; | |||||
} | |||||
} | |||||
} |
@@ -18,7 +18,7 @@ import androidx.annotation.Nullable; | |||||
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.devicesControl.PLCControl; | |||||
import com.bonait.bnframework.business.deviceControl.seasonBar.PLCControl; | |||||
import com.bonait.bnframework.common.constant.ConfigName; | 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.res.lcMode; | import com.bonait.bnframework.common.db.res.lcMode; | ||||
@@ -24,7 +24,7 @@ import androidx.annotation.Nullable; | |||||
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.devicesControl.PLCControl; | |||||
import com.bonait.bnframework.business.deviceControl.seasonBar.PLCControl; | |||||
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_MATERIAL; | ||||
import com.bonait.bnframework.common.db.mode.BPA_SILOSANDMATERIAL; | import com.bonait.bnframework.common.db.mode.BPA_SILOSANDMATERIAL; | ||||
@@ -2,56 +2,49 @@ package com.bonait.bnframework.modules.home.fragment.mode; | |||||
import android.app.Activity; | import android.app.Activity; | ||||
import android.content.Context; | import android.content.Context; | ||||
import android.content.DialogInterface; | |||||
import android.graphics.Color; | import android.graphics.Color; | ||||
import android.os.Handler; | import android.os.Handler; | ||||
import android.os.Looper; | |||||
import android.os.Message; | import android.os.Message; | ||||
import android.os.SystemClock; | import android.os.SystemClock; | ||||
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.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; | ||||
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.deviceControl.seasonBar.PLCControl; | |||||
import com.bonait.bnframework.business.deviceControl.seasonBar.ScaleDevice; | import com.bonait.bnframework.business.deviceControl.seasonBar.ScaleDevice; | ||||
import com.bonait.bnframework.common.constant.ConfigName; | 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_SILOS; | ||||
import com.bonait.bnframework.common.db.mode.BPA_SILOSANDMATERIAL; | |||||
import com.bonait.bnframework.common.db.res.UserLogEnum; | |||||
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.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.AlertDialogUtils; | |||||
import com.bonait.bnframework.common.utils.ToastUtils; | import com.bonait.bnframework.common.utils.ToastUtils; | ||||
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.dialog.QMUIDialog; | ||||
import com.qmuiteam.qmui.widget.tab.QMUIBasicTabSegment; | |||||
import com.qmuiteam.qmui.widget.tab.QMUITabSegment; | |||||
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction; | |||||
import com.suke.widget.SwitchButton; | import com.suke.widget.SwitchButton; | ||||
import java.math.BigDecimal; | |||||
import java.text.DecimalFormat; | |||||
import org.apache.commons.math3.fitting.PolynomialCurveFitter; | |||||
import org.apache.commons.math3.fitting.WeightedObservedPoints; | |||||
import java.util.ArrayList; | import java.util.ArrayList; | ||||
import java.util.List; | |||||
import java.util.Arrays; | |||||
import java.util.Map; | |||||
import butterknife.BindView; | import butterknife.BindView; | ||||
import butterknife.ButterKnife; | import butterknife.ButterKnife; | ||||