端口已经流式传输时COM端口错误

时间:2011-07-07 14:51:22

标签: c# serial-port

我有一个应用程序从COM端口读取,然后对它接收的数据执行某些操作。我目前正在使用COM端口仿真器(因为我没有可供我使用的设备),但我正在为它提供数据样本。如果我在开始传输数据之前打开COMPort,程序似乎完全正常。但是,如果我在打开COMPort之前开始传输,然后打开端口,则dataReceived事件永远不会被触发,我永远无法获取任何数据。我打开端口时甚至试图冲洗INBuffer,但我无法读取它。

我打开端口的代码是:

public void setupComPort(string baudRate, string dataBits, string stopBits, string parity, string portName)
    {
        if (comPort.IsOpen)
            comPort.Close();
        comPort.BaudRate = int.Parse(baudRate);
        comPort.DataBits = int.Parse(dataBits);
        comPort.StopBits = (StopBits)Enum.Parse(typeof(StopBits), stopBits);
        comPort.Parity = (Parity)Enum.Parse(typeof(Parity), parity);
        comPort.PortName = portName;
        // When data is recieved through the port, call this method
        comPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
        try
        {
            // Open the port
            comPort.Open();
            //If there's data in buffer, discard so we can start receiving
            //comPort.DiscardInBuffer();
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message, "Error Opening Port", MessageBoxButton.OK, MessageBoxImage.Error);
        }
    }

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

它可能是模拟器的一个问题。我猜你有实际的硬件时问题就会消失。我能想到的另一件事就是将ReceivedBytesThreshold设置为默认值以外的其他值(如10或其他)。