[change]
1.心跳刷新时机更改成接收到任意数据时刷新 2.拆分工控机收发线程和业务处理线程 3.优化拆包解析PB 4.心跳刷新机制更改,使用telematic发送时间做校验,加入可配置超时时间方法以及是否启用超时检测方法
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
package com.zhidao.adas.client.bean;
|
||||
|
||||
import com.zhidao.support.adas.high.common.DigitalTrans;
|
||||
import com.zhidao.support.adas.high.common.ByteUtil;
|
||||
import com.zhidao.support.adas.high.common.ProtocolStatus;
|
||||
|
||||
public class ErrorData extends BaseInfo {
|
||||
@@ -15,6 +15,6 @@ public class ErrorData extends BaseInfo {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return status + "\n原始数据:" + DigitalTrans.byte2HexStr(bytes);
|
||||
return status + "\n原始数据:" + ByteUtil.byteArrToHex(bytes);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,15 +78,19 @@ import com.zhidao.support.adas.high.common.Constants.IPC_CONNECTION_STATUS;
|
||||
import com.zhidao.support.adas.high.common.CupidLogUtils;
|
||||
import com.zhidao.support.adas.high.common.ProtocolStatus;
|
||||
import com.zhidao.support.adas.high.common.ReceiveTimeoutManager;
|
||||
import com.zhidao.support.adas.high.protocol.RawData;
|
||||
|
||||
import java.net.Inet4Address;
|
||||
import java.net.InetAddress;
|
||||
import java.net.NetworkInterface;
|
||||
import java.net.SocketException;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import chassis.VehicleStateOuterClass;
|
||||
import io.netty.channel.Channel;
|
||||
@@ -249,7 +253,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
||||
connect.setVisibility(View.GONE);
|
||||
disconnect.setVisibility(View.GONE);
|
||||
cb_timeout.setVisibility(View.GONE);
|
||||
ReceiveTimeoutManager.getInstance().setEnable(false, AdasManager.getInstance().getIpcConnectionStatus());
|
||||
AdasManager.getInstance().setEnableTimeoutDetection(false);
|
||||
}
|
||||
role.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
@@ -343,19 +347,46 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
||||
}
|
||||
});
|
||||
boolean isEnable = Constants.getTimeoutEnable(this);
|
||||
ReceiveTimeoutManager.getInstance().setEnable(isEnable, AdasManager.getInstance().getIpcConnectionStatus());
|
||||
AdasManager.getInstance().setEnableTimeoutDetection(isEnable);
|
||||
cb_timeout.setChecked(ReceiveTimeoutManager.getInstance().isEnable());
|
||||
cb_timeout.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
Constants.setTimeoutEnable(MainActivity.this, isChecked);
|
||||
ReceiveTimeoutManager.getInstance().setEnable(isChecked, AdasManager.getInstance().getIpcConnectionStatus());
|
||||
AdasManager.getInstance().setEnableTimeoutDetection(isChecked);
|
||||
}
|
||||
});
|
||||
cb_timeout.setOnLongClickListener(new View.OnLongClickListener() {
|
||||
@Override
|
||||
public boolean onLongClick(View v) {
|
||||
showToastCenter("由于没有心跳机制,如果服务器端断网或其他非正常断开,客户端无法感知,所以需要进行数据接收超时检测", Toast.LENGTH_LONG);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
|
||||
builder.setTitle("超时时间配置");
|
||||
View view = getLayoutInflater().inflate(R.layout.dialog_timeout, null);
|
||||
final EditText et = view.findViewById(R.id.et);
|
||||
String timeout = String.valueOf(AdasManager.getInstance().getTimeoutDetectionTime());
|
||||
et.setText(timeout);
|
||||
et.setSelection(timeout.length());
|
||||
final TextView hint = view.findViewById(R.id.text_hint);
|
||||
hint.setText("由于没有心跳机制,如果服务器端断网或其他非正常断开,客户端无法感知,所以需要进行数据接收超时检测");
|
||||
builder.setView(view);//
|
||||
builder.setCancelable(false);//
|
||||
builder.setPositiveButton("设置", new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
Editable editable = et.getText();
|
||||
if (TextUtils.isEmpty(editable)) {
|
||||
// 条件不成立不能关闭 AlertDialog 窗口
|
||||
Toast.makeText(MainActivity.this, "请输入超时时间", Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
String temp = et.getText().toString().trim();
|
||||
long t = Long.parseLong(temp);
|
||||
AdasManager.getInstance().setTimeoutDetectionTime(t);
|
||||
}
|
||||
});
|
||||
//设置反面按钮,并做事件处理
|
||||
builder.setNegativeButton("取消", null);
|
||||
builder.show();//显示Dialog对话框
|
||||
return true;
|
||||
}
|
||||
});
|
||||
@@ -585,7 +616,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
||||
}
|
||||
break;
|
||||
case Constants.TITLE.RECEIVE_TRACKED_OBJECTS:
|
||||
hintTrackedObjects(false);
|
||||
// hintTrackedObjects(false);
|
||||
if (viewFragment == null)
|
||||
viewFragment = new InfoFragment(data);
|
||||
if (!viewFragment.isVisible()) {
|
||||
@@ -675,7 +706,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
||||
}
|
||||
break;
|
||||
case Constants.TITLE.RECEIVE_PERCEPTION_OBSTACLES:
|
||||
hintTrackedObjects(true);
|
||||
// hintTrackedObjects(true);
|
||||
if (perceptionObstaclesFragment == null)
|
||||
perceptionObstaclesFragment = new InfoFragment(data);
|
||||
if (!perceptionObstaclesFragment.isVisible()) {
|
||||
@@ -783,6 +814,20 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
||||
return status;
|
||||
}
|
||||
|
||||
//计算耗时
|
||||
// AtomicInteger integer = new AtomicInteger(0);
|
||||
// AtomicLong atomicLong = new AtomicLong(0);
|
||||
// AtomicLong timeLong = new AtomicLong(0);
|
||||
//
|
||||
// private void calculateTimeConsuming(RawData raw) {
|
||||
// int num = integer.incrementAndGet();
|
||||
// long time = timeLong.addAndGet(System.nanoTime() - raw.receiveTime);
|
||||
// long size = atomicLong.addAndGet(raw.originalData.size());
|
||||
// if (num % 1000 == 0) {
|
||||
// double m = time / 1000000.0 / num;
|
||||
// Log.i("优化后", num + "条数据,平均解析速度=" + m + "毫秒,共接收=" + size + "字节");
|
||||
// }
|
||||
// }
|
||||
|
||||
@Override
|
||||
public void onError(ProtocolStatus status, byte[] bytes) {
|
||||
@@ -850,6 +895,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
||||
DataDistribution.getInstance().addData(base);
|
||||
// String data = PointCloudDecoder.decode(header, pointCloud);
|
||||
// Log.i("dddd", "data==" + data.length());
|
||||
// Log.i("dddd", "data==" + data);
|
||||
// LogSave.getInstance().saveLog("转换数据=" + data);
|
||||
}
|
||||
|
||||
@@ -909,7 +955,8 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
||||
|
||||
@Override
|
||||
public void onMessageResponseClient(MogoProtocolMsg msg, String sign, Channel channel) {
|
||||
AdasManager.getInstance().parseIPCData(msg.getBody());
|
||||
Log.i("ddd", "dddd" + sign);
|
||||
AdasManager.getInstance().decoderRaw(msg.getBody());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -979,7 +1026,7 @@ public class MainActivity extends BaseActivity implements OnAdasListener, OnAdas
|
||||
if (NSDNettyManager.getInstance().isServerStart()) {
|
||||
NSDNettyManager.getInstance().sendMsgToAllClients(new MogoProtocolMsg(NORMAL_DATA, bytes.length, bytes));
|
||||
} else {
|
||||
Log.d("dddd", "司机端Server未启动!");
|
||||
// Log.d("dddd", "司机端Server未启动!");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
31
app_ipc_monitoring/src/main/res/layout/dialog_timeout.xml
Normal file
31
app_ipc_monitoring/src/main/res/layout/dialog_timeout.xml
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/et"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:digits="0123456789"
|
||||
android:gravity="center"
|
||||
android:hint="毫秒值(>=1000)"
|
||||
android:imeOptions="flagNoExtractUi"
|
||||
android:inputType="number"
|
||||
android:maxLength="10"
|
||||
android:maxLines="1"
|
||||
android:minWidth="100dp"
|
||||
android:textColor="#000"
|
||||
android:textSize="16sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_hint"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="5dp"
|
||||
android:textColor="#000"
|
||||
android:textSize="16sp" />
|
||||
</LinearLayout>
|
||||
Reference in New Issue
Block a user