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

时间:2009-01-29 01:17:11

标签: c# serial-port modem

我有两个Conexant fax modems和一个带有两个serialPort对象的C#应用​​程序,用于侦听两个通讯端口上的传入数据。

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

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这样的尝试将数据发送到端口?

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

4 个答案:

答案 0 :(得分:1)

您是否在“设备管理器”下检查过两个端口是否已配置,已启用并正常工作?

您是否尝试过像SysInternals PortMon这样的东西来监控端口?

您是否尝试过像Hyperterm这样的尝试将数据发送到端口?

答案 1 :(得分:1)

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

答案 2 :(得分:1)

提示:使用此工具测试您的应用程序,它会创建虚拟COM端口 http://sourceforge.net/projects/com0com/

答案 3 :(得分:0)

我要猜测(我还能做什么?)你在ReceiveChars方法中做了一些顽皮的事情(也许你正在更新GUI,而不使用Invoke),这就是在阻止ReceiveChars方法再次被召唤。