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