void CMainDlg::ThreadConnectFn( ) { WTL::CComboBox port ; port.Attach( GetDlgItem( IDC_COMBO_RS232 ) ) ; int sel = port.GetCurSel( ) ; if ( sel == -1 ){ MessageBox( "Выберите ком-порт" , "Внимание" , MB_OK | MB_ICONWARNING ) ; port.Detach() ; _endthread( ) ; } char szPortName[ 1024 ] ; *szPortName = NULL ; if ( port.GetLBTextLen( sel ) < 1 ) { MessageBox( "Выбрано пустое имя, выберите имя порта, начинающееся с COM.." , "Внимание" , MB_OK | MB_ICONWARNING ) ; port.Detach( ) ; _endthread( ) ; } port.GetLBText( sel , szPortName ) ; port.Detach( ) ; char status[ 1024 ] ; *status = NULL ; sprintf( status , "Попытка подключиться к %s ..." , szPortName ) ; Status( status ) ; BOOL ok = FALSE ; ok = Connect( szPortName ) ; if ( !ok ){ Disconnect() ; sprintf( status , "FAILED!Не могу подкл-ся к %s !!!" , szPortName ) ; StatusAppendLine( status ) ; _endthread( ) ; }else{ sprintf( status , "OK! Подключиться к %s удалось успешно!" , szPortName ) ; StatusAppendLine( status ) ; } /* вставить обработку отсутствия АЦП if ( AdcGetCount( ) < 1 ){ sprintf( status , "WARN! Не найдено ни одного модуля АЦП" ) ; StatusAppendLine( status ) ; Disconnect( ) ; sprintf( status , "OK! Произведено отключение от %s" , szPortName ) ; StatusAppendLine( status ) ; _endthread( ) ; }*/ m_status = CONNECTED ; UpdateControls( ) ; HANDLE h = TableGetHandle( 0 ) ; if ( h ) TableCallback( h , UpdatePos ) ; _endthread( ) ; }
LRESULT CMainDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { SetDlgItemInt( IDC_EDIT_COUNT , 41700 , FALSE ) ; // Определяем свободные порты HANDLE hPort = INVALID_HANDLE_VALUE ; char szPortName[ 1024 ] ; WTL::CComboBox combo ; combo.Attach( GetDlgItem( IDC_COMBO_RS232 ) ) ; int count = combo.GetCount( ) ; if ( count > 0 ){ for ( int i = 0 ; i < count ; i++ ) combo.DeleteString( 0 ) ; } for ( UINT8 i = 1 ; i < 255 ; i++ ){ *szPortName = NULL ; sprintf( szPortName , "COM%d" , i ) ; hPort = CreateFile( szPortName , GENERIC_READ | GENERIC_WRITE , NULL , NULL , OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL ) ; DWORD dwError = GetLastError( ) ; if ( hPort == INVALID_HANDLE_VALUE ) continue ; combo.AddString( szPortName ) ; CloseHandle( hPort ) ; hPort = INVALID_HANDLE_VALUE ; } count = combo.GetCount( ) ; if ( count > 0 ) combo.SetCurSel( 0 ) ; combo.Detach( ) ; UpdateControls( ) ; Status( "Программа запущена..." ) ; return TRUE; }