0

我与之交互的串行协议使用开始和停止字符来定义“数据包”,有时它会一起触发事件处理程序,有时会在两个转储中触发。无论如何,我认为构建更强大的应用程序需要某种形式的确认。我很新,所以我很感谢你的耐心,但是我在 MSDN 上做了很多阅读,我似乎无法找到一个最佳的方法来做到这一点。我提前感谢您提供的任何指导。

    private void ComPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {           
            // Read all the data waiting in the buffer
            string buffer = ComPort.ReadExisting();
            // Process String for Start "//" and Stop "\\" Characters

            //Remove data from buffer and send to seperate routine for processing               

    } 
4

1 回答 1

1

您应该将接收到的数据添加到一个StringBuilder实例,该实例是包含您的 DataReceived 方法的类的一个字段。这样您就可以“收集”数据包的碎片。每次收到一些数据时,检查是否StringBuilder包含您的开始/停止字符。只有这样你才能提取消息。之后,您将从StringBuilder. 现在再次检查它是否包含另一个包(更多启动/停止),因为除了分批接收包外,您一次可能会收到多个包。

于 2013-06-22T09:22:02.850 回答