Bugfix: Use correct path when opening serial devices on Windows
This commit is contained in:
parent
22117c7ece
commit
07df6b7a1f
1 changed files with 8 additions and 3 deletions
|
|
@ -53,7 +53,12 @@ bool serial_port::serial_open()
|
|||
| Windows-specific code path for serial port opening |
|
||||
\*-----------------------------------------------------*/
|
||||
#ifdef _WIN32
|
||||
file_descriptor = CreateFile(port_name, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
|
||||
// On Windows, ports above 9 need to have "\\.\" prepended to their path. For ports below 9, this is optional.
|
||||
// https://support.microsoft.com/en-us/topic/howto-specify-serial-ports-larger-than-com9-db9078a5-b7b6-bf00-240f-f749ebfd913e
|
||||
char full_path[100];
|
||||
snprintf(full_path, sizeof(full_path), "\\\\.\\%s", port_name);
|
||||
|
||||
file_descriptor = CreateFile(full_path, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
|
||||
|
||||
if((int)file_descriptor < 0)
|
||||
{
|
||||
|
|
@ -195,7 +200,7 @@ bool serial_port::serial_open(const char * name)
|
|||
\*---------------------------------------------------------*/
|
||||
bool serial_port::serial_open(const char* name, unsigned int baud)
|
||||
{
|
||||
strcpy(port_name, name);
|
||||
snprintf(port_name,sizeof(port_name),"%s",name);
|
||||
baud_rate = baud;
|
||||
return serial_open();
|
||||
}
|
||||
|
|
@ -210,7 +215,7 @@ void serial_port::serial_close()
|
|||
| Windows-specific code path for serial close |
|
||||
\*-----------------------------------------------------*/
|
||||
#ifdef _WIN32
|
||||
|
||||
CloseHandle(file_descriptor);
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------*\
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue