Initialize the COM port defaults before opening to avoid a very short
authordeuce <deuce@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 6 May 2014 18:28:53 +0000 (18:28 +0000)
committerdeuce <deuce@01035d8c-6547-0410-b346-abe4f91aad63>
Tue, 6 May 2014 18:28:53 +0000 (18:28 +0000)
RTS/DTR transient on open.

git-svn-id: https://svn.code.sf.net/p/freetel/code@1592 01035d8c-6547-0410-b346-abe4f91aad63

fdmdv2/src/fdmdv2_main.cpp

index ebb4c646fa46cbfe7f1dbbae71689423eddce9d0..ba157fd3bcde85ae826b4eadcb7ba12be4118d75 100644 (file)
@@ -580,9 +580,20 @@ bool MainFrame::openComPort(const char *name)
                closeComPort();
 #ifdef _WIN32
        {
+               COMMCONFIG CC;
+               DWORD CCsize=sizeof(CC);
                COMMTIMEOUTS timeouts;
                DCB     dcb;
 
+               if(GetDefaultCommConfigA(name, &CC, &CCsize)) {
+                       CC.dcb.fOutxCtsFlow             = FALSE;
+                       CC.dcb.fOutxDsrFlow             = FALSE;
+                       CC.dcb.fDtrControl              = DTR_CONTROL_DISABLE;
+                       CC.dcb.fDsrSensitivity  = FALSE;
+                       CC.dcb.fRtsControl              = RTS_CONTROL_DISABLE;
+                       SetDefaultCommConfigA(name, &CC, CCsize);
+               }
+
                if((com_handle=CreateFileA(name
                        ,GENERIC_READ|GENERIC_WRITE     /* Access */
                        ,0                                                              /* Share mode */