-}
-
-CSerialPort::~CSerialPort(void)
-{
- Close();
-}
-
-bool CSerialPort::Open(string name, uint32_t baudrate, uint8_t databits, uint8_t stopbits, uint8_t parity)
-{
- CLockObject lock(&m_mutex);
- m_handle = CreateFile(name.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";
- FormatWindowsError(GetLastError(), m_error);
- return false;
- }
-
- COMMCONFIG commConfig = {0};
- DWORD dwSize = sizeof(commConfig);
- commConfig.dwSize = dwSize;
- if (GetDefaultCommConfig(name.c_str(), &commConfig,&dwSize))
- {
- if (!SetCommConfig(m_handle, &commConfig,dwSize))
- {
- m_error = "unable to set default config";
- FormatWindowsError(GetLastError(), m_error);
- }
- }
- else
- {
- m_error = "unable to get default config";
- FormatWindowsError(GetLastError(), m_error);
- }
-
- if (!SetupComm(m_handle, 64, 64))
- {
- m_error = "unable to set up the com port";
- FormatWindowsError(GetLastError(), m_error);
- }
-
- m_iDatabits = databits;
- m_iStopbits = stopbits;
- m_iParity = parity;
- if (!SetBaudRate(baudrate))
- {
- m_error = "unable to set baud rate";
- FormatWindowsError(GetLastError(), m_error);
- Close();
- return false;
- }
-
- if (!SetTimeouts(false))
- {
- m_error = "unable to set timeouts";
- FormatWindowsError(GetLastError(), m_error);
- Close();
- return false;
- }
-
- m_bIsOpen = true;
- return m_bIsOpen;
-}
-
-bool CSerialPort::SetTimeouts(bool bBlocking)
-{
- if (m_handle == INVALID_HANDLE_VALUE)