如何从梅特勒托利多秤的RS232输出中提取重量值?
提取梅特勒托利多秤RS232输出中的重量值(C#.NET)
针对你获取到的秤输出格式(如A*0 15 00或A*0 15 0),可以通过以下两种可靠方法提取中间的重量值:
方法1:字符串分割处理
利用输出内容的空格分隔特性,先压缩连续空格再拆分字符串,直接取第二部分(索引为1):
public string ExtractWeight(string rawScaleData) { // 去除首尾空白,将连续空格替换为单个空格,再拆分 var dataParts = rawScaleData.Trim() .Replace(" ", " ") .Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries); // 确保拆分后有足够的元素,返回中间的重量值 return dataParts.Length >= 2 ? dataParts[1] : string.Empty; }
方法2:正则表达式匹配
针对固定的输出格式,用正则精准匹配中间的重量数值,避免分割可能出现的异常:
using System.Text.RegularExpressions; public string ExtractWeightViaRegex(string rawScaleData) { // 匹配A*0 + 任意空格 + 重量数字 + 任意空格 + 末尾数字的格式 // 如果重量可能包含小数,可将正则改为 @"A\*0\s+(\d+\.?\d*)\s+\d+" var regexPattern = @"A\*0\s+(\d+)\s+\d+"; var matchResult = Regex.Match(rawScaleData, regexPattern); return matchResult.Success ? matchResult.Groups[1].Value : string.Empty; }
注意事项
- 如果秤后续输出格式有变化(比如重量带小数、符号),只需调整正则表达式或分割后的索引即可适配;
- 实际使用时,建议对读取到的原始数据先做非空校验,避免空引用异常。
内容的提问来源于stack exchange,提问作者Master Tesh
相关产品推荐
相关产品推荐

