我正在開發一個C#.net應用程序,我在其中與USB 3G調制解調器Com端口進行通信以發送和接收消息。如何從端口列表中獲取用戶界面Com端口?
下面是我目前使用的用於獲取端口的列表,我的代碼:
string[] ports = SerialPort.GetPortNames();
現在我想從端口的列表只UI端口,例如,如果3G調制解調器有兩個端口說的COM4和COM6,其中第一個是應用程序接口端口,另一個是UI端口。
如何以編程方式獲取UI端口?
我正在開發一個C#.net應用程序,我在其中與USB 3G調制解調器Com端口進行通信以發送和接收消息。如何從端口列表中獲取用戶界面Com端口?
下面是我目前使用的用於獲取端口的列表,我的代碼:
string[] ports = SerialPort.GetPortNames();
現在我想從端口的列表只UI端口,例如,如果3G調制解調器有兩個端口說的COM4和COM6,其中第一個是應用程序接口端口,另一個是UI端口。
如何以編程方式獲取UI端口?
串口不知道在另一端連接了什麼。您需要嘗試打開每一個,併發送像"AT\r\n"
這樣的東西,並期望"OK"
檢查您的調制解調器連接了哪一個。
編輯:
using System;
using System.IO.Ports;
using System.Collections;
using System.Collections.Generic;
using System.Text;
private static bool IsModem(string PortName)
{
SerialPort port= null;
try
{
port = new SerialPort(PortName,9600); //9600 baud is supported by most modems
port.ReadTimeout = 200;
port.Open();
port.Write("AT\r\n");
//some modems will return "OK\r\n"
//some modems will return "\r\nOK\r\n"
//some will echo the AT first
//so
for(int i=0;i<4;i++) //read a maximum of 4 lines in case some other device is posting garbage
{
string line = port.ReadLine();
if(line.IndexOf("OK")!=-1)
{
return true;
}
}
return false;
}
catch(Exception ex)
{
// You should implement more specific catch blocks so that you would know
// what the problem was, ie port may be in use when you are trying
// to test it so you should let the user know that as he can correct that fault
return false;
}
finally
{
if(port!=null)
{
port.Close();
}
}
}
public static string[] FindModems()
{
List<string> modems = new List<string>();
string[] ports = SerialPort.GetPortNames();
for(int i =0;i<ports.Length;i++)
{
if(IsModem(ports[i]))
{
modems.Add(ports[i]);
}
}
return modems.ToArray();
}
像這樣的事情應該工作,我沒有測試它(不能測試它)。
感謝SS'Kain'的答覆,請你解釋它是如何工作的,或者如果有任何代碼示例,那麼它更可期待 – hi0001234d 2012-08-08 17:24:05
我不能回答這個問題,但我很好奇,因爲我從來沒有聽說過與UI端口關聯的「UI」。 (可能只是我的無知。)你能告訴我這個嗎?什麼是UI端口? – David 2012-08-08 13:22:45
你是什麼意思的UI端口?調制解調器的用戶界面?還是你通過串口線連接到電腦?這是不是發展? – user957902 2012-08-08 13:24:12
好user957902我正在談論GSM調制解調器的COm端口這個調制解調器與兩個COM端口一起工作,一個用於與互聯網數據傳輸的應用通信,另一個用於用戶ibterface用於處理另一個GSM相關任務,例如SMS,呼叫等。 – hi0001234d 2012-08-08 17:23:36