this.Invoke((EventHandler)(delegate
            {
                //按ASCII规则转换成字符串
                builder.Append(Encoding.ASCII.GetString(buf));
                //追加的形式添加到文本框末端,并滚动到最后。
                temp += builder.ToString();
                number += n;
                if (number >= 16)
                {
                    temlabel1.Text = builder.ToString().Substring(4, 8);
                    vollabel1.Text = builder.ToString().Substring(10, 12);
                    semlabel1.Text = builder.ToString().Substring(14, 16);
                    temp.Remove(0, temp.Length);
                }
            }));
这是代码中的一部分,用多线程来处理串口数据。其实是可以正常的读取的,但是问题就在于,当我想要把传来的完整的数据中的个别数据,如temlabel1.Text = builder.ToString().Substring(4, 8);这句话,串口传来的信息包含了编号,当前温度、当前电压值和当前的信号强度。我想把这些数值分别存入到对应的Label中去。按道理,我算好数据在字符串中的位置,然后单独截出来就好了。(我以前在C语言下也是这么做的。)可是这下就出问题了。
它总是说我的字符串长度不够长,不够我这样截取的。这不是很奇怪吗?既然他能够运行到这个 if 语句中,那么接受到的字符串的长度一定是够长的,我通过调试,发现接受的字符串度正好是全部的18个字符长,一个不少。怎么可能不够长呢?希望大神们帮帮我,这是小妹的毕业设计,10号就要给初版了,唉