lizhanwei
2020-03-02 7a621d952fb83005ce7b6db82f9b2206746562be
提交根据协处理器给的gpio信号来查看车载信号情况
7个文件已修改
129 ■■■■ 已修改文件
app/build.gradle 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/safeluck/drive/evaluation/fragment/InspectSignalFragment.java 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_check_signal.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/layout_signal_slice.xml 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/toolbar.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/build.gradle
@@ -16,6 +16,9 @@
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    dataBinding{
        enabled = true
    }
    signingConfigs {
        release {
            storeFile file("../key/key.jks")
app/src/main/java/safeluck/drive/evaluation/fragment/BaseDatasFragment.java
@@ -35,6 +35,7 @@
import java.util.List;
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.BuildConfig;
import safeluck.drive.evaluation.Constant;
import safeluck.drive.evaluation.DB.appstatusdb.AppStatus;
import safeluck.drive.evaluation.DB.appstatusdb.AppStatusViewModel;
@@ -83,7 +84,7 @@
                                    if (fields[i].getName().equalsIgnoreCase("version")){
                                        String version = (String) fields[i].get(mcuInfo);
                                        version = new String(BytesUtils.hexStringToBytes(version),"GBK");
                                        datas.add("版本号:" + version);
                                        datas.add("版本号:" + version+"#"+ BuildConfig.VERSION_NAME);
                                    }else if(fields[i].getName().equalsIgnoreCase("sn")){
                                        datas.add( "设备序列号:" + fields[i].get(mcuInfo));
                                    }else if(fields[i].getName().equalsIgnoreCase("selftest")){
@@ -103,7 +104,7 @@
                                    if (mRtkConfig != null){
                                        datas.add("省ID:"+mRtkConfig.getProvince());
                                        datas.add("市ID:"+mRtkConfig.getCity());
                                        datas.add("电话:"+mRtkConfig.getPhone());
                                        datas.add("电话:"+mRtkConfig.getSn());
                                        datas.add("RTK平台地址:"+mRtkConfig.getIp()+":"+mRtkConfig.getPort());
                                        datas.add("考试平台地址:"+ExamPlatformData.getInstance().getPlatformIP()+":"+ExamPlatformData.getInstance().getPlatformPort());
app/src/main/java/safeluck/drive/evaluation/fragment/InspectSignalFragment.java
@@ -5,6 +5,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -13,8 +14,13 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.databinding.DataBindingUtil;
import com.anyun.im_lib.util.ByteUtil;
import com.google.gson.Gson;
import java.util.ArrayList;
import java.util.List;
import me.yokeyword.fragmentation.SupportFragment;
import safeluck.drive.evaluation.Constant;
@@ -22,6 +28,8 @@
import safeluck.drive.evaluation.bean.MCUInfo;
import safeluck.drive.evaluation.cEventCenter.CEventCenter;
import safeluck.drive.evaluation.cEventCenter.ICEventListener;
import safeluck.drive.evaluation.databinding.LayoutCheckSignalBinding;
import safeluck.drive.evaluation.databinding.LayoutSignalSliceBinding;
/**
 * MyApplication2
@@ -31,20 +39,52 @@
 */
public class InspectSignalFragment extends SupportFragment {
    private static final String TAG = "InspectSignalFragment";
    private static final int  VALIAD_NUM = 1;//1高电平有效
    private TextView textView_turnLight,tv_speed,tv_engine;
    private Toolbar toolbar;
    private Gson gson= new Gson();
    private LayoutCheckSignalBinding bingding;
    private List<Integer> gpios = new ArrayList<>();
    Drawable leftGreen ;
    Drawable leftGray ;
    private ICEventListener icEventListener = new ICEventListener() {
        @Override
        public void onCEvent(String topic, int msgCode, int resultCode, Object obj) {
            if (msgCode==Constant.MCU_SN){
                final MCUInfo mcuInfo = gson.fromJson((String)obj, MCUInfo.class);
                if (mcuInfo != null){
                    tv_engine.post(new Runnable() {
                    bingding.getRoot().post(new Runnable() {
                        @Override
                        public void run() {
                            tv_engine.setText(String.valueOf(mcuInfo.getEngine()));
                            tv_speed.setText(String.valueOf(mcuInfo.getSpeed()));
                            for (int i = 0; i < 16; i++) {
                                gpios.add(      ByteUtil.getBitStatus(mcuInfo.getGpio(),i));
                            }
                            bingding.tvRoateSpeed.setText(String.valueOf(mcuInfo.getEngine()));
                            bingding.tvDangweiNum.setText(String.valueOf(mcuInfo.getSpeed()));
                            bingding.inpsetSignalSlice.tvSeatBelt.setCompoundDrawablesWithIntrinsicBounds(gpios.get(0)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvTrunLeft.setCompoundDrawablesWithIntrinsicBounds(gpios.get(1)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvTurnRight.setCompoundDrawablesWithIntrinsicBounds(gpios.get(2)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvParkingBrake.setCompoundDrawablesWithIntrinsicBounds(gpios.get(3)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvFootBrake.setCompoundDrawablesWithIntrinsicBounds(gpios.get(4)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvLowLamp.setCompoundDrawablesWithIntrinsicBounds(gpios.get(5)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvHighBeam.setCompoundDrawablesWithIntrinsicBounds(gpios.get(6)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvGateLock.setCompoundDrawablesWithIntrinsicBounds(gpios.get(7)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvNullEngine.setCompoundDrawablesWithIntrinsicBounds(gpios.get(8)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvGearOne.setCompoundDrawablesWithIntrinsicBounds(gpios.get(9)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvGearTwo.setCompoundDrawablesWithIntrinsicBounds(gpios.get(10)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvGearThree.setCompoundDrawablesWithIntrinsicBounds(gpios.get(11)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvGearFour.setCompoundDrawablesWithIntrinsicBounds(gpios.get(12)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvGearFive.setCompoundDrawablesWithIntrinsicBounds(gpios.get(13)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvWindingOne.setCompoundDrawablesWithIntrinsicBounds(gpios.get(14)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                            bingding.inpsetSignalSlice.tvWindingTwo.setCompoundDrawablesWithIntrinsicBounds(gpios.get(15)==VALIAD_NUM?leftGreen:leftGray,null,null,null);
                        }
                    });
                }
@@ -60,15 +100,18 @@
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.layout_check_signal,container,false);
        initView(view);
        return view;
        bingding = DataBindingUtil.inflate(inflater,R.layout.layout_check_signal,container,false);
        initView();
        leftGreen = getResources().getDrawable(R.drawable.green_light,null);
        leftGray = getResources().getDrawable(R.drawable.gray_light,null);
        return bingding.getRoot();
    }
    private void initView(View view) {
        tv_engine = view.findViewById(R.id.tv_roate_speed);
        tv_speed = view.findViewById(R.id.tv_dangwei_num);
        toolbar =view.findViewById(R.id.toolbar);
    private void initView() {
        toolbar = bingding.inpsectSignalToolbar.toolbar;
        toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_white_24dp,null));
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
@@ -77,14 +120,7 @@
            }
        });
        toolbar.setTitle("查看车载信号输入");
        textView_turnLight = view.findViewById(R.id.tv_fog_lamp);
        final Drawable left = getResources().getDrawable(R.drawable.green_light,null);
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                textView_turnLight.setCompoundDrawablesWithIntrinsicBounds(left,null,null,null);
            }
        },5*1000);
    }
    @Override
app/src/main/res/layout/layout_check_signal.xml
@@ -1,15 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
        android:background="@android:color/white"
    >
    <include layout="@layout/toolbar"/>
        <include layout="@layout/toolbar" android:id="@+id/inpsect_signal_toolbar"/>
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        <include layout="@layout/layout_signal_slice"/>
            <include layout="@layout/layout_signal_slice" android:id="@+id/inpset_signal_slice"/>
<RelativeLayout
    android:layout_gravity="end"
    android:padding="10dp"
@@ -56,3 +57,5 @@
</LinearLayout>
</layout>
app/src/main/res/layout/layout_signal_slice.xml
@@ -1,5 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
    <data>
<variable
    name="gpio"
    type="safeluck.drive.evaluation.bean.MCUInfo" />
    </data>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
@@ -13,6 +18,7 @@
        android:id="@+id/tv_loudspeaker"
        android:drawableLeft="@drawable/gray_light"
        android:drawablePadding="5dp"
        android:textColor="@android:color/black"/>
    <TextView
        android:layout_width="wrap_content"
@@ -48,9 +54,9 @@
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="雾灯"
            android:text="空档"
        android:layout_marginLeft="30dp"
        android:id="@+id/tv_fog_lamp"
            android:id="@+id/tv_null_engine"
        android:drawableLeft="@drawable/gray_light"
        android:drawablePadding="5dp"
        android:textColor="@android:color/black"/>
@@ -150,9 +156,9 @@
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Signal3-5"
            android:text="档位五"
        android:layout_marginLeft="30dp"
        android:id="@+id/tv_signal3_5"
            android:id="@+id/tv_gear_five"
        android:drawableLeft="@drawable/gray_light"
        android:drawablePadding="5dp"
        android:textColor="@android:color/black"/>
@@ -172,7 +178,7 @@
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="绕车一"
            android:text="倒挡"
        android:layout_marginLeft="30dp"
        android:id="@+id/tv_winding_one"
        android:drawableLeft="@drawable/gray_light"
@@ -184,6 +190,7 @@
        android:text="Signal3-6"
        android:layout_marginLeft="30dp"
        android:id="@+id/tv_signal3_6"
            android:visibility="gone"
        android:drawableLeft="@drawable/gray_light"
        android:drawablePadding="5dp"
        android:textColor="@android:color/black"/>
@@ -203,7 +210,7 @@
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="绕车二"
            android:text="钥匙START位"
        android:layout_marginLeft="30dp"
        android:id="@+id/tv_winding_two"
        android:drawableLeft="@drawable/gray_light"
@@ -214,6 +221,7 @@
        android:layout_height="wrap_content"
        android:text="Signal3-7"
        android:id="@+id/tv_signal3_7"
            android:visibility="gone"
        android:layout_marginLeft="30dp"
        android:drawableLeft="@drawable/gray_light"
        android:drawablePadding="5dp"
@@ -244,6 +252,7 @@
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Signal3-8"
            android:visibility="gone"
        android:layout_marginLeft="30dp"
        android:id="@+id/tv_signal3_8"
        android:drawableLeft="@drawable/gray_light"
@@ -252,3 +261,5 @@
</TableRow>
</TableLayout>
</layout>
app/src/main/res/layout/toolbar.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<layout>
<com.google.android.material.appbar.AppBarLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
@@ -16,3 +16,4 @@
        app:popupTheme="@style/AppTheme.NoActionBar.PopupOverlay"
        app:titleTextAppearance="@style/Toolbar_TextAppearance_White"/>
</com.google.android.material.appbar.AppBarLayout>
</layout>
im_lib/src/main/java/com/anyun/im_lib/util/ByteUtil.java
@@ -268,4 +268,18 @@
        Log.i(TAG, "getShort: "+s);
        return s ;
    }
    /**
     * 判断1一个int变量 某位bit的值
     *
     * @param num
     * @param pos =0  是第一为  1.。 2.。
     * @return
     */
    public static int getBitStatus(int num,int pos){
        if ((num&(1<<pos))!=0){
            return 1;
        }else
            return 0;
    }
}