From 2f48e3f31d7c96ed11226ee7365c22b4337bd2ef Mon Sep 17 00:00:00 2001 From: wanghao Date: Mon, 13 Oct 2025 16:34:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=20=E9=A3=8E=E7=A5=9E?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/androidTestResultsUserPreferences.xml | 49 ++++++ app/build.gradle | 4 +- .../writeepc/ShuangqianActivity2Test.java | 140 ++++++++++++++++++ .../example/writeepc/SettingsActivity.java | 2 +- .../example/writeepc/ShuangqianActivity.java | 130 ++++++++-------- .../example/writeepc/ShuangqianActivity2.java | 99 +++++++------ app/src/main/res/layout/activity_home.xml | 13 +- .../main/res/layout/activity_shuangqian.xml | 38 ++--- app/src/main/res/layout/settings_activity.xml | 20 +-- 9 files changed, 350 insertions(+), 145 deletions(-) create mode 100644 .idea/androidTestResultsUserPreferences.xml create mode 100644 app/src/androidTest/java/com/example/writeepc/ShuangqianActivity2Test.java diff --git a/.idea/androidTestResultsUserPreferences.xml b/.idea/androidTestResultsUserPreferences.xml new file mode 100644 index 0000000..c0a0791 --- /dev/null +++ b/.idea/androidTestResultsUserPreferences.xml @@ -0,0 +1,49 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 86a745c..af0d257 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,8 +31,8 @@ android { dataBinding true } compileOptions { - sourceCompatibility JavaVersion.VERSION_11 - targetCompatibility JavaVersion.VERSION_11 + sourceCompatibility JavaVersion.VERSION_15 + targetCompatibility JavaVersion.VERSION_15 } } diff --git a/app/src/androidTest/java/com/example/writeepc/ShuangqianActivity2Test.java b/app/src/androidTest/java/com/example/writeepc/ShuangqianActivity2Test.java new file mode 100644 index 0000000..961394b --- /dev/null +++ b/app/src/androidTest/java/com/example/writeepc/ShuangqianActivity2Test.java @@ -0,0 +1,140 @@ +package com.example.writeepc; + +import android.util.Log; + +import com.example.writeepc.been.MESInfo; + +import junit.framework.TestCase; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class ShuangqianActivity2Test extends TestCase { + + + public void test() { + String result = """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + <品牌>123 + <规格>1234 + <花纹类型>1235 + <胎号>1236 + 1236 +
+
+
+
+
+
+
+ """; + + String regex = ""; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(result); + if (!matcher.find()) { + System.out.println("未找到匹配的内容"); + return; + } + String matched = matcher.group();// 匹配内容 + int beginIndex = matcher.start() + matched.length(); + int endIndex = result.indexOf("
"); + Log.e("TAG", "test1:" + beginIndex); + Log.e("TAG", "test2:" + endIndex); + if (beginIndex >= endIndex) { + System.out.println("未找到匹配的内容"); + return; + } + result = result.substring(beginIndex, endIndex); + System.out.println("截取内容:" + result); + // <品牌>风神<规格>10.00R20<花纹类型>AGC08ZB2509013993625 + + + String[] str=new String[]{"品牌","规格","花纹类型","胎号","DOT"}; + for (String s : str) { + String tag = "<" + s + ">"; + System.out.println("-"+result.substring(result.indexOf(tag) + tag.length(), result.indexOf(""))+"-"); + } + + + + + /* InputStream inputStream = new StringBufferInputStream(result); + XmlPullParser parser = Xml.newPullParser(); + parser.setInput(inputStream, "utf-8"); // 设置输入流和编码 + int eventType = parser.getEventType(); + boolean isInTable = false; // 是否进入节点 + while (eventType != XmlPullParser.END_DOCUMENT) { + String tagName = parser.getName(); + System.out.println("tab name :"+tagName); + switch (eventType) { + case XmlPullParser.START_TAG: + // 找到
节点,初始化数据对象 + if ("Table".equals(tagName)) { + isInTable = true; + + } else if (isInTable) { + switch (tagName) { + case "品牌": + String trim = parser.nextText().trim(); + System.out.println(trim); + break; + case "规格": + String trim2 = parser.nextText().trim(); + System.out.println(trim2); + break; + case "花纹类型": + String trim3 = parser.nextText().trim(); + System.out.println(trim3); + break; + case "胎号": + String trim4 = parser.nextText().trim(); + System.out.println(trim4); + break; + case "DOT": + String trim5 = parser.nextText().trim(); + System.out.println(trim5); + break; + } + } + break; + + case XmlPullParser.END_TAG: + // 退出
节点 + if ("Table".equals(tagName)) { + isInTable = false; + } + break; + } + eventType = parser.next(); // 解析下一个事件 + }*/ + + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/writeepc/SettingsActivity.java b/app/src/main/java/com/example/writeepc/SettingsActivity.java index bb1e73a..6ae707d 100644 --- a/app/src/main/java/com/example/writeepc/SettingsActivity.java +++ b/app/src/main/java/com/example/writeepc/SettingsActivity.java @@ -32,7 +32,7 @@ public class SettingsActivity extends AppCompatActivity { List powerList = Arrays.asList(getResources().getStringArray(R.array.power)); powerBinding.setSelection(powerList.indexOf(bindingPower)); powerTrace.setSelection(powerList.indexOf(tracePower)); - settingIp.setText(SharedPreferencesUtils.getstring("ip", null)); + settingIp.setText(SharedPreferencesUtils.getstring("ip", "http://10.72.36.3:8090/FSRFID.asmx")); } public void saveInfo(View view) { diff --git a/app/src/main/java/com/example/writeepc/ShuangqianActivity.java b/app/src/main/java/com/example/writeepc/ShuangqianActivity.java index c4d7345..c88e241 100644 --- a/app/src/main/java/com/example/writeepc/ShuangqianActivity.java +++ b/app/src/main/java/com/example/writeepc/ShuangqianActivity.java @@ -2,6 +2,7 @@ package com.example.writeepc; import android.content.Intent; import android.content.IntentFilter; +import android.os.Build; import android.os.Bundle; import android.view.View; @@ -20,6 +21,8 @@ import com.lzy.okgo.model.Response; import com.lzy.okgo.request.base.Request; import com.uhf.api.cls.Reader; +import java.time.Year; + public class ShuangqianActivity extends BaseActivity implements MyScannerCall { private ActivityShuangqianBinding binding; @@ -29,19 +32,15 @@ public class ShuangqianActivity extends BaseActivity implements MyScannerCall { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - binding = DataBindingUtil.setContentView(this, R.layout.activity_shuangqian); - String ACTION_SCAN_INIT = "com.rfid.SCAN_INIT"; Intent intent = new Intent(); intent.setAction(ACTION_SCAN_INIT); sendBroadcast(intent); - - initUHFRManager1(); initDialog(); int powerBinding = Integer.parseInt(SharedPreferencesUtils.getstring("powerBinding", "22")); - Reader.READER_ERR readerErr = uhfrManager.setPower(powerBinding, powerBinding); + // Reader.READER_ERR readerErr = uhfrManager.setPower(powerBinding, powerBinding); myReceiver = new MyScannerReceiver(this); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("com.rfid.SCAN"); @@ -50,6 +49,10 @@ public class ShuangqianActivity extends BaseActivity implements MyScannerCall { binding.setTitle(type ? "MES轮胎绑定" : "解绑"); binding.setType(type); // uriLastStr = type ? "barcodeAndRFIDBinding" : "unBinding"; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + binding.socketYear.setText(String.valueOf(Year.now().getValue())); + } } // 读取 @@ -73,50 +76,53 @@ public class ShuangqianActivity extends BaseActivity implements MyScannerCall { public void submit(View view) { String epc = binding.socketEpc.getText().toString(); String code = binding.socketBarcode.getText().toString(); - if (epc.isEmpty() || code.isEmpty()) return; - haohuaSubmit(epc, code); - // callWebService(buildSoapRequest(epc, code));//双钱 + String year = binding.socketYear.getText().toString(); + if (epc.isEmpty() || code.isEmpty() || year.isEmpty()) return; + // haohuaSubmit(epc, code); + callWebService(buildSoapRequest(epc, code, year));// 双钱 } // 解绑 public void unBindingSubmit(View view) { String epc = binding.socketEpc.getText().toString(); String code = binding.socketBarcode.getText().toString(); - haohuaSubmit(epc, code); } private void haohuaSubmit(String epc, String code) { OkGo.post("http://192.168.26.26:5050/UMInterface/RFID/" + uriLastStr) .params("rfid", epc).params("barCode", code).execute(new MyRecultCall(dialog, this) { - @Override - public void onSuccess(Response response) { - super.onSuccess(response); - MyResult body = response.body(); - try { - if (body.getCode() == 200) { - tipsDialog.setTip(true, body.getInfo()); - tipsDialog.show(); - binding.socketBarcode.setText(null); - binding.socketEpc.setText(null); - } else { - tipsDialog.setTip(false, body.getInfo()); - tipsDialog.show(); - } - } catch (Exception e) { - tipsDialog.setTip(false, "接口返回信息异常"); - tipsDialog.show(); - } - + @Override + public void onSuccess(Response response) { + super.onSuccess(response); + MyResult body = response.body(); + try { + if (body.getCode() == 200) { + tipsDialog.setTip(true, body.getInfo()); + tipsDialog.show(); + binding.socketBarcode.setText(null); + binding.socketEpc.setText(null); + } else { + tipsDialog.setTip(false, body.getInfo()); + tipsDialog.show(); } - }); + } catch (Exception e) { + tipsDialog.setTip(false, "接口返回信息异常"); + tipsDialog.show(); + } + + } + }); } private void callWebService(String soapRequest) { // 发送 POST 请求 - OkGo.post("http://10.135.55.206:99/WebService.asmx").headers("Content-Type", "text/xml; charset=utf-8").upString(soapRequest, mediaType).execute(new StringCallback() { + OkGo.post(SharedPreferencesUtils.getstring("ip", "http://10.72.36.3:8090/FSRFID.asmx")) + .headers("Content-Type", "text/xml; charset=utf-8") + .upString(soapRequest, mediaType) + .execute(new StringCallback() { @Override public void onStart(Request request) { super.onStart(request); @@ -128,40 +134,20 @@ public class ShuangqianActivity extends BaseActivity implements MyScannerCall { // 处理响应结果 String result = response.body(); try { - String str = ""; - int faultstringIndex = result.indexOf(str); - if (faultstringIndex > -1) { - String faultstring = - result.substring(faultstringIndex + str.length(), result.indexOf("")); - tipsDialog.setTip(false, faultstring); - tipsDialog.show(); - return; - } - int codeIndex = result.indexOf(""); - if (codeIndex > -1) { - String resultCode = - result.substring(codeIndex + 6, result.indexOf("")); - String resultMsg = - result.substring(result.indexOf("") + 5, result.indexOf("")); - if (resultCode.equals("200")) { - tipsDialog.setTip(true, resultMsg); - tipsDialog.show(); - binding.socketBarcode.setText(null); - binding.socketEpc.setText(null); - } else { - tipsDialog.setTip(false, resultMsg); - tipsDialog.show(); - } - // clearView(null); - } + String str = ""; + String subStringResult = + result.substring(result.indexOf(str) + str.length(), result.indexOf("")).trim(); + + boolean equals = subStringResult.equals("OK"); + tipsDialog.setTip(equals, subStringResult); + tipsDialog.show(); } catch (Exception e) { tipsDialog.setTip(false, "接口返回信息异常"); tipsDialog.show(); } } - @Override public void onFinish() { super.onFinish(); @@ -171,20 +157,26 @@ public class ShuangqianActivity extends BaseActivity implements MyScannerCall { } // 创建提交信息 - private String buildSoapRequest(String epcid, String barcode) { - String soapRequest = "" + - "" + - "" + - "" + - "" + epcid + "" + - "" + barcode + "" + - "" + - "" + - ""; - return soapRequest; + private String buildSoapRequest(String epcid, String barcode, String year) { + return String.format(""" + + + + RFID-MES + Yh#14ulh!6hk9ue4ml + + + + + %s + %s + %s + + + + """, epcid, barcode, year); } - @Override public void getScannerData(String data) { binding.socketBarcode.setText(data); diff --git a/app/src/main/java/com/example/writeepc/ShuangqianActivity2.java b/app/src/main/java/com/example/writeepc/ShuangqianActivity2.java index e15fc96..5aa63f0 100644 --- a/app/src/main/java/com/example/writeepc/ShuangqianActivity2.java +++ b/app/src/main/java/com/example/writeepc/ShuangqianActivity2.java @@ -37,6 +37,8 @@ import java.io.IOException; import java.io.StringReader; import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class ShuangqianActivity2 extends BaseActivity { private ActivityShuangqian2Binding binding; @@ -46,6 +48,7 @@ public class ShuangqianActivity2 extends BaseActivity { private Handler handler = new Handler(); private Runnable runnable; private MyKeyReceiver keyReceiver; + private List mesInfos; @Override protected void onCreate(Bundle savedInstanceState) { @@ -59,7 +62,10 @@ public class ShuangqianActivity2 extends BaseActivity { Log.e("TAG", "追溯设置功率" + powerTrace1 + ":" + readerErr.name()); initDialog(); adapter = new MyMesInfoAdapter(this); + mesInfos = new ArrayList<>(); + adapter.setList(mesInfos); binding.setAdapter(adapter); + traceSanButton = binding.traceSanButton; runnable = new Runnable() { @Override @@ -81,7 +87,7 @@ public class ShuangqianActivity2 extends BaseActivity { Intent toKillService = new Intent(); toKillService.setAction(ACTION_CLOSE_SCAN); sendBroadcast(toKillService); - + binding.dataEpc.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { @@ -95,7 +101,7 @@ public class ShuangqianActivity2 extends BaseActivity { @Override public void afterTextChanged(Editable s) { - if (s.length()==24){ + if (s.length() == 24) { haohuaMesSelect(s.toString()); } @@ -131,7 +137,7 @@ public class ShuangqianActivity2 extends BaseActivity { if (readState) { dataReadRFID(null); - // callWebService(buildSelectRequest(result)); + callWebService(buildSelectRequest(result)); // haohuaMesSelect(result); @@ -185,7 +191,7 @@ public class ShuangqianActivity2 extends BaseActivity { private void callWebService(String soapRequest) { // 发送 POST 请求 - OkGo.post("http://10.135.55.206:99/WebService.asmx") + OkGo.post(SharedPreferencesUtils.getstring("ip", "http://10.72.36.3:8090/FSRFID.asmx")) .headers("Content-Type", "text/xml; charset=utf-8") .upString(soapRequest, mediaType) .execute(new StringCallback() { @@ -198,39 +204,42 @@ public class ShuangqianActivity2 extends BaseActivity { @Override public void onSuccess(Response response) { // 处理响应结果 - String result = response.body(); try { - String str = ""; - int faultstringIndex = result.indexOf(str); - if (faultstringIndex > -1) { - String faultstring = - result.substring(faultstringIndex + str.length(), result.indexOf("")); - tipsDialog.setTip(false, faultstring); + mesInfos.clear(); + String result = response.body(); + String regex = "
"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(result); + if (!matcher.find()) { + tipsDialog.setTip(false, "未找到匹配的内容"); tipsDialog.show(); return; } - int codeIndex = result.indexOf(""); - if (codeIndex > -1) { - String resultCode = - result.substring(codeIndex + 6, result.indexOf("")); - if (resultCode.equals("200")) { - String resultMsg = - result.substring(result.indexOf("") + 8, result.indexOf("")); - - jiexi(resultMsg); - return; - } - String resultMsg = - result.substring(result.indexOf("") + 5, result.indexOf("")); - tipsDialog.setTip(false, resultMsg); + String matched = matcher.group();// 匹配内容 + int beginIndex = matcher.start() + matched.length(); + int endIndex = result.indexOf("
"); + Log.e("TAG", "test1:" + beginIndex); + Log.e("TAG", "test2:" + endIndex); + if (beginIndex >= endIndex) { + tipsDialog.setTip(false, "未找到匹配的内容"); tipsDialog.show(); + return; + } + String[] str = new String[]{"品牌", "规格", "花纹类型", "胎号", "DOT"}; + for (String s : str) { + String tag = "<" + s + ">"; + MESInfo mesInfo = new MESInfo(); + mesInfo.setTitle(s); + mesInfo.setInfo(result.substring(result.indexOf(tag) + tag.length(), result.indexOf(""))); + mesInfos.add(mesInfo); } } catch (Exception e) { tipsDialog.setTip(false, "接口返回信息异常"); tipsDialog.show(); } - } + adapter.notifyDataSetChanged(); + } @Override public void onFinish() { @@ -242,16 +251,22 @@ public class ShuangqianActivity2 extends BaseActivity { // 创建验证信息 private String buildSelectRequest(String epcid) { - StringBuilder soapRequest = new StringBuilder(); - soapRequest.append(""); - soapRequest.append(""); - soapRequest.append(""); - soapRequest.append(""); - soapRequest.append("").append(epcid).append(""); - soapRequest.append(""); - soapRequest.append(""); - soapRequest.append(""); - return soapRequest.toString(); + String soapRequest = String.format(""" + + + + RFID-MES + Yh#14ulh!6hk9ue4ml + + + + + %s + + + + """, epcid); + return soapRequest; } private void jiexi(String msg) { @@ -330,6 +345,12 @@ public class ShuangqianActivity2 extends BaseActivity { } } + @Override + protected void onDestroy() { + super.onDestroy(); + unregisterReceiver(keyReceiver); + } + private class MyKeyReceiver extends BroadcastReceiver { @Override @@ -340,10 +361,4 @@ public class ShuangqianActivity2 extends BaseActivity { } } } - - @Override - protected void onDestroy() { - super.onDestroy(); - unregisterReceiver(keyReceiver); - } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index ce53892..18bc7ab 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -67,7 +67,8 @@ android:drawablePadding="10dp" android:gravity="center" android:text="解绑" - android:textSize="20sp" /> + android:textSize="20sp" + android:visibility="gone" /> + + - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_shuangqian.xml b/app/src/main/res/layout/activity_shuangqian.xml index 0109619..b70ada0 100644 --- a/app/src/main/res/layout/activity_shuangqian.xml +++ b/app/src/main/res/layout/activity_shuangqian.xml @@ -58,27 +58,27 @@ - - - - - + - - - - - - + - - - - - - - - + + - + + + + + + + android:text="请求地址:" /> - +