From 4ca3791590a7bf50222aa5f80e53edf04739108a Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期二, 22 十月 2024 17:20:23 +0800
Subject: [PATCH] fix 1400 post floor farmat

---
 rfid/proto.go |   44 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/rfid/proto.go b/rfid/proto.go
index cbd59f8..e6b11b2 100644
--- a/rfid/proto.go
+++ b/rfid/proto.go
@@ -1,5 +1,49 @@
 package rfid
 
+import (
+	"encoding/hex"
+	"fmt"
+	"strconv"
+	"strings"
+)
+
 const (
 	ControlWordEPCReadResponse6C uint32 = 0x00011200
+	ControlWordConnectionStatus  uint32 = 0x00011112
+	ControlWordDeviceInfo        uint32 = 0x00010100
 )
+
+func Parse2Floor(input string) (string, error) {
+	// 瀹氫箟鍓嶇紑
+	prefix := "E250019506C"
+
+	// 妫�鏌ュ瓧绗︿覆鏄惁鍖呭惈鎸囧畾鍓嶇紑
+	if !strings.HasPrefix(input, prefix) {
+		return "", fmt.Errorf("瀛楃涓叉病鏈変互鎸囧畾鍓嶇紑 %s 寮�濮�", prefix)
+	}
+
+	// 鎻愬彇闀垮害閮ㄥ垎鐨勫瓧绗︿覆骞惰浆鎹㈡垚鏁存暟
+	lengthStr := input[len(prefix) : len(prefix)+2]
+	length, err := strconv.Atoi(lengthStr)
+	if err != nil {
+		return "", fmt.Errorf("闀垮害瑙f瀽閿欒: %v", err)
+	}
+
+	//fmt.Println("data len ", length)
+
+	// 鑾峰彇鏈熬鐨勫瓧绗︼紝鎸夌収鎸囧畾闀垮害杩涜鎴彇
+	if len(input) < len(prefix)+2+length { // 姣忎釜瀛楃鏄�2涓崄鍏繘鍒跺瓧绗﹁〃绀�
+		return "", fmt.Errorf("瀛楃涓查暱搴︿笉瓒�")
+	}
+
+	hexSection := input[len(input)-length:]
+
+	// 灏嗗崄鍏繘鍒跺瓧绗︿覆杞崲涓哄瓧鑺傛暟缁�
+	bytes, err := hex.DecodeString(hexSection)
+	if err != nil {
+		return "", fmt.Errorf("鍗佸叚杩涘埗瑙f瀽閿欒: %v", err)
+	}
+
+	// 灏嗗瓧鑺傛暟缁勮浆鎹负瀛楃涓�
+	return string(bytes), nil
+}

--
Gitblit v1.8.0