win32: prepend the com port path with '\\.\', so com ports > 9 can be accessed. thank...
authorLars Op den Kamp <lars@opdenkamp.eu>
Thu, 10 Nov 2011 17:30:00 +0000 (18:30 +0100)
committerLars Op den Kamp <lars@opdenkamp.eu>
Thu, 10 Nov 2011 18:00:25 +0000 (19:00 +0100)
src/lib/platform/windows/serialport.cpp

index df619ef048c31ac03c5f90588a443edf42e5d141..9e4cc486e64138a56185f1f3d30b357cc74005bd 100644 (file)
@@ -65,8 +65,9 @@ CSerialPort::~CSerialPort(void)
 
 bool CSerialPort::Open(string name, uint32_t baudrate, uint8_t databits, uint8_t stopbits, uint8_t parity)
 {
+  CStdString strComPath = "\\\\.\\" + name;
   CLockObject lock(&m_mutex);
-  m_handle = CreateFile(name.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
+  m_handle = CreateFile(strComPath.c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
   if (m_handle == INVALID_HANDLE_VALUE)
   {
     m_error = "Unable to open COM port";
@@ -77,7 +78,7 @@ bool CSerialPort::Open(string name, uint32_t baudrate, uint8_t databits, uint8_t
   COMMCONFIG commConfig = {0};
   DWORD dwSize = sizeof(commConfig);
   commConfig.dwSize = dwSize;
-  if (GetDefaultCommConfig(name.c_str(), &commConfig,&dwSize))
+  if (GetDefaultCommConfig(strComPath.c_str(), &commConfig,&dwSize))
   {
     if (!SetCommConfig(m_handle, &commConfig,dwSize))
     {