Browse Source

料仓设置

master
fyf 1 year ago
parent
commit
6ef20ad06c
10 changed files with 208 additions and 21 deletions
  1. +1
    -1
      .idea/misc.xml
  2. +3
    -0
      app/src/main/java/com/example/bpa/app/ModbusTcpServer.java
  3. +7
    -0
      app/src/main/java/com/example/bpa/config/DataBus.java
  4. +100
    -0
      app/src/main/java/com/example/bpa/helper/FlashHelper.java
  5. +19
    -7
      app/src/main/java/com/example/bpa/view/adapter/lc_item_adapter.java
  6. +53
    -13
      app/src/main/java/com/example/bpa/view/from/lcsz_activity.java
  7. +3
    -0
      app/src/main/java/com/example/bpa/view/from/yfcl_activity.java
  8. +22
    -0
      app/src/main/res/layout/item/layout/lc_item.xml
  9. BIN
     
  10. BIN
     

+ 1
- 1
.idea/misc.xml View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">


+ 3
- 0
app/src/main/java/com/example/bpa/app/ModbusTcpServer.java View File

@@ -3,6 +3,7 @@ package com.example.bpa.app;

import com.example.bpa.Model.IReadCallBack;
import com.example.bpa.Model.IWriteCallBack;
import com.example.bpa.config.DataBus;
import com.example.bpa.helper.MessageLog;
import com.licheedev.modbus4android.ModbusCallback;
import com.licheedev.modbus4android.ModbusParam;
@@ -116,6 +117,7 @@ public class ModbusTcpServer {
@Override
public void onSuccess(ModbusMaster modbusMaster) {
MessageLog.ShowInfo("设备 " + host + " 连接成功");
DataBus.getInstance().PlcIsConnect=true;
//1.数据中心
DeviceData.Get().Init();
//2.业务线程
@@ -124,6 +126,7 @@ public class ModbusTcpServer {

@Override
public void onFailure(Throwable tr) {
DataBus.getInstance().PlcIsConnect=false;
MessageLog.ShowError("设备 " + host + " 连接失败:" + tr.getMessage());
}



+ 7
- 0
app/src/main/java/com/example/bpa/config/DataBus.java View File

@@ -35,6 +35,13 @@ public class DataBus {
}
//endregion

//region 连接状态
/**
* Plc是否连接
*/
public boolean PlcIsConnect=false;
//endregion

//region 数据中心
/**
* 主界面商品列表


+ 100
- 0
app/src/main/java/com/example/bpa/helper/FlashHelper.java View File

@@ -0,0 +1,100 @@
package com.example.bpa.helper;
import android.util.Log;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.widget.EditText;

import java.security.Key;
import java.util.ArrayList;
import java.util.List;

/**
* Title:控件闪烁帮助类
* Description:
* <p>
* Created by pei
* Date: 2018/4/22
*/
public class FlashHelper {

private FlashHelper() {}

private static class Holder {
private static FlashHelper instance = new FlashHelper();
}

public static FlashHelper getInstance() {
return FlashHelper.Holder.instance;
}
public List<Integer> listviews = new ArrayList<Integer>();
public List<Integer> listviews1 = new ArrayList<Integer>();

/**开启View闪烁效果**/
public void startFlick( View view ,Integer key) {
if (null == view) {
return;
}
if(!listviews.contains(key))
{
view.setVisibility(View.VISIBLE);
Log.e("213", "VISIBLE: ");
Animation alphaAnimation = new AlphaAnimation(1, 0);
alphaAnimation.setDuration(300);
alphaAnimation.setInterpolator(new LinearInterpolator());
alphaAnimation.setRepeatCount(Animation.INFINITE);
alphaAnimation.setRepeatMode(Animation.REVERSE);
view.startAnimation(alphaAnimation);
listviews.add(key);
}
}

/**取消View闪烁效果**/
public void stopFlick( View view ,Integer key ) {
if (null == view) {
return;
}

if(listviews.contains(key))
{
view.setVisibility(View.GONE);
view.clearAnimation();
listviews.remove(key);
}
}

/**开启View闪烁效果**/
public void startFlick1( View view ,Integer key) {
if (null == view) {
return;
}
if(!listviews1.contains(key))
{
view.setVisibility(View.VISIBLE);
Log.e("213", "VISIBLE: ");
Animation alphaAnimation = new AlphaAnimation(1, 0);
alphaAnimation.setDuration(300);
alphaAnimation.setInterpolator(new LinearInterpolator());
alphaAnimation.setRepeatCount(Animation.INFINITE);
alphaAnimation.setRepeatMode(Animation.REVERSE);
view.startAnimation(alphaAnimation);
listviews1.add(key);
}
}

/**取消View闪烁效果**/
public void stopFlick1( View view ,Integer key ) {
if (null == view) {
return;
}

if(listviews1.contains(key))
{
view.setVisibility(View.GONE);
view.clearAnimation();
listviews1.remove(key);
}
}

}

+ 19
- 7
app/src/main/java/com/example/bpa/view/adapter/lc_item_adapter.java View File

@@ -8,6 +8,7 @@ import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;

@@ -73,24 +74,35 @@ public class lc_item_adapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
/**、
* 料仓仓号
*/
TextView num;
public TextView num;
/**
* 料仓余量
*/
TextView silosmargin;

public TextView silosmargin;
/**
* 预警标识
*/
public RelativeLayout image_yj;
/**
* 告警标识
*/
public RelativeLayout image_gj;
/**
* 物料ID
*/
public String id;

/**
* 物料名称
*/
public String MaterialName;

// public String id;
public MyLCViewHolder(View view) {
super(view);
materialName = (TextView) view.findViewById(R.id.lc_item_materialName);
num = (TextView) view.findViewById(R.id.lc_item_num);
silosmargin = (TextView) view.findViewById(R.id.lc_item_silosmargin);
image_yj = (RelativeLayout) view.findViewById(R.id.image_yj);
image_gj = (RelativeLayout) view.findViewById(R.id.image_gj);
}

}

}

+ 53
- 13
app/src/main/java/com/example/bpa/view/from/lcsz_activity.java View File

@@ -18,11 +18,15 @@ import android.widget.TextView;
import com.example.bpa.Model.IReadCallBack;
import com.example.bpa.Model.IThread;
import com.example.bpa.R;
import com.example.bpa.app.DeviceData;
import com.example.bpa.app.ModbusTcpServer;
import com.example.bpa.config.ConfigName;
import com.example.bpa.config.DataBus;
import com.example.bpa.db.QueryDB;
import com.example.bpa.db.mode.BPA_MATERIAL;
import com.example.bpa.db.mode.BPA_SILOS;
import com.example.bpa.db.mode.BPA_SILOSANDMATERIAL;
import com.example.bpa.helper.FlashHelper;
import com.example.bpa.helper.T;
import com.example.bpa.helper.ThreadManager;
import com.example.bpa.view.adapter.lc_item_adapter;
@@ -58,7 +62,8 @@ public class lcsz_activity extends AppCompatActivity implements View.OnClickList
ArrayList<BPA_MATERIAL> bpa_materials=new ArrayList<>();
//当前选中的料仓id
lc_item_adapter.MyLCViewHolder currentSilo;

//当前料仓集合
List<lcMode> datas = new ArrayList<lcMode>();
//region 私有函数
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -66,6 +71,7 @@ public class lcsz_activity extends AppCompatActivity implements View.OnClickList
setContentView(R.layout.activity_lcsz);
Init();
initEvents();
Run();
}
//endregion

@@ -90,7 +96,6 @@ public class lcsz_activity extends AppCompatActivity implements View.OnClickList
//必须,防止recyclerview高度为wrap时测量item高度0
layout.setAutoMeasureEnabled(true);
recyclerView.setLayoutManager(layout);
List<lcMode> datas = new ArrayList<lcMode>();
//获取料仓数据
ArrayList<BPA_SILOS> bpa_silos =QueryDB.GetSilosALL();
//加载materials数据
@@ -145,13 +150,11 @@ public class lcsz_activity extends AppCompatActivity implements View.OnClickList
listViewParent.setVisibility(View.VISIBLE);
currentSilo = null;
currentSilo = (lc_item_adapter.MyLCViewHolder) viewHolder;

}
}

@Override
public void onItemLongClick(View view, int position) {

}
}));
//endregion
@@ -207,22 +210,59 @@ public class lcsz_activity extends AppCompatActivity implements View.OnClickList

//endregion

//region
//region 线程

/**
* 实时显示线程
*/
public void Run()
{
ThreadManager.Get().StartLong("Plc设备数据监听", true, new IThread() {
new Thread(new Runnable() {
@Override
public void Run() throws InterruptedException {
//获取实时值
public void run() {
while (DataBus.getInstance().PlcIsConnect) {
try {
lcsz_activity.this.runOnUiThread(new Runnable() {
@Override
public void run() {

for (int i=0;i<datas.size();i++)
{
int num=datas.get(i).num;
float val= DeviceData.Get().getCallCurrentWeight(num);
RecyclerView.ViewHolder viewHolder = recyclerView.findViewHolderForAdapterPosition(i);
if(viewHolder!=null)
{
lc_item_adapter.MyLCViewHolder hold = (lc_item_adapter.MyLCViewHolder) viewHolder;
//hold.silosmargin.setText(new java.text.DecimalFormat("#.00").format(val)+"g");
hold.silosmargin.setText(val+"g");

Thread.sleep(10);
}
@Override
public void RunComplete() throws InterruptedException {
if(val<datas.get(i).warningValue)//补料
{
FlashHelper.getInstance().startFlick1(hold.image_yj,num);
}else
{
FlashHelper.getInstance().stopFlick1(hold.image_yj,num);
}

if(val<datas.get(i).thrsoleValue)//告警
{
FlashHelper.getInstance().startFlick(hold.image_gj,num);
}else
{
FlashHelper.getInstance().stopFlick(hold.image_gj,num);
}
}
}
}
});
Thread.sleep(100);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
});
}).start();
}
//endreion
}

+ 3
- 0
app/src/main/java/com/example/bpa/view/from/yfcl_activity.java View File

@@ -8,6 +8,7 @@ import android.widget.ImageView;
import android.widget.TextView;

import com.example.bpa.R;
import com.example.bpa.config.DataBus;

/**
* 研发出料
@@ -31,6 +32,8 @@ public class yfcl_activity extends AppCompatActivity implements View.OnClickList
setContentView(R.layout.activity_yfcl);
Init();
initEvents();
DataBus.getInstance().PlcIsConnect=true;

}
//endregion



+ 22
- 0
app/src/main/res/layout/item/layout/lc_item.xml View File

@@ -44,5 +44,27 @@
android:gravity="center"
android:textColor="@color/white"
android:text="未设置" />

<RelativeLayout
android:id="@+id/image_yj"
android:layout_width="20dp"
android:layout_marginTop="10dp"
android:layout_marginRight="5dp"
android:layout_alignParentRight="true"
android:layout_height="20dp"
android:visibility="gone"
android:background="@mipmap/bl">
</RelativeLayout>

<RelativeLayout
android:id="@+id/image_gj"
android:layout_width="20dp"
android:layout_marginTop="30dp"
android:layout_marginRight="5dp"
android:visibility="gone"
android:layout_alignParentRight="true"
android:layout_height="20dp"
android:background="@mipmap/gj">
</RelativeLayout>
</RelativeLayout>
</LinearLayout>

BIN
View File


BIN
View File


Loading…
Cancel
Save