diff --git a/src/comio/comio.h b/src/comio/comio.h index a68eb354e0fdb5fd505c60eb7d5495018e480f56..e42a365b983beab1726b476067284209d75c7627 100644 --- a/src/comio/comio.h +++ b/src/comio/comio.h @@ -69,6 +69,8 @@ extern "C" { COM_HANDLE comOpen(const char* device); BOOL comClose(COM_HANDLE); +long comGetBaudRate(COM_HANDLE); +BOOL comSetBaudRate(COM_HANDLE, ulong rate); int comGetModemStatus(COM_HANDLE); int comRaiseDTR(COM_HANDLE); int comLowerDTR(COM_HANDLE); diff --git a/src/comio/comio_win32.c b/src/comio/comio_win32.c index bbc5de3f8e8fe461db4690ad6c2d93ba905d4e7e..3d129ca83e5f6129a90a45c2ec9c03854bb1c7f2 100644 --- a/src/comio/comio_win32.c +++ b/src/comio/comio_win32.c @@ -69,6 +69,28 @@ BOOL comClose(COM_HANDLE handle) return CloseHandle(handle); } +long comGetBaudRate(COM_HANDLE handle) +{ + DCB dcb; + + if(GetCommState(handle, &dcb)!=TRUE) + return COM_ERROR; + + return dcb.BaudRate; +} + +BOOL comSetBaudRate(COM_HANDLE handle, unsigned long rate) +{ + DCB dcb; + + if(GetCommState(handle, &dcb)!=TRUE) + return FALSE; + + dcb.BaudRate=rate; + + return SetCommState(handle, &dcb); +} + int comGetModemStatus(COM_HANDLE handle) { DWORD status=0;