public override void ResolveBytes(byte[] _bytes) { if (_bytes == null || _bytes.Length == 0) { return; } _bytes = LMUtility.RemoveSpacing(_bytes); FilterIds(_bytes); }
public override void ResolveBytes(byte[] _bytes) { base.ResolveBytes(_bytes); if (m_bytes.Length == 0) { return; } m_bytes = LMUtility.RemoveSpacing(m_bytes); FilterIds(); }
protected override void ResolveBytes(byte[] bytes) { // 消除字节中的空值 bytes = LMUtility.RemoveSpacing(bytes); // 把字节转化为字符串并叠加起来 m_getString += Encoding.UTF8.GetString(bytes); // 砂磨板的值会以分号为区分,如CB:0001;CC:00JK;等 // 因此当分号出现时候,则判断可能获取到数值了 if (m_getString.IndexOf(';') >= 0) { // 按分号分割成各别的数组,如[CB:0001,CC:00JK] string[] split = m_getString.Split(';'); // 倒序迭代每个字符串 for (int i = split.Length - 1; i >= 0; i--) { if (split[i].IndexOf(':') < 0) { continue; } string[] splitKey = split[i].Split(':'); string key = splitKey[0] ?? string.Empty; // 如果键值为空或者是个空格,则直接跳过 if (string.IsNullOrWhiteSpace(key)) { continue; } // 如果获取到位置代号但是不完整,则跳过 if (key == "CC" && split[i].Length != 7) { continue; } // 如果有值,则把开始的0全部去掉 string value = splitKey[1].TrimStart('0') ?? string.Empty; // 存到序列里 SetValue(key, value); // 只要获取任何有效键值,就清空叠加的字符串 m_getString = string.Empty; break; } } }