Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 端口已在流传输时发生COM端口错误_C#_Serial Port - Fatal编程技术网

C# 端口已在流传输时发生COM端口错误

C# 端口已在流传输时发生COM端口错误,c#,serial-port,C#,Serial Port,我有一个应用程序,它从COM端口读取数据,然后对接收到的数据进行处理。我目前正在使用一个COM端口模拟器(因为我没有可用的设备),但我正在向它提供一个数据样本。如果我在开始传输数据之前打开COMPort,这个程序似乎工作得非常好。但是,如果我在打开COMPort之前开始传输,然后打开端口,那么dataReceived事件将永远不会触发,并且我永远无法获取任何数据。我甚至尝试在打开端口后立即冲洗INBuffer,但无法读取数据 我打开端口的代码如下: public void setupComPor

我有一个应用程序,它从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);
        }
    }

任何帮助都将不胜感激。

这可能是模拟器的问题。我猜当你有了真正的硬件,问题就会消失。我唯一可以尝试的另一件事是将设置为默认值以外的值(如10或其他值)。

我很困惑,
如果我在打开COMPort之前开始传输,那么dataReceived事件将永远不会触发。
;如果com端口未打开,则不应触发。我的意思是,我开始传输,然后设置端口。这有意义吗?我将编辑我的问题以澄清。啊,好的,是的,这很有意义。这可能是模拟器的问题…你认为呢?如果我在Putty或HyperTerminal中执行相同的操作,它会获取所有数据,因此我不确定。我正在使用Com0Com创建虚拟端口,这就是导致问题的原因。我必须更改端口设置并启用缓冲区溢出设置,现在我可以在打开端口之前获取数据,而不管数据何时流式传输。