我有两个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这样的尝试将数据发送到端口?
尝试在单独的超级终端中打开两个通信端口,但无法打开第二个通信端口。
答案 0 :(得分:1)
您是否在“设备管理器”下检查过两个端口是否已配置,已启用并正常工作?
您是否尝试过像SysInternals PortMon这样的东西来监控端口?
您是否尝试过像Hyperterm这样的尝试将数据发送到端口?
答案 1 :(得分:1)
看起来问题只是两个Conexant调制解调器不能同时在同一台PC上运行。我从另一个供应商处安装了另一个调制解调器,我能够打开两个com端口。
答案 2 :(得分:1)
提示:使用此工具测试您的应用程序,它会创建虚拟COM端口 http://sourceforge.net/projects/com0com/
答案 3 :(得分:0)
我要猜测(我还能做什么?)你在ReceiveChars方法中做了一些顽皮的事情(也许你正在更新GUI,而不使用Invoke),这就是在阻止ReceiveChars方法再次被召唤。