[QGIS Commit] r14339 - in trunk/qgis/src: app/gps
core/gps/qextserialport
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Tue Oct 5 08:30:43 EDT 2010
Author: jef
Date: 2010-10-05 12:30:43 +0000 (Tue, 05 Oct 2010)
New Revision: 14339
Modified:
trunk/qgis/src/app/gps/qgsgpsinformationwidget.cpp
trunk/qgis/src/core/gps/qextserialport/qextserialenumerator.cpp
Log:
fix com port detection on windows
Modified: trunk/qgis/src/app/gps/qgsgpsinformationwidget.cpp
===================================================================
--- trunk/qgis/src/app/gps/qgsgpsinformationwidget.cpp 2010-10-05 09:29:34 UTC (rev 14338)
+++ trunk/qgis/src/app/gps/qgsgpsinformationwidget.cpp 2010-10-05 12:30:43 UTC (rev 14339)
@@ -889,7 +889,9 @@
QList< QPair<QString, QString> > ports = QgsGPSDetector::availablePorts();
mCboDevices->clear();
- for ( int i = 0; i < ports.size(); i++ )
+
+ // add devices to combobox, but skip gpsd which is first.
+ for ( int i = 1; i < ports.size(); i++ )
{
mCboDevices->addItem( ports[i].second, ports[i].first );
}
Modified: trunk/qgis/src/core/gps/qextserialport/qextserialenumerator.cpp
===================================================================
--- trunk/qgis/src/core/gps/qextserialport/qextserialenumerator.cpp 2010-10-05 09:29:34 UTC (rev 14338)
+++ trunk/qgis/src/core/gps/qextserialport/qextserialenumerator.cpp 2010-10-05 12:30:43 UTC (rev 14339)
@@ -85,7 +85,27 @@
//static
void QextSerialEnumerator::setupAPIScan(QList<QextPortInfo> & infoList)
{
+#if 0
enumerateDevicesWin(GUID_DEVCLASS_PORTS, &infoList);
+#else
+ // just iterate the com ports.
+ // looks like GUID_DEVCLASS_PORTS doesn't find them all.
+ for( unsigned int i = 0 ; i < 256; i++ )
+ {
+ QString port = "\\\\.\\COM" + QString::number(i);
+
+ HANDLE hPort = ::CreateFile(port.toAscii(), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
+ if( hPort == INVALID_HANDLE_VALUE )
+ continue;
+
+ QextPortInfo info;
+ info.friendName = QString("COM%1:").arg( i );
+ info.portName = port;
+ infoList.append(info);
+
+ CloseHandle( hPort );
+ }
+#endif
}
void QextSerialEnumerator::enumerateDevicesWin( const GUID & guid, QList<QextPortInfo>* infoList )
More information about the QGIS-commit
mailing list