Browse Source

/*

波特率为9600的情况下:
1.
修改第一次登录能够成功,退出登录之后再次登录一直会失败,而且点击开始检测按钮,检测数据也无法正常上报。
2.
修改登录失败问题:根本原因是BBBB包和登录命令的返回DDDD包粘包:BBBBA402C800D7010046DDDD1901040700260078C4,
导致串口适配程序解析失败。解决方法:针对这种情况打个补丁。Y
*/
master
htjcAdmin 6 months ago
parent
commit
14f71ac633
4 changed files with 40 additions and 4 deletions
  1. +1
    -0
      app/src/main/java/com/boheng/zzf/cacacaca/activity/LoginActivity.java
  2. +23
    -4
      app/src/main/java/com/boheng/zzf/cacacaca/presenter/SurfacePresenter.java
  3. +1
    -0
      app/src/main/java/com/boheng/zzf/cacacaca/utils/ToastHelper.java
  4. +15
    -0
      build.gradle

+ 1
- 0
app/src/main/java/com/boheng/zzf/cacacaca/activity/LoginActivity.java View File

@ -204,6 +204,7 @@ public class LoginActivity extends BaseActivity implements SurfaceContract.ISeri
removeHandlerWatchDog();
removeHandlerAlertDialog();
mPresenter.stopIs();
mPresenter.close();//每次login之后点击开始检测数据上报异常问题修改
new Thread(
() -> {
Looper.prepare();


+ 23
- 4
app/src/main/java/com/boheng/zzf/cacacaca/presenter/SurfacePresenter.java View File

@ -541,7 +541,13 @@ public class SurfacePresenter {
private boolean crcVerify(String rawData) {
try {
Log.v(logTag, ("crcVerify: " + rawData));
for (String str : SplitUtils.split(rawData)) {
String rawDataEx = rawData;
if(rawData.startsWith("BBBB") && rawData.contains("DDDD")) {
int index = rawData.indexOf("DDDD");
rawDataEx = rawData.substring(index);
}
Log.w(logTag, ("rawDataEx: " + rawDataEx));
for (String str : SplitUtils.split(rawDataEx)) {
if (TextUtils.isEmpty(str) || str.length() < 4) continue;
if (!CRCUtils.genCrc(str.substring(4, str.length() - 4)).equals(str.substring(str.length() - 4))) {
Log.w(logTag, ("str: " + str + " crc fail!"));
@ -572,7 +578,14 @@ public class SurfacePresenter {
}
return true;
} else {
return rawData.length() > 4 && "DDDD".equals(rawData.substring(0, 4));
Log.d(logTag, "dataVerify2, rawData: " + rawData);
String rawDataEx = rawData;
if(rawData.startsWith("BBBB") && rawData.contains("DDDD")) {
int index = rawData.indexOf("DDDD");
rawDataEx = rawData.substring(index);
}
Log.d(logTag, ("rawDataEx2: " + rawDataEx));
return rawDataEx.length() > 4 && "DDDD".equals(rawDataEx.substring(0, 4));
}
} catch (Exception e) {
return rawData.length() > 5 && "DDDD".equals(rawData.substring(0, 4));
@ -585,8 +598,14 @@ public class SurfacePresenter {
* parameters: raw message
* return value: String
*/
private String getBody(String body) {
return body;
private String getBody(String rawData) {
String rawDataEx = rawData;
if(rawData.startsWith("BBBB") && rawData.contains("DDDD")) {
int index = rawData.indexOf("DDDD");
rawDataEx = rawData.substring(index);
}
Log.d(logTag, ("rawDataEx3: " + rawDataEx));
return rawDataEx;
}
/**


+ 1
- 0
app/src/main/java/com/boheng/zzf/cacacaca/utils/ToastHelper.java View File

@ -194,6 +194,7 @@ public class ToastHelper {
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
}
dialog.setView(view);
dialog.setCanceledOnTouchOutside(false);
dialog.setCancelable(false);
ImageView ivImg = view.findViewById(R.id.iv_loading);


+ 15
- 0
build.gradle View File

@ -3,6 +3,20 @@ apply from: 'config.gradle'
buildscript {
repositories {
maven() {
url 'https://maven.aliyun.com/repository/jcenter'
}
maven(){
url 'https://maven.aliyun.com/repository/google'
}
maven {
url 'https://maven.aliyun.com/repository/public'
}
maven {
url 'https://maven.aliyun.com/repository/mapr-public'
}
google()
jcenter()
mavenCentral()
@ -11,6 +25,7 @@ buildscript {
classpath 'com.android.tools.build:gradle:3.5.3'
//
//classpath 'com.novoda:bintray-release:+'
classpath 'com.novoda:bintray-release:+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files


Loading…
Cancel
Save