GPS, как я знаю, работает с физическим или виртуальным последовательным COM-портом (то есть, через USB).Поскольку только одно приложение может открывать com-порт за раз, при поиске gps-порта не должно быть программы, использующей gps.
Вы уже дали ответ «loop (for) на всех портах и serche for».
Обратите внимание, что приведенный ниже пример представляет собой непроверенный пример того, как это может работать.Не стесняйтесь обновлять эту вики-страницу, чтобы исправить возможные ошибки и добавить недостающие функции.
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;
}