示例#1
0
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( ) ;

}
示例#2
0
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;
}