使用串口时C#高CPU负载

时间:2014-04-01 17:16:49

标签: .net

我编写了一个串口应用程序,我的第一个问题在stackoverflow解决了。 波特率是115200,问题是通过简单使用串行端口,在4 GHz的i7四核上CPU负载约为12%。如果我对数据进行一些简单的处理,负载就会上升到大约30-33%。因为我需要在笔记本电脑上运行,如果有人可以就如何提高效率给我一个建议那就太棒了。 我试过了:

  1. 尝试在workerthread中进行数据处理,但后来他告诉我,后台工作人员正在满负荷运行而且无法并行执行更多任务(自由翻译)
  2. ReceivedBytesTreshold raise几乎没有任何内容
  3. 以下是代码的一部分:

    private void serialPort1_DataReceived_1(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                int bytes = serialPort1.BytesToRead;
                byte[] comBuffer = new byte[bytes];
                serialPort1.Read(comBuffer, 0, bytes);
                this.BeginInvoke(new EventHandler<DataEventArgs>(DisplayText), this, new DataEventArgs { Data = comBuffer });
            }
        } 
    
    public class DataEventArgs : EventArgs
            {
                public byte[] Data { get; set; }
            }
    
    private void DisplayText(object sender, DataEventArgs e)
            {
        Array.Reverse(...);
            Array.Reverse(...);
            Array.Reverse(...);
            Array.Reverse(...);
            angle0 = BitConverter.ToSingle(..., 0);
            angle1 = BitConverter.ToSingle(..., 0);
            gyro0 = BitConverter.ToInt16(..., 0);  
        ...
        } 
    

    谢谢!

0 个答案:

没有答案