私はコンピュータのシリアルポートと(ATコマンドを使用して)通信するためのプログラムをC#で作成しました。 ポートを見つけるためのコードは次のようになります。C#を使用してWWANモデムのシリアルポートと通信する方法
ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_PnPEntity");
//This loops through the results from the searcher
foreach (ManagementObject queryObj in searcher.Get())
{
//If it finds the port,
if (queryObj["Caption"].ToString().Contains("##### Wireless AT"))
{
//it writes it to the file
sw.WriteLine("serial port : {0}", queryObj["Caption"] + "\n");
sw.Flush();
}
このコードは、私たちの古いモデムで見事に動作しますが、それは、COMポートを介して検索し、ATワイヤレスコマンドポートを検索します。これは私のATコマンドを最終的に送るポートです。ここで私は問題は、我々は新しいモデムで、私たちのコンピュータを展開していており、これらは異なる動作
を探していたポートのデバイスマネージャの二つの絵は...
新しいモデムは、デバイスマネージャのポートの物理的なリストを持つシリアルポートを使用しません。また、シリアルポートは、Win32_PnpEntity
検索に表示されません...シリアルポートは、モデムのプロパティの下に表示されます。
私の質問は、どのように私はC#を使用してモデムのシリアルポートを見つけるのですかですか?
私が詳しく説明できる方法があるかどうか教えてください。
- ルカ
は、うーん...それは私に 'System.NullReferenceException'を与えています。 「Your Modem String」の代わりに「#####ワイヤレスWWANモデム」を配置していますが、問題は何ですか? –
デバイスIDを使用してポート名を追跡できますか? –
デバッグ:行にブレークポイントを設定します。var searcher =。コマンドを実行してsearcherの値を調べます。ヌルの場合は、検索されたWMIの場所にシリアルポートがないため、照会する適切な場所を特定する必要があります。searcherに値がある場合は、デバッガウォッチウィンドウでオブジェクトを開き、データ内のモデムを探します。見つかったら、文字列を実際の値に置き換えます。 –