Пример #1
0
    public override void ResolveBytes(byte[] _bytes)
    {
        if (_bytes == null || _bytes.Length == 0)
        {
            return;
        }

        _bytes = LMUtility.RemoveSpacing(_bytes);

        FilterIds(_bytes);
    }
Пример #2
0
    public override void ResolveBytes(byte[] _bytes)
    {
        base.ResolveBytes(_bytes);

        if (m_bytes.Length == 0)
        {
            return;
        }

        m_bytes = LMUtility.RemoveSpacing(m_bytes);

        FilterIds();
    }
Пример #3
0
    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;
            }
        }
    }