From a9c1231be4e3c1c5bd5e9fc61489d55363090407 Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期一, 04 三月 2024 15:26:22 +0800
Subject: [PATCH] 齐河项目相关修改
---
app/src/main/res/layout/activity_password_card.xml | 62 ++++++++
app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java | 60 ++++++++
app/src/main/java/com/dayu/recharge/dbBean/PassWordCardBean.java | 36 +++++
app/src/main/java/com/dayu/recharge/tools/HexUtil.java | 43 +++++
app/src/main/java/com/dayu/recharge/card/PassWordCard.java | 41 +++++
app/src/main/java/com/dayu/recharge/dao/LoginPsDao.java | 2
app/src/main/java/com/dayu/recharge/dao/PowerDao.java | 2
app/src/main/java/com/dayu/recharge/card/RegionCard.java | 14 +
app/src/main/java/com/dayu/recharge/card/ManageCard.java | 27 +++
app/src/main/java/com/dayu/recharge/dao/AppDatabase.java | 5
app/src/main/java/com/dayu/recharge/dbBean/PassWordBean.java | 5
app/src/main/java/com/dayu/recharge/activity/PasswordCardActivity.java | 64 +++++++++
app/src/main/java/com/dayu/recharge/dao/PassWordCardDao.java | 31 ++++
13 files changed, 377 insertions(+), 15 deletions(-)
diff --git a/app/src/main/java/com/dayu/recharge/activity/PasswordCardActivity.java b/app/src/main/java/com/dayu/recharge/activity/PasswordCardActivity.java
new file mode 100644
index 0000000..4ae1047
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/activity/PasswordCardActivity.java
@@ -0,0 +1,64 @@
+package com.dayu.recharge.activity;
+
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+
+import com.dayu.recharge.databinding.ActivityPasswordCardBinding;
+import com.dayu.recharge.dbBean.PassWordCardBean;
+import com.dayu.recharge.dbBean.PowerBean;
+import com.dayu.recharge.utils.TipUtil;
+
+/**
+ * author: zuo
+ * Date: 2024-03-01
+ * Time: 16:21
+ * 澶囨敞锛氬瘑鐮佸崱璁剧疆鐣岄潰
+ */
+public class PasswordCardActivity extends BaseActivity {
+
+ ActivityPasswordCardBinding binding;
+
+ PassWordCardBean cardBean;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ binding = ActivityPasswordCardBinding.inflate(LayoutInflater.from(this));
+ setContentView(binding.getRoot());
+ }
+
+
+ private void initData() {
+ PassWordCardBean powerBean = baseDao.passWordCardDao().findFirst();
+ if (powerBean != null) {
+ this.cardBean = powerBean;
+ binding.villageOldNumber.setText(powerBean.getPassWord());
+ }
+ }
+
+ private void initView() {
+ binding.villageOk.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ String data = binding.villageNewNum.getText().toString();
+ if (!TextUtils.isEmpty(data)) {
+ if (data.length()==12){
+ cardBean.setPassWord(data);
+ baseDao.passWordCardDao().insert(cardBean);
+ TipUtil.show("淇濆瓨鎴愬姛");
+ initData();
+ }else {
+ TipUtil.show("璇疯緭鍏ユ纭殑12浣嶅瓧绗︾殑16杩涘埗鍗″瘑鐮�");
+ }
+
+ } else {
+ TipUtil.show("璇疯緭鍏ヨ璁剧疆鐨勫崱瀵嗙爜");
+ }
+ }
+ });
+ }
+
+
+
+}
diff --git a/app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java b/app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java
index f25ac50..f6a671a 100644
--- a/app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java
+++ b/app/src/main/java/com/dayu/recharge/card/ElectricPriceCard.java
@@ -1,8 +1,10 @@
package com.dayu.recharge.card;
+import com.dayu.recharge.tools.HexUtil;
import com.dayu.recharge.utils.MyCommon;
import java.io.Serializable;
+import java.util.List;
/**
* author: zuo
@@ -13,6 +15,64 @@
public class ElectricPriceCard implements Serializable {
public String cardType = MyCommon.ELECTRIC_PRICE;
+ public String cardData = "A0B1C289";//1-4涓嬫爣鍥哄畾鍊�
+
+ public Float electricPrice;// 鐢甸噺鍗曚环(浣�)鍗曚綅鏄厓锛�3浣嶅皬鏁扮偣
+
+
+
+
+
+
+ public byte[] toByte() {
+ ElectricPriceCard.Zero zero = new ElectricPriceCard.Zero();
+ return zero.toByte();
+ }
+
+
+
+ public static ElectricPriceCard getBean(List<byte[]> data){
+ ElectricPriceCard regionCard=new ElectricPriceCard();
+ byte[] zero=data.get(0);
+ regionCard.cardType= HexUtil.byteToHex(zero[0]);
+
+ byte[] cardDataByte = new byte[4];
+ System.arraycopy(zero, 1, cardDataByte, 0, cardDataByte.length);
+ regionCard.cardData = HexUtil.bytesToHex(cardDataByte);
+
+
+ byte[] electricPriceByte = new byte[4];
+ System.arraycopy(zero, 5, electricPriceByte, 0, electricPriceByte.length);
+ regionCard.electricPrice = HexUtil.bytesToFloat(electricPriceByte);
+
+
+ return regionCard;
+ }
+
+
+ /**
+ * 绗�1鎵囧尯0鍧� 瀛樺偍鐨勬暟鎹�
+ */
+ public class Zero extends BaseCard {
+ public byte[] toByte() {
+ byte[] data = new byte[16];
+ data[0] = HexUtil.hexToByte(cardType);
+
+ byte[] regionBytes = HexUtil.hexToByteArray(cardData);
+ if (regionBytes != null) {
+ System.arraycopy(regionBytes, 0, data, 1, regionBytes.length);
+ }
+
+ byte[] controllerCodelBytes = HexUtil.folatToByte(electricPrice);
+ if (controllerCodelBytes != null) {
+ System.arraycopy(controllerCodelBytes, 0, data, 5, controllerCodelBytes.length);
+ }
+
+ data[15] = getByteSum(data);
+ return data;
+ }
+
+ }
}
diff --git a/app/src/main/java/com/dayu/recharge/card/ManageCard.java b/app/src/main/java/com/dayu/recharge/card/ManageCard.java
index 4bea602..241150a 100644
--- a/app/src/main/java/com/dayu/recharge/card/ManageCard.java
+++ b/app/src/main/java/com/dayu/recharge/card/ManageCard.java
@@ -13,7 +13,20 @@
*/
public class ManageCard implements Serializable {
public String cardType = MyCommon.MANAGE_CRAD;//鍗$被鍨�
- public String cardData = "3668F7A30119";//鏍囪瘑鐮�
+ public String cardData = "A0B1C289";//鏍囪瘑鐮�
+
+
+ /**
+ * M1鍗$殑0鎵囧尯0鍧楅�氬父鐢ㄤ簬瀛樺偍涓�浜涘熀鏈殑鍗$墖淇℃伅
+ * 绗�0瀛楄妭锛氬崱鐗囩被鍨嬶紙M1鍗′负0x08锛�
+ * 绗�1瀛楄妭锛氬崱鐗囧湴鍧�锛堥�氬父涓�0x00锛�
+ * 绗�2-5瀛楄妭锛氬崱鐗囧簭鍒楀彿锛�4瀛楄妭锛�
+ * 绗�6-8瀛楄妭锛氬崱鐗囧埗閫犲晢浠g爜锛�3瀛楄妭锛�
+ * 绗�9瀛楄妭锛氬崱鐗囩増鏈�
+ * 绗�10-15瀛楄妭锛氶鐣欏尯鍩�
+ */
+ public byte[] userCard; //鐢ㄦ埛鍗″彿
+
public String getCardData() {
return cardData;
@@ -28,10 +41,16 @@
public byte[] toByte() {
byte[] data = new byte[16];
data[0] = HexUtil.hexToByte(cardType);
- byte[] cardDatas = HexUtil.hexToByteArray(cardData);
- for (int i = 0; i < 6; i++) {
- data[i + 1] = cardDatas[i];
+
+ byte[] cardDataByte = HexUtil.hexToByteArray(cardData);
+ if (cardDataByte != null) {
+ System.arraycopy(cardDataByte, 0, data, 1, cardDataByte.length);
}
+
+ if (userCard!=null){
+ System.arraycopy(userCard, 0, data, 5, userCard.length);
+ }
+
data[15] = getByteSum(data);
return data;
}
diff --git a/app/src/main/java/com/dayu/recharge/card/PassWordCard.java b/app/src/main/java/com/dayu/recharge/card/PassWordCard.java
index ff1e78f..40d038b 100644
--- a/app/src/main/java/com/dayu/recharge/card/PassWordCard.java
+++ b/app/src/main/java/com/dayu/recharge/card/PassWordCard.java
@@ -3,6 +3,8 @@
import com.dayu.recharge.tools.HexUtil;
import com.dayu.recharge.utils.MyCommon;
+import java.util.List;
+
/**
* Copyright (C), 2023,
* Author: zuo
@@ -12,16 +14,49 @@
public class PassWordCard {
public String cardType = MyCommon.PASS_WORD_CRAD_TYPE;//鍗$被鍨�
public String cardData = "A0B1C289";//鏍囪瘑鐮�
+ public String passWord;//鍏綅鐨勫瘑鐮�
+
+
+
+ public static PassWordCard getBean(List<byte[]> data){
+
+ if (data!=null){
+ PassWordCard passWordCard=new PassWordCard();
+
+ byte[] zero=data.get(0);
+ byte[] passWordByte=new byte[6];
+ System.arraycopy(zero, 5, passWordByte, 0, passWordByte.length);
+ passWordCard.passWord = HexUtil.bytesToHex(passWordByte);
+ return passWordCard;
+ }
+ return null;
+
+
+ }
+
+
+ public byte[] toByte() {
+ Zero zero = new Zero();
+ return zero.toByte();
+ }
+
public class Zero extends BaseCard {
- public void toByte() {
+ public byte[] toByte() {
byte[] data = new byte[16];
data[0] = HexUtil.hexToByte(cardType);
byte[] cardDatas = HexUtil.hexToByteArray(cardData);
- for (int i = 0; i < 4; i++) {
- data[i + 1] = cardDatas[i];
+ if (cardDatas != null) {
+ System.arraycopy(cardDatas, 0, data, 1, cardDatas.length);
}
+
+ byte[] passWordBytes = HexUtil.hexToByteArray(passWord);
+ if (passWordBytes != null) {
+ System.arraycopy(passWordBytes, 0, data, 5, passWordBytes.length);
+ }
+
data[15] = getByteSum(data);
+ return data;
}
}
diff --git a/app/src/main/java/com/dayu/recharge/card/RegionCard.java b/app/src/main/java/com/dayu/recharge/card/RegionCard.java
index 0db3780..8656269 100644
--- a/app/src/main/java/com/dayu/recharge/card/RegionCard.java
+++ b/app/src/main/java/com/dayu/recharge/card/RegionCard.java
@@ -34,11 +34,23 @@
byte[] zero=data.get(0);
regionCard.cardType=HexUtil.byteToHex(zero[0]);
+ byte[] regionByte = new byte[2];
+ System.arraycopy(zero, 1, regionByte, 0, regionByte.length);
+ regionCard.region = (short) HexUtil.get16to10LowHigh(HexUtil.bytesToHex(regionByte));
+
+
+ byte[] controllerCodelByte = new byte[2];
+ System.arraycopy(zero, 3, controllerCodelByte, 0, controllerCodelByte.length);
+ regionCard.controllerCodel = (short) HexUtil.get16to10LowHigh(HexUtil.bytesToHex(controllerCodelByte));
+
+
return regionCard;
}
-
+ /**
+ * 绗�1鎵囧尯0鍧� 瀛樺偍鐨勬暟鎹�
+ */
public class Zero extends BaseCard {
public byte[] toByte() {
byte[] data = new byte[16];
diff --git a/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java b/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java
index e00689d..86ee82b 100644
--- a/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java
+++ b/app/src/main/java/com/dayu/recharge/dao/AppDatabase.java
@@ -11,6 +11,7 @@
import com.dayu.recharge.dbBean.IdentityBean;
import com.dayu.recharge.dbBean.IpBean;
import com.dayu.recharge.dbBean.PassWordBean;
+import com.dayu.recharge.dbBean.PassWordCardBean;
import com.dayu.recharge.dbBean.PowerBean;
import com.dayu.recharge.dbBean.RechargeBean;
import com.dayu.recharge.dbBean.UserCardBean;
@@ -21,7 +22,7 @@
* Date: 2023-11-05 16:23
* Description:
*/
-@Database(entities = {CardData.class, DeviceNumber.class, IdentityBean.class, DomainBean.class, ElectricPriceBean.class, IpBean.class, AdminDataBean.class, PassWordBean.class, UserCardBean.class, RechargeBean.class, PowerBean.class}, version = 2, exportSchema = false)
+@Database(entities = {PassWordCardBean.class,CardData.class, DeviceNumber.class, IdentityBean.class, DomainBean.class, ElectricPriceBean.class, IpBean.class, AdminDataBean.class, PassWordBean.class, UserCardBean.class, RechargeBean.class, PowerBean.class}, version = 3, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
@@ -46,4 +47,6 @@
public abstract DeviceNumberDao deviceNumberDao();
public abstract CardDataDao cardDataDao();
+
+ public abstract PassWordCardDao passWordCardDao();
}
diff --git a/app/src/main/java/com/dayu/recharge/dao/LoginPsDao.java b/app/src/main/java/com/dayu/recharge/dao/LoginPsDao.java
index aee6da5..ce398f0 100644
--- a/app/src/main/java/com/dayu/recharge/dao/LoginPsDao.java
+++ b/app/src/main/java/com/dayu/recharge/dao/LoginPsDao.java
@@ -13,7 +13,7 @@
* Copyright (C), 2023,
* Author: zuo
* Date: 2023-11-06 20:27
- * Description:
+ * Description: 鐧诲綍瀵嗙爜淇濆瓨
*/
@Dao
public interface LoginPsDao {
diff --git a/app/src/main/java/com/dayu/recharge/dao/PassWordCardDao.java b/app/src/main/java/com/dayu/recharge/dao/PassWordCardDao.java
new file mode 100644
index 0000000..22256d2
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/dao/PassWordCardDao.java
@@ -0,0 +1,31 @@
+package com.dayu.recharge.dao;
+
+import androidx.room.Dao;
+import androidx.room.Delete;
+import androidx.room.Insert;
+import androidx.room.OnConflictStrategy;
+import androidx.room.Query;
+import androidx.room.Update;
+
+import com.dayu.recharge.dbBean.PassWordCardBean;
+
+/**
+ * Copyright (C), 2023,
+ * Author: zuo
+ * Date: 2023-11-08 21:27
+ * Description: 瀵嗙爜鍗�
+ */
+@Dao
+public interface PassWordCardDao {
+ @Insert(onConflict = OnConflictStrategy.REPLACE)
+ void insert(PassWordCardBean passWordBean);
+
+ @Update
+ void update(PassWordCardBean passWordBean);
+
+ @Delete
+ void delete(PassWordCardBean passWordBean);
+
+ @Query("select * from PassWordCardBean limit 1")
+ PassWordCardBean findFirst();
+}
diff --git a/app/src/main/java/com/dayu/recharge/dao/PowerDao.java b/app/src/main/java/com/dayu/recharge/dao/PowerDao.java
index f90e2d6..c34007e 100644
--- a/app/src/main/java/com/dayu/recharge/dao/PowerDao.java
+++ b/app/src/main/java/com/dayu/recharge/dao/PowerDao.java
@@ -13,7 +13,7 @@
* Copyright (C), 2023,
* Author: zuo
* Date: 2023-11-08 21:27
- * Description: 閰嶇疆姘存车鍔熺巼
+ * Description:
*/
@Dao
public interface PowerDao {
diff --git a/app/src/main/java/com/dayu/recharge/dbBean/PassWordBean.java b/app/src/main/java/com/dayu/recharge/dbBean/PassWordBean.java
index 75d8245..9e5c80b 100644
--- a/app/src/main/java/com/dayu/recharge/dbBean/PassWordBean.java
+++ b/app/src/main/java/com/dayu/recharge/dbBean/PassWordBean.java
@@ -2,6 +2,11 @@
import androidx.room.Entity;
import androidx.room.PrimaryKey;
+
+
+/**
+ * 鐢ㄦ埛鐧诲綍瀵嗙爜
+ */
@Entity
public class PassWordBean {
diff --git a/app/src/main/java/com/dayu/recharge/dbBean/PassWordCardBean.java b/app/src/main/java/com/dayu/recharge/dbBean/PassWordCardBean.java
new file mode 100644
index 0000000..22a9b0a
--- /dev/null
+++ b/app/src/main/java/com/dayu/recharge/dbBean/PassWordCardBean.java
@@ -0,0 +1,36 @@
+package com.dayu.recharge.dbBean;
+
+import androidx.room.Entity;
+import androidx.room.PrimaryKey;
+
+/**
+ * author: zuo
+ * Date: 2024-03-01
+ * Time: 17:56
+ * 澶囨敞锛氬瘑鐮佸崱瀵嗙爜
+ */
+@Entity
+public class PassWordCardBean {
+
+ @PrimaryKey(autoGenerate = true)
+ public long id;
+ private String passWord = "";
+
+ public long getId() {
+ return id;
+ }
+
+ public void setId(long id) {
+ this.id = id;
+ }
+
+ public String getPassWord() {
+ return passWord;
+ }
+
+ public void setPassWord(String passWord) {
+ this.passWord = passWord;
+ }
+
+
+}
diff --git a/app/src/main/java/com/dayu/recharge/tools/HexUtil.java b/app/src/main/java/com/dayu/recharge/tools/HexUtil.java
index a00b073..79176a6 100644
--- a/app/src/main/java/com/dayu/recharge/tools/HexUtil.java
+++ b/app/src/main/java/com/dayu/recharge/tools/HexUtil.java
@@ -1,6 +1,8 @@
package com.dayu.recharge.tools;
import java.math.BigInteger;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -139,6 +141,38 @@
return Integer.toHexString(Float.floatToIntBits(value));
}
+
+ /**
+ * 灏嗗甫绗﹀彿鐨�32浣嶆诞鐐规暟瑁呮崲byte鏁扮粍
+ * 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+ *
+ * @param value
+ * @return
+ */
+ public static byte[] folatToByte(Float value) {
+ ByteBuffer buffer = ByteBuffer.allocate(4); // 4涓瓧鑺�
+ buffer.order(ByteOrder.LITTLE_ENDIAN);
+ buffer.putFloat(value);
+ byte[] byteArray = buffer.array();
+ return byteArray;
+ }
+
+ /**
+ * 灏哹yte鏁扮粍杞崲涓哄甫绗﹀彿鐨�32浣嶆诞鐐规暟
+ *
+ * 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+ *
+ * @param value
+ * @return
+ */
+ public static Float bytesToFloat(byte[] value) {
+ ByteBuffer bufferLittleEndian = ByteBuffer.wrap(value);
+ bufferLittleEndian.order(ByteOrder.LITTLE_ENDIAN);
+ return bufferLittleEndian.getFloat();
+
+ }
+
+
/**
* 鍗佽繘鍒惰浆16杩涘埗
*
@@ -167,6 +201,7 @@
/**
* short10杩涘埗杞�16杩涘埗 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+ *
* @param number
* @return
*/
@@ -186,9 +221,9 @@
}
-
/**
* short10杩涘埗杞�16杩涘埗 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+ *
* @param number
* @return
*/
@@ -202,20 +237,20 @@
}
-
/**
* short16杩涘埗杞�10杩涘埗 浣庝綅鍦ㄥ墠楂樹綅鍦ㄥ悗
+ *
* @param hex
* @return
*/
- public static short getShort10To16LowHigh(String hex){
+ public static short getShort10To16LowHigh(String hex) {
try {
String str = "";
str = spaceHex(hex);
str = HighLowHex(str);
return (short) Integer.parseInt(str, 16);
} catch (NumberFormatException e) {
- e.printStackTrace();
+ e.printStackTrace();
}
return 0;
}
diff --git a/app/src/main/res/layout/activity_password_card.xml b/app/src/main/res/layout/activity_password_card.xml
new file mode 100644
index 0000000..dc0f7e2
--- /dev/null
+++ b/app/src/main/res/layout/activity_password_card.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <com.dayu.recharge.view.TitleBar
+ android:id="@+id/titleBar"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/dimen_title_height"
+ android:background="@drawable/title_bar_bg"
+ app:centerText="閰嶇疆鍗″瘑鐮�"
+ app:leftImage="@mipmap/icon_back" />
+
+ <LinearLayout
+ android:id="@+id/village_ll"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/titleBar"
+ android:layout_margin="20dp"
+ android:orientation="horizontal">
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="褰撳墠瀵嗙爜"
+ android:textSize="@dimen/text_size" />
+
+ <TextView
+ android:id="@+id/village_oldNumber"
+ android:layout_width="wrap_content"
+ android:layout_height="match_parent"
+ android:textSize="@dimen/text_size" />
+
+ </LinearLayout>
+
+
+ <EditText
+ android:id="@+id/village_newNum"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_below="@+id/village_ll"
+ android:layout_alignParentStart="true"
+ android:layout_marginStart="20dp"
+ android:layout_marginTop="20dp"
+ android:layout_marginEnd="20dp"
+ android:layout_marginBottom="20dp"
+ android:hint="璇疯緭鍏ユ柊璁剧疆鐨�12浣�16杩涘埗鍗″瘑鐮�"
+ android:inputType="number|numberDecimal"
+ android:digits="0123456789." />
+
+ <TextView
+ android:id="@+id/village_ok"
+ android:layout_width="match_parent"
+ android:layout_height="50dp"
+ android:layout_alignParentBottom="true"
+ android:background="@color/title_bg"
+ android:gravity="center"
+ android:text="纭� 瀹�"
+ android:textSize="@dimen/text_size" />
+</RelativeLayout>
\ No newline at end of file
--
Gitblit v1.8.0