针对以下 C# SerialPort 错误我能做些什么

What i can do against the following C# SerialPort Error

如果我 运行 我使用 SharpDevelop 创建的以下代码:

        SerialPort serial = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);

        void sendMsg_Click(object sender, EventArgs e)
        {
            serial.Open();
            serial.WriteLine(textBox1.Text);
            serial.Write(new byte[] {0x0A, 0xE2, 0xFF}, 0, 3);
            serial.Close();
        }

下面是执行代码时出现的异常:

异常如下:

System.IO.IOException: Falscher Parameter.
bei System.IO.Ports.InternalResources.WinIOError
bei System.IO.Ports.SerialStream.EndWrite
bei System.IO.Ports.SerialStream.Write
bei System.IO.Ports.SerialPort.Write
bei System.IO.Ports.SerialPort.WriteLine
bei Chat_via_RS232.MainForm.sendMsg_Click in c:\Users\admin\Documents\SharpDevelop Projects\Latias.eu IT\Chat via RS232\MainForm.cs:Zeile 35
bei System.Windows.Forms.Control.OnClick
bei System.Windows.Forms.Button.OnClick
bei System.Windows.Forms.Button.OnMouseUp
bei System.Windows.Forms.Control.WmMouseUp
bei System.Windows.Forms.Control.WndProc
bei System.Windows.Forms.ButtonBase.WndProc
bei System.Windows.Forms.Button.WndProc
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc
bei System.Windows.Forms.NativeWindow.DebuggableCallback
bei System.Windows.Forms.Application.ComponentManager.FPushMessageLoop
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop
bei System.Windows.Forms.Application.Run
bei Chat_via_RS232.Program.Main in c:\Users\admin\Documents\SharpDevelop Projects\Latias.eu IT\Chat via RS232\Program.cs:Zeile 24

有人可以帮我吗

此致

拉拉

错误在这一行:

serial.WriteLine(textBox1.Text)

您的异常报告显示 IOException 被引发,但是 WriteLine 的文档没有将 IOException 列为记录在案的异常:https://msdn.microsoft.com/en-us/library/system.io.ports.serialport.writeline(v=vs.110).aspx - 可能是其他原因出问题了。

SerialPort.Open 的文档指出如果端口不可用,则会在那里抛出异常 (https://msdn.microsoft.com/en-us/library/system.io.ports.serialport.open(v=vs.110).aspx),但这不会在您的程序中发生。我怀疑可能将无效值传递给 WriteLine 函数。如果将 Write( Byte[] ) 调用移至 WriteLine 调用之前会发生什么情况?