diff --git a/app/build.gradle b/app/build.gradle
index 0d78ab1..84ef72d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,8 +10,8 @@ android {
applicationId "com.example.xiebiaoqian"
minSdkVersion 22
targetSdkVersion 29
- versionCode 1
- versionName "1.0"
+ versionCode 4
+ versionName "1.3"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
index e64a71f..5d3b9f6 100644
--- a/app/release/output-metadata.json
+++ b/app/release/output-metadata.json
@@ -10,8 +10,8 @@
{
"type": "SINGLE",
"filters": [],
- "versionCode": 1,
- "versionName": "1.0",
+ "versionCode": 4,
+ "versionName": "1.3",
"outputFile": "app-release.apk"
}
]
diff --git a/app/release/昊华越南-科陆7202kPDA写标签程序v2025111801.apk b/app/release/昊华越南-科陆7202kPDA写标签程序v2025111801.apk
deleted file mode 100644
index a66cf4a..0000000
Binary files a/app/release/昊华越南-科陆7202kPDA写标签程序v2025111801.apk and /dev/null differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 6669b8d..dc77b6d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,10 +1,12 @@
+
+
-
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/litepal.xml b/app/src/main/assets/litepal.xml
index dc8a4b4..72b99cf 100644
--- a/app/src/main/assets/litepal.xml
+++ b/app/src/main/assets/litepal.xml
@@ -1,7 +1,7 @@
-
+
diff --git a/app/src/main/java/com/example/xiebiaoqian/MainActivity.java b/app/src/main/java/com/example/xiebiaoqian/MainActivity.java
index b87a18c..3ad347f 100644
--- a/app/src/main/java/com/example/xiebiaoqian/MainActivity.java
+++ b/app/src/main/java/com/example/xiebiaoqian/MainActivity.java
@@ -171,6 +171,7 @@ public class MainActivity extends AppCompatActivity implements IAsynchronousMess
epcASCII = asciiData.toUpperCase();
Log.e("TAG", "写入的数据为:" + asciiData + ",长度为" + asciiData.length());
int writeResult = UHFReader._Tag6C.WriteEPC_MatchTID(1, asciiData, targetTid, 0);
+ sanEpcCode.setText(null);
Toast.makeText(this, writeResult == 0 ? "写入成功,点击下方扫描进行验证" : "写入失败", Toast.LENGTH_SHORT).show();
break;
case R.id.button_san_epc:
@@ -190,11 +191,12 @@ public class MainActivity extends AppCompatActivity implements IAsynchronousMess
writeInfo.setText(null);
break;
case R.id.button_info_seva:
- if (targetTid.isEmpty() || epc.isEmpty() || epcASCII.isEmpty()) return;
+ if (targetTid==null||targetTid.isEmpty() ) return;
WriteInfo writeInfo = new WriteInfo();
writeInfo.setTid(targetTid);
writeInfo.setEpc(epc);
writeInfo.setEpcASCII(epcASCII);
+ writeInfo.setReadEpc(sanEpcCode.getText().toString());
writeInfo.setDateTime(sdf.format(new Date()));
writeInfo.save();
Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();
@@ -230,7 +232,7 @@ public class MainActivity extends AppCompatActivity implements IAsynchronousMess
super.onResume();
UHFReader._Config.OpenConnect(false, this);
- UHFReader._Config.SetANTPowerParam(2, 24);
+ UHFReader._Config.SetANTPowerParam(2, 10);
}
//关闭驱动
diff --git a/app/src/main/java/com/example/xiebiaoqian/MainActivity2.java b/app/src/main/java/com/example/xiebiaoqian/MainActivity2.java
new file mode 100644
index 0000000..6811a50
--- /dev/null
+++ b/app/src/main/java/com/example/xiebiaoqian/MainActivity2.java
@@ -0,0 +1,136 @@
+package com.example.xiebiaoqian;
+
+import android.annotation.SuppressLint;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.example.xiebiaoqian.base.BaseActivity;
+import com.example.xiebiaoqian.utils.ASCIIUtil;
+import com.pda.rfid.EPCModel;
+import com.pda.rfid.IAsynchronousMessage;
+import com.pda.rfid.uhf.UHFReader;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+
+public class MainActivity2 extends BaseActivity implements IAsynchronousMessage{
+
+ @BindView(R.id.san_redly_tag)
+ TextView sanRedlyTag;
+ @BindView(R.id.editTextNumber)
+ EditText editTextNumber;
+ @BindView(R.id.san_epc_code)
+ TextView sanEpcCode;
+ private long exitTime;//退出记时
+ private boolean readType;
+ private String targetTid = null;
+ @SuppressLint("HandlerLeak")
+ private Handler handler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+ playSound();
+ if (readType) {//扫描到要写入的标签
+ EPCModel epcModel = (EPCModel) msg.obj;
+ targetTid = epcModel._TID;
+ sanRedlyTag.setText(targetTid);
+ Log.e("TAG", "TID读取成功" + targetTid);
+ } else {
+ EPCModel epcModel = (EPCModel) msg.obj;
+ String newCode = ASCIIUtil.hex2Str(epcModel._EPC);
+ Log.e("TAG", "EPC读取成功" + epcModel._EPC);
+ sanEpcCode.setText(newCode);
+ }
+
+
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main2);
+ ButterKnife.bind(this);
+ }
+
+ @OnClick({R.id.button_san_tag, R.id.button_epc_write, R.id.button_epc_san, R.id.button_clera_view})
+ public void onClick(View view) {
+ switch (view.getId()) {
+ case R.id.button_san_tag:
+ readType = true;
+ UHFReader._Tag6C.GetEPC_TID(1, 1);
+ break;
+ case R.id.button_epc_write:
+ String tag = editTextNumber.getText().toString();
+ if (tag.isEmpty()) return;
+ if (tag.length() != 4) {
+ Toast.makeText(this, "输入长度限制位4位", Toast.LENGTH_SHORT).show();
+ }
+ String asciiData = "2020202020202054" + ASCIIUtil.str2Hex(tag);
+ int writeResult = UHFReader._Tag6C.WriteEPC_MatchTID(1, asciiData, targetTid, 0);
+ Toast.makeText(this, writeResult == 0 ? "写入成功,点击下方扫描进行验证" : "写入失败", Toast.LENGTH_SHORT).show();
+ break;
+ case R.id.button_clera_view:
+ editTextNumber.setText(null);
+ sanRedlyTag.setText(null);
+ sanEpcCode.setText(null);
+ break;
+ case R.id.button_epc_san:
+ readType = false;
+ UHFReader._Tag6C.GetEPC_TID(1, 1);
+ break;
+ }
+ }
+
+ //初始化驱动
+ @Override
+ protected void onResume() {
+ super.onResume();
+ UHFReader._Config.OpenConnect(false, this);
+ UHFReader._Config.SetANTPowerParam(2, 10);
+ }
+
+ //关闭驱动
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ UHFReader._Config.Stop();
+ UHFReader._Config.CloseConnect();
+ handler = null;
+ }
+
+ //读取到标签
+ @Override
+ public void OutPutEPC(EPCModel epcModel) {
+ UHFReader._Config.Stop();
+ Message msg = new Message();
+ msg.obj = epcModel;
+ handler.sendMessage(msg);
+ }
+
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == 4) {
+
+ if ((System.currentTimeMillis() - exitTime) > 2000) {
+ //弹出提示,可以有多种方式
+ Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
+ exitTime = System.currentTimeMillis();
+ return true;
+ } else {
+ finish();
+ }
+ }
+ return super.onKeyDown(keyCode, event);
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/xiebiaoqian/base/BaseActivity.java b/app/src/main/java/com/example/xiebiaoqian/base/BaseActivity.java
new file mode 100644
index 0000000..8ee5724
--- /dev/null
+++ b/app/src/main/java/com/example/xiebiaoqian/base/BaseActivity.java
@@ -0,0 +1,44 @@
+package com.example.xiebiaoqian.base;
+
+import android.content.res.AssetFileDescriptor;
+import android.media.MediaPlayer;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import com.example.xiebiaoqian.R;
+
+public class BaseActivity extends AppCompatActivity {
+
+
+ //播放声音
+ public void playSound() {
+ // 每次播放创建新的MediaPlayer
+ MediaPlayer mediaPlayer = new MediaPlayer();
+ try {
+ // 设置数据源(示例:raw目录下的sound.mp3)
+ AssetFileDescriptor afd = getResources().openRawResourceFd(R.raw.msg);
+ mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
+ afd.close();
+
+ // 准备(同步准备适合短音效,异步准备需监听OnPreparedListener)
+ mediaPlayer.prepare();
+
+ // 设置播放完成监听,释放资源
+ mediaPlayer.setOnCompletionListener(mp -> {
+ mp.release(); // 播放完成后释放
+ });
+
+ // 设置错误监听,避免异常崩溃
+ mediaPlayer.setOnErrorListener((mp, what, extra) -> {
+ mp.release();
+ return true;
+ });
+
+ // 开始播放
+ mediaPlayer.start();
+ } catch (Exception e) {
+ e.printStackTrace();
+ mediaPlayer.release(); // 发生异常时释放
+ }
+ }
+}
diff --git a/app/src/main/java/com/example/xiebiaoqian/entity/WriteInfo.java b/app/src/main/java/com/example/xiebiaoqian/entity/WriteInfo.java
index 94f075f..0d26d8c 100644
--- a/app/src/main/java/com/example/xiebiaoqian/entity/WriteInfo.java
+++ b/app/src/main/java/com/example/xiebiaoqian/entity/WriteInfo.java
@@ -7,8 +7,17 @@ public class WriteInfo extends LitePalSupport {
private String tid;
private String epc;
private String epcASCII;
+ private String readEpc;
private String dateTime;
+ public String getReadEpc() {
+ return readEpc;
+ }
+
+ public void setReadEpc(String readEpc) {
+ this.readEpc = readEpc;
+ }
+
public int getId() {
return id;
}
diff --git a/app/src/main/java/com/example/xiebiaoqian/utils/JxlExporter.java b/app/src/main/java/com/example/xiebiaoqian/utils/JxlExporter.java
index 7112b67..7da271b 100644
--- a/app/src/main/java/com/example/xiebiaoqian/utils/JxlExporter.java
+++ b/app/src/main/java/com/example/xiebiaoqian/utils/JxlExporter.java
@@ -54,10 +54,11 @@ public class JxlExporter {
sheet.setColumnView(2, 15);
// 第3列(EPC_ASCII):宽度15
sheet.setColumnView(3, 20);
- // 第4列(采集时间):宽度20
sheet.setColumnView(4, 20);
+ // 第4列(采集时间):宽度20
+ sheet.setColumnView(5, 20);
// 4. 写入表头(第一行)
- String[] headers = {"序号", "TID", "EPC", "ASCII", "保存时间"};
+ String[] headers = {"序号", "TID", "写入EPC", "ASCII","读取EPC", "保存时间"};
for (int i = 0; i < headers.length; i++) {
// Label(列索引, 行索引, 内容)
Label headerLabel = new Label(i, 0, headers[i]);
@@ -77,8 +78,9 @@ public class JxlExporter {
sheet.addCell(new Label(2, rowIndex, data.getEpc() == null ? "" : data.getEpc()));
// EPC_ASCII
sheet.addCell(new Label(3, rowIndex, data.getEpcASCII() == null ? "" : data.getEpcASCII()));
+ sheet.addCell(new Label(4, rowIndex, data.getReadEpc() == null ? "" : data.getReadEpc()));
// 采集时间
- sheet.addCell(new Label(4, rowIndex, data.getDateTime() == null ? "" : data.getDateTime()));
+ sheet.addCell(new Label(5, rowIndex, data.getDateTime() == null ? "" : data.getDateTime()));
}
// 6. 写入文件并关闭工作簿
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 2e884ea..80c073d 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -30,30 +30,30 @@
+
+
+
+ android:layout_height="match_parent"
+ android:background="@color/white"
+ android:hint="读取目标标签"
+ android:singleLine="true" />
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index 4e68983..dfe6dca 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -12,24 +12,23 @@
- 全钢胎侧台车-QTC
- 全钢胎体台车-QTT
- 全钢垫胶台车-QDJ
- - 全钢裸圈槽车-QGS
+ - 全钢裸圈槽车-QGSQ
- 全钢胎圈台车-QTQ
- - 全钢带束层台车-QDS
- - 全钢子口包布-QZK
- - 全钢钢丝冠带工字轮-QGS
+ - 全钢带束层台车-QDSC
+ - 全钢子口包布-QZKBB
+ - 全钢钢丝冠带工字轮-QGSGD
- 半钢胎面台车-BTM
- 半钢胎侧台车-BTC
- 半钢内衬台车-BNC
- - 半钢带束层台车-BDS
+ - 半钢带束层台车-BDSC
- 半钢胎体台车-BTT
- - 半钢钢丝圈挂车-BGS
- - 半钢钢丝圈挂车-BGS
+ - 半钢钢丝圈挂车-BGSQX
+ - 半钢钢丝圈挂车-BGSQD
- 半钢胎圈挂车-BTQ
- - 半钢Vim胎圈小车-BTQ
- - 半钢子口包布-预留
+ - 半钢Vim胎圈小车-BTQC