SerialPort.Open引发“传递给系统调用的数据区域太小”异常

我最近遇到了这个问题。我公司开发的软件大量使用System.IO.Ports.SerialPort进行COM端口连接。现在,我们正在使用一台新的嵌入式PC,当我尝试执行SerialPort.Open()时,它将引发异常,指出“传递给系统调用的数据区域太小”。

经过各种测试,我发现其他软件(例如Terminal2,Hercules)可以使用相同的配置(波特率,奇偶校验等)成功打开所述COM端口,发送和接收数据,所以我认为这有问题.net Framework的SerialPort实现(在阳光下没什么新东西)。

在设备管理器中,这些端口被列为“ UartSub设备(COMX)”,并且位置为Intel(R)串行IO UART主机控制器。目前,这是与以前的系统(SerialPort可以正常工作)唯一的区别。

有什么建议吗?

编辑-为清晰起见添加代码段。

SerialPort SP = new SerialPort(CmbPorts.Text.ToString().Trim(),115200,Parity.None,8,StopBits.One);

SP.Handshake = Handshake.None;

SP.Open();

这是StackTrace:

   at System.IO.Ports.InternalResources.WinIOError(Int32 errorCode,String str)
   at System.IO.Ports.SerialStream..ctor(String portName,Int32 baudRate,Parity parity,Int32 dataBits,StopBits stopBits,Int32 readTimeout,Int32 writeTimeout,Handshake handshake,Boolean dtrEnable,Boolean rtsEnable,Boolean discardNull,Byte parityReplace)
   at System.IO.Ports.SerialPort.Open()
   at TestUartCOMPort.Form1.BtnConnect_Click(Object sender,EventArgs e) in C:\Workspace\Projects\TestUartCOMPort\TestUartCOMPort\Form1.cs:line 49
beckyang123 回答:SerialPort.Open引发“传递给系统调用的数据区域太小”异常

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3142799.html

大家都在问