タブレット (Windows CE) で GPS のシリアル ポートを検索しようとしています。
これが「COM 3」にあることは知っていますが、プログラムにこれを自動的に見つけてもらいたいのです。つまり、すべてのポートでループ (for) を実行し、これを検索します。
私の質問は、プログラムに「これが私のGPSポートです」と伝えるために「もし」書く必要があるかどうかです。
皆さん、ありがとうございました。
タブレット (Windows CE) で GPS のシリアル ポートを検索しようとしています。
これが「COM 3」にあることは知っていますが、プログラムにこれを自動的に見つけてもらいたいのです。つまり、すべてのポートでループ (for) を実行し、これを検索します。
私の質問は、プログラムに「これが私のGPSポートです」と伝えるために「もし」書く必要があるかどうかです。
皆さん、ありがとうございました。
私が知っているように、Gpsは物理または仮想シリアルCOMポート(つまり、USB経由のCOM)で動作します。一度に 1 つのアプリケーションしか COM ポートを開くことができないため、gps ポートの検索中に gps を使用するプログラムは存在しないはずです。
あなたはすでに「すべてのポートで(for)ループし、forを検索する」という答えを出しました。
以下の例は、それがどのように機能するかをテストしていない scetch であることに注意してください。この wiki ページを自由に更新して、考えられるエラーを修正し、不足している機能を追加してください。
public string FindGpsPort()
{
foreach(string portname in System.IO.Ports.SerialPort.GetPortNames())
{
// using to make shure that the testport is closed after test
using (SerialPort testport = new SerialPort(){PortName = portname})
{
// maybe neccessary to set baudrate, parity, ... of com port
testport.Open();
// to do if error or exception this is not the
// gps port or some software already uses the gps-port
// to do: read some data from port and verify if it is GPS-Data
// if valid return portname ;
}
}
// All com ports tried but not found. throw exception or return error code
return null;
}