我正在使用Windows CE应用程序,该应用程序涉及使用机器的串行端口。但是,当我尝试打开一个端口时,它会产生IOException。以下是示例代码:
SerialPort NewSerialPort = new SerialPort("COM7", 115200, Parity.None, 8, StopBits.One);
NewSerialPort.Handshake = Handshake.None;
//opening the serial port
NewSerialPort.Open();
我试图在open语句之前关闭连接,并在打开之前检查IsOpen状态(在打开之前实际上是false)。 SerialPort.GetPortNames函数返回:COM1 / COM2 / COM5 / COM7。我尝试了所有包括这样的diffrend方式:COM1:/ COM2:/ COM5:/ COM7:。我似乎无法让它发挥作用。
我的第一个想法是忘记在Windows CE映像中添加内容。但我似乎无法在目录中找到任何对于串行通信而言似乎很重要的内容。
有没有人想过这个?
在 System.IO.Ports.SerialStream.WinIOError() 在 System.IO.Ports.SerialStream.WinIOError() 在 System.IO.Ports.SerialStream.CheckResult() 在 System.IO.Ports.SerialStream.SetBufferSizes() 在System.IO.Ports.SerialPort.Open() 在commtest.Form1.button2_Click()at System.Windows.Forms.Control.OnClick() 在 System.Windows.Forms.Button.OnClick() 在 System.Windows.Forms.ButtonBase.WnProc() 在 System.Windows.Forms.Control._InternalWnProc() 在 Microsoft.AGL.Forms.EVL.EnterMainLoop() 在 System.Windows.Forms.Application.Run() 在commtest.Program.Main()
答案 0 :(得分:0)
从GetPortNames()获取确切的端口名称 - 包括冒号
SerialPort NewSerialPort = new SerialPort("COM7:", 115200, Parity.None, 8, StopBits.One); // or string[] portNames = SerialPort.GetPortNames() SerialPort newSerialPort = new SerialPort(portNames[3], , 115200, Parity.None, 8, StopBits.One);
如果不起作用,请尝试“\\。\ COM7”
SerialPort NewSerialPort = new SerialPort("\\.\COM7", 115200, Parity.None, 8, StopBits.One);
答案 1 :(得分:0)
我不知道您是否已经有了这个答案,但请确保您使用的是3.5的最新.NET CF版本。 .NET CF 2.0版本中存在一个错误,IOException在打开串口时创建。如果你查看.NET CF 2.0 SP下修复的bug,你会看到这些提到的。