串口助手极限测试

昨天测试串口助手,发现高速数据流对串口数据压力很大,经测试,压力主要来自windows的组件的接收字串并渲染的速度。

测试代码如下:

            byte result;
            
            while(true)
            {

                while(serial.IsOpen && serial.BytesToRead>=0)
                {
                    byte_to_read=serial.BytesToRead;
                    result = (byte)serial.ReadByte();
                    rev_bytes_counter++;
                    rev_frame_counter=rev_bytes_counter/15;                
                }
                System.Threading.Thread.Sleep(1);
            }            
        }

现在是15个字节一个帧,结果如下:

现在接收速率是47KByte/s,3167帧/s,传输速率是427743bps,做到了实时接收,如果加一句显示的代码:

                while(serial.IsOpen && serial.BytesToRead>=0)
                {
                    byte_to_read=serial.BytesToRead;
                    
                    result = (byte)serial.ReadByte();
                    rev_bytes_counter++;
                    textBox1.AppendText(result.ToString("X2")+" ");
                
                    rev_frame_counter=rev_bytes_counter/15;
                    
                }

速度立刻就炸了,每秒钟只能显示32个帧,然后大量的数据呆在串口缓冲区出不来,最后就boom……

后来我想,应该就是windows的textbox刷新太慢了,我一次写入大量数据,不就能缓解这个问题了?

改成如下代码:

            byte[] toview = new byte[256];
            while(true)
            {

                while(serial.IsOpen && serial.BytesToRead>=256)
                {
                    byte_to_read=serial.BytesToRead;
                    serial.Read(toview,0,256);
                    textBox1.AppendText(BitConverter.ToString(toview).Replace("-"," "));
                    rev_bytes_counter+=256;                    
                    rev_frame_counter=rev_bytes_counter/15;
                    
                }

也就是一次往textbox里边扔256个字节,测试如下:

真是快了无数倍,基本达到了实时显示(当然,这代码的问题是小于256个字节就不显示,改起来很简单)。我开始好奇了……,这些常用的串口助手软件,究竟能做到什么程度呢?

先试试我常用的友善串口助手:

因为没有速度统计,我掐着表跑了10秒钟,收了100K左右,1秒10K,距离47K差的有点远。并且没有使用多线程,显示过程界面操作比较卡,总的来说是个不合格的助手。

 

纸飞机能跑到满速(但是没有上屏不好说,没源码,也有可能是先收到队列了,不过大概率是上了。因为分包比较明确,我每一帧最后的字符是0x55)牛逼。

SScom也是常用的助手,用了多线程,接收过程操作比较流畅,但是掐着表10秒钟也就100K左右,跟丁丁类似。

serial studio,也是没有速度显示,但是显示几秒钟后view界面就卡住了……,关了串口再打开又能显示几秒……

 

vofa,没有数据统计,但看起来显示挺快的,可能需要想另外的办法测试有没有全上屏。

posted on 2024-12-02 14:13  yafeng  阅读(7)  评论(0编辑  收藏  举报

导航