C# C语言中的两个调制解调器,两个SerialPort对象#

C# C语言中的两个调制解调器,两个SerialPort对象#,c#,serial-port,modem,C#,Serial Port,Modem,我有两个和一个C#应用程序,其中设置了两个serialPort对象,用于侦听两个通信端口上的传入数据 以下是初始化每个调制解调器的方法: m_SerialPort = new SerialPort("COM3", 2400); m_SerialPort.DataReceived += new SerialDataReceivedEventHandler(this.ReceiveChars); try { m_SerialPort.Open(); m_SerialPort.Dis

我有两个和一个C#应用程序,其中设置了两个serialPort对象,用于侦听两个通信端口上的传入数据

以下是初始化每个调制解调器的方法:

m_SerialPort = new SerialPort("COM3", 2400);
m_SerialPort.DataReceived += new SerialDataReceivedEventHandler(this.ReceiveChars);

try
{
    m_SerialPort.Open();
    m_SerialPort.DiscardInBuffer();
    m_SerialPort.DiscardOutBuffer();    
}
catch (Exception e)
{
    // die gracefully
}
finally
{
    m_SerialPort.DtrEnable = true;
}
第二个调制解调器初始化为不同的SerialPort对象,但使用“COM4”

我首先初始化的任何COM端口都可以接收数据,但第二个COM端口不会接收数据

这是我的初始化、C#的SerialPort类或Windows XP拒绝让两个调制解调器同时运行的问题吗

欢迎任何意见或建议

更新

您是否在“设备管理器”下检查了这两个端口的配置、启用和工作情况

是的,它们都有各自的端口

您是否尝试过类似Hyperterm的方法来尝试将数据发送到端口

尝试在单独的超级终端中打开两个通信端口,但未能打开第二个通信端口。

您是否在“设备管理器”下检查了这两个端口的配置、启用和工作情况

您是否尝试过类似sysinternalsportmon的方法来监视端口


您是否尝试过类似Hyperterm的方法来尝试将数据发送到端口

我猜(我还能做什么?)你在ReceiveChars方法中做了一些不正常的事情(也许你正在更新GUI,而没有使用Invoke),这会阻止ReceiveChars方法再次被调用。

看起来问题只是两个调制解调器不能同时在同一台PC上运行。我安装了另一家供应商的另一个调制解调器,并且我能够打开两个com端口。

提示:使用此工具测试应用程序,它会创建虚拟com端口。

什么是
m_SerialPort
?您是否使用相同的
m_SerialPort
来存储两个
新SerialPort(…)
实例?有两个不同的SerialPort对象,我更改了此代码段的对象名称。可能是驱动程序问题,因为调制解调器是软件驱动的。一般来说,当硬件(串行)调制解调器可用时,它是一致性和稳定性的最佳选择。虽然很少有较新的主板配备一个以上的串行端口(如果有的话)。