新增一些新的格式

This commit is contained in:
fengyarnom 2025-06-24 19:34:49 +08:00
parent 4271f555bc
commit 0aafb68fcd

View File

@ -211,6 +211,37 @@ func parseData(data string) (int, float64, float64, float64, float64, error) {
return sensorID, x, y, z, temperature, nil return sensorID, x, y, z, temperature, nil
} }
// 尝试解析无包装符号的格式: 1602301014-01,1,1,31.1,-6.781,1.542
plainPattern := regexp.MustCompile(`([^,]+)-(\d+),\d+,(\d+),([-]?\d+\.\d+),([-]?\d+\.\d+),([-]?\d+\.\d+)`)
matches = plainPattern.FindStringSubmatch(data)
if len(matches) == 7 {
// 无包装符号格式解析
sensorID, err := strconv.Atoi(matches[3]) // 使用传感器地址编号
if err != nil {
return 0, 0, 0, 0, 0, fmt.Errorf("解析传感器ID失败: %v", err)
}
temperature, err := strconv.ParseFloat(strings.TrimSpace(matches[4]), 64)
if err != nil {
return 0, 0, 0, 0, 0, fmt.Errorf("解析温度值失败: %v", err)
}
x, err := strconv.ParseFloat(strings.TrimSpace(matches[5]), 64)
if err != nil {
return 0, 0, 0, 0, 0, fmt.Errorf("解析X值失败: %v", err)
}
y, err := strconv.ParseFloat(strings.TrimSpace(matches[6]), 64)
if err != nil {
return 0, 0, 0, 0, 0, fmt.Errorf("解析Y值失败: %v", err)
}
z := 0.0 // 这种格式没有Z值设为0
return sensorID, x, y, z, temperature, nil
}
// 尝试解析旧格式: 1:1.000, 2.000, 3.000 // 尝试解析旧格式: 1:1.000, 2.000, 3.000
oldPattern := regexp.MustCompile(`(\d+):([-]?\d+\.\d+),\s*([-]?\d+\.\d+),\s*([-]?\d+\.\d+)`) oldPattern := regexp.MustCompile(`(\d+):([-]?\d+\.\d+),\s*([-]?\d+\.\d+),\s*([-]?\d+\.\d+)`)
matches = oldPattern.FindStringSubmatch(data) matches = oldPattern.FindStringSubmatch(data)