asp.net アプリケーションから C# のモデムを使用して SMS を送信することを計画しています。プロジェクトは別のプロジェクトに統合されるため、COM ポートに入力するためのユーザー入力用のフィールドはありません。ポート番号を取得するにはどうすればよいですか?私のモデムはC#から接続されています。
ありがとう、サーガル。
asp.net アプリケーションから C# のモデムを使用して SMS を送信することを計画しています。プロジェクトは別のプロジェクトに統合されるため、COM ポートに入力するためのユーザー入力用のフィールドはありません。ポート番号を取得するにはどうすればよいですか?私のモデムはC#から接続されています。
ありがとう、サーガル。
モデムが特定のポートに接続されていることを確認するには、ATコマンドをこのポートに送信します。以下のこの関数は、現在のCOMポートでモデムが見つかった場合にtrueを返します。
private bool CheckExistingModemOnComPort(SerialPort serialPort)
{
if ((serialPort == null) || !serialPort.IsOpen)
return false;
// Commands for modem checking
string[] modemCommands = new string[] { "AT", // Check connected modem. After 'AT' command some modems autobaud their speed.
"ATQ0" }; // Switch on confirmations
serialPort.DtrEnable = true; // Set Data Terminal Ready (DTR) signal
serialPort.RtsEnable = true; // Set Request to Send (RTS) signal
string answer = "";
bool retOk = false;
for (int rtsInd = 0; rtsInd < 2; rtsInd++)
{
foreach (string command in modemCommands)
{
serialPort.Write(command + serialPort.NewLine);
retOk = false;
answer = "";
int timeout = (command == "AT") ? 10 : 20;
// Waiting for response 1-2 sec
for (int i = 0; i < timeout; i++)
{
Thread.Sleep(100);
answer += serialPort.ReadExisting();
if (answer.IndexOf("OK") >= 0)
{
retOk = true;
break;
}
}
}
// If got responses, we found a modem
if (retOk)
return true;
// Trying to execute the commands without RTS
serialPort.RtsEnable = false;
}
return false;
}
次の段階では、モデムからいくつかのデータを収集できます。