From c7376f8d1091b70597ba4430a281496b585b386e Mon Sep 17 00:00:00 2001
From: weimingfei <fei_gaming@sina.com>
Date: 星期四, 23 十月 2025 21:58:26 +0800
Subject: [PATCH] 钥匙柜
---
keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/i485/SportUtils.java | 185 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 185 insertions(+), 0 deletions(-)
diff --git a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/i485/SportUtils.java b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/i485/SportUtils.java
index 1ce6dc4..d68579e 100644
--- a/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/i485/SportUtils.java
+++ b/keyCabinet-android/app/src/main/java/com/doumee/keyCabinet/utils/i485/SportUtils.java
@@ -24,6 +24,191 @@
}
}
}
+ if(serialPaths.size()==0){
+ serialPaths.add("/dev/ttyS0");
+ serialPaths.add("/dev/ttyS1");
+ serialPaths.add("/dev/ttyS2");
+ serialPaths.add("/dev/ttyS3");
+ serialPaths.add("/dev/ttyS4");
+ serialPaths.add("/dev/ttyS5");
+ serialPaths.add("/dev/ttyS6");
+ serialPaths.add("/dev/ttyS7");
+ }
return serialPaths;
}
+
+ /**
+ * 瀛楄妭鏁扮粍杞�16杩涘埗
+ * @param bytes 闇�瑕佽浆鎹㈢殑byte鏁扮粍
+ * @return 杞崲鍚庣殑Hex瀛楃涓�
+ */
+ public static String bytesToHexSimple(byte[] bytes) {
+ StringBuilder sb = new StringBuilder();
+ for (byte b : bytes) {
+ sb.append(String.format("%02x", b & 0xFF));
+ }
+ return sb.toString();
+ }
+
+ /**
+ * hex瀛楃涓茶浆byte鏁扮粍
+ * @param inHex 寰呰浆鎹㈢殑Hex瀛楃涓�
+ * @return 杞崲鍚庣殑byte鏁扮粍缁撴灉
+ */
+ public static byte[] hexToByteArray(String inHex){
+ int hexlen = inHex.length();
+ byte[] result;
+ if (hexlen % 2 == 1){
+ //濂囨暟
+ hexlen++;
+ result = new byte[(hexlen/2)];
+ inHex="0"+inHex;
+ }else {
+ //鍋舵暟
+ result = new byte[(hexlen/2)];
+ }
+ int j=0;
+ for (int i = 0; i < hexlen; i+=2){
+ result[j]=hexToByte(inHex.substring(i,i+2));
+ j++;
+ }
+ return result;
+ }
+
+ /**
+ * 鏍¢獙鏁版嵁鏄惁姝g‘
+ * @param data
+ * @return
+ */
+ public static boolean checkData(String data){
+ if(data.length()>2){
+ String d = data.substring(0,data.length()-2);
+ String hz = data.substring(data.length()-2,data.length());
+ if(hz.equals(SportUtils.getBCC(d))){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Hex瀛楃涓茶浆byte
+ * @param inHex 寰呰浆鎹㈢殑Hex瀛楃涓�
+ * @return 杞崲鍚庣殑byte
+ */
+ public static byte hexToByte(String inHex){
+ return (byte)Integer.parseInt(inHex,16);
+ }
+
+ public static String getBCC(String hex) {
+ int i = 0, j = 0;
+ int len = hex.length();
+ short inb[] = new short[len];
+ for (i = 0; i < len; i++) {
+ inb[i] = charToHex(hex.charAt(i)); //灏哠tring閲岀殑姣忎竴涓猚har杞崲涓篐ex
+ }
+
+ for (i = 0; i < len; i++) { //灏嗘瘡涓や釜Hex鍚堝苟鎴愪竴涓猙yte
+ inb[j] = (byte) (((inb[i] << 4) & 0x00f0) | ((inb[i + 1]) & 0x000f));
+ i++;
+ j++;
+ }
+ byte temp = 0x00; //鏍¢獙鍊�
+ for (i = 0; i < len / 2; i++) { //寮傛垨
+ temp ^= inb[i];
+ }
+ byte[] bytes = new byte[1];
+ bytes[0] = temp;
+ return byteToStr(bytes, bytes.length);
+ }
+ /**
+ * 鎺ユ敹鍒扮殑瀛楄妭鏁扮粍杞崲16杩涘埗瀛楃涓�
+ */
+ public static String byteToStr(byte[] b, int size) {
+ String ret = "";
+ for (int i = 0; i < size; i++) {
+ String hex = Integer.toHexString(b[i] & 0xFF);
+ if (hex.length() == 1) {
+ hex = '0' + hex;
+ }
+ ret += hex.toUpperCase();
+ }
+ return ret;
+ }
+ public static short charToHex(char x) { //灏嗗崟涓猚har杞崲涓篐ex
+ short result = 0;
+ switch (x) {
+ case 'a':
+ result = 10;
+ break;
+ case 'b':
+ result = 11;
+ break;
+ case 'c':
+ result = 12;
+ break;
+ case 'd':
+ result = 13;
+ break;
+ case 'e':
+ result = 14;
+ break;
+ case 'f':
+ result = 15;
+ break;
+ case 'A':
+ result = 10;
+ break;
+ case 'B':
+ result = 11;
+ break;
+ case 'C':
+ result = 12;
+ break;
+ case 'D':
+ result = 13;
+ break;
+ case 'E':
+ result = 14;
+ break;
+ case 'F':
+ result = 15;
+ break;
+ default:
+ result = (short) Character.getNumericValue(x);
+ break;
+ }
+ return result;
+ }
+
+ public static String intToHex(int n) {
+ //StringBuffer s = new StringBuffer();
+ StringBuilder sb = new StringBuilder(2);
+ String a;
+ char []b = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
+ while(n != 0){
+ sb = sb.append(b[n%16]);
+ n = n/16;
+ }
+ if(sb.length()==1){
+ sb.append("0");
+ }
+ a = sb.reverse().toString();
+ return a;
+ }
+
+ /**
+ * 16杩涘埗杞�2杩涘埗
+ * @param hexString
+ * @return
+ */
+ public static String hexToBinary(String hexString) {
+ StringBuilder binary = new StringBuilder();
+ for (char c : hexString.toCharArray()) {
+ int value = Character.digit(c, 16);
+ String bits = String.format("%4s", Integer.toBinaryString(value)).replace(' ', '0');
+ binary.append(bits);
+ }
+ return binary.toString();
+ }
}
--
Gitblit v1.9.3