⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 chapt12dlg.cpp

📁 CHAPT12Chapt12.cpp Part of the 32-bit test progrma for the Win32Port class. CHAPT12Chapt12.dsp The
💻 CPP
📖 第 1 页 / 共 2 页
字号:
{
    if ( m_pPort )
	    m_UpdateButton.EnableWindow( TRUE );
}

void CChapt12Dlg::OnSelchangeBaudRate() 
{
    if ( m_pPort )
	    m_UpdateButton.EnableWindow( TRUE );
}

void CChapt12Dlg::OnEditchangeParity() 
{
    if ( m_pPort )
	    m_UpdateButton.EnableWindow( TRUE );
}

void CChapt12Dlg::OnSelchangeParity() 
{
    if ( m_pPort )
	    m_UpdateButton.EnableWindow( TRUE );
}

void CChapt12Dlg::OnEditupdateStopBits() 
{
    if ( m_pPort )
	    m_UpdateButton.EnableWindow( TRUE );
}

void CChapt12Dlg::OnSelchangeStopBits() 
{
    if ( m_pPort )
	    m_UpdateButton.EnableWindow( TRUE );
}

void CChapt12Dlg::OnEditupdateWordSize() 
{
    if ( m_pPort )
	    m_UpdateButton.EnableWindow( TRUE );
}

void CChapt12Dlg::OnSelchangeWordSize() 
{
	// TODO: Add your control notification handler code here
	
}

void CChapt12Dlg::OnRts() 
{
	if ( !m_pPort )
		return;
    int check_state = BST_INDETERMINATE;
    switch ( m_pPort->Rts( SendDlgItemMessage( IDC_RTS, BM_GETCHECK, 0, 0 ) == BST_CHECKED ) ) {
        case 0 : check_state = BST_UNCHECKED; break;
        case 1 : check_state = BST_CHECKED; break;
    }
    SendDlgItemMessage( IDC_RTS, BM_SETCHECK, check_state, 0 );
}

void CChapt12Dlg::OnDtr() 
{
	if ( !m_pPort )
		return;
    int check_state = BST_INDETERMINATE;
    switch ( m_pPort->Dtr( SendDlgItemMessage( IDC_DTR, BM_GETCHECK, 0, 0 ) == BST_CHECKED ) ) {
        case 0 : check_state = BST_UNCHECKED; break;
        case 1 : check_state = BST_CHECKED; break;
    }
    SendDlgItemMessage( IDC_DTR, BM_SETCHECK, check_state, 0 );
}

void CChapt12Dlg::OnDtrDsr() 
{
	if ( !m_pPort )
		return;
	bool val = SendDlgItemMessage( IDC_DTR_DSR, BM_GETCHECK, 0, 0 ) == BST_CHECKED;
    m_pPort->DtrDsrHandshaking( val );
	if ( val == 0 )
		OnDtr();
}

void CChapt12Dlg::OnRtsCts() 
{
	if ( !m_pPort )
		return;
	bool val = SendDlgItemMessage( IDC_RTS_CTS, BM_GETCHECK, 0, 0 ) == BST_CHECKED;
    m_pPort->RtsCtsHandshaking( val );
	if ( val == 0 )
		OnRts();
}

void CChapt12Dlg::OnXonXoff() 
{
	if ( !m_pPort )
		return;
	bool val = SendDlgItemMessage( IDC_XON_XOFF, BM_GETCHECK, 0, 0 ) == BST_CHECKED;
    m_pPort->XonXoffHandshaking( val );
}


LRESULT CChapt12Dlg::OnRxNotify( WPARAM wParam, LPARAM lParam )
{
	if ( m_eReading == SUPPRESS_READING || !m_pPort || m_hConsoleOutput == INVALID_HANDLE_VALUE )
		return 0;
	if ( m_eReading == READ_BYTES )  {
	    for ( ; ; ) {
	        int c = m_pPort->Read();
    		if ( c < 0 )
	    		break;
		    char c1 = c;
		    DWORD written = 0;
		    WriteConsole( m_hConsoleOutput, &c1, 1, &written, 0 );
		}
	} else {
	    for ( ; ; ) {
			char buffer[ 129 ];
	        int result = m_pPort->Read( buffer, 128 ) ;
			if ( m_pPort->ByteCount == 0 )
				break;
		    DWORD written = 0;
		    WriteConsole( m_hConsoleOutput, &buffer, m_pPort->ByteCount, &written, 0 );
		}
	}
	return 1;
}

void CChapt12Dlg::OnReadChar() 
{
    int c = m_pPort->Read();
	ostringstream s;
	s << "\nRead <";
	if ( c > 0 )
		s << (char) c;
	else
		s << c;
	s << ">\n";
	DWORD written = 0;
	WriteConsole( m_hConsoleOutput, s.str().c_str(), s.str().size(), &written, 0 );
}

void CChapt12Dlg::OnDumpStatus() 
{
    char buffer[ 82 ];
	DWORD written = 0;
	for ( int i = 0 ; i < m_pPort->DebugLineCount() ; i++ ) {
	    m_pPort->FormatDebugOutput( buffer, i );
		strcat( buffer, "\n" );
		WriteConsole( m_hConsoleOutput, buffer, strlen( buffer ), &written, 0 );
	}
}

LRESULT CChapt12Dlg::OnParityErrorNotify( WPARAM, LPARAM )
{
	if ( !m_bErrorNotification )
		return 0;
	int result = m_pPort->ParityError( true );
	if ( result )
	    SetDlgItemInt( IDC_PARITY_ERROR_COUNT, ++m_iParityErrorCount );
    return 1;
}

LRESULT CChapt12Dlg::OnFramingErrorNotify( WPARAM, LPARAM )
{
	if ( !m_bErrorNotification )
		return 0;
	int result = m_pPort->FramingError( true );
	if ( result )
	    SetDlgItemInt( IDC_FRAMING_ERROR_COUNT, ++m_iFramingErrorCount );
    return 1;
}

LRESULT CChapt12Dlg::OnHardwareOverrunErrorNotify( WPARAM, LPARAM )
{
	if ( !m_bErrorNotification )
		return 0;
	int result = m_pPort->HardwareOverrunError( true );
	if ( result )
		SetDlgItemInt( IDC_HARDWARE_OVERRUN_ERROR_COUNT, ++m_iHardwareOverrunErrorCount );
    return 1;
}

LRESULT CChapt12Dlg::OnSoftwareOverrunErrorNotify( WPARAM, LPARAM )
{
	if ( !m_bErrorNotification )
		return 0;
	int result = m_pPort->SoftwareOverrunError( true );
	if ( result )
		SetDlgItemInt( IDC_SOFTWARE_OVERRUN_ERROR_COUNT, ++m_iSoftwareOverrunErrorCount );
    return 1;
}

LRESULT CChapt12Dlg::OnBreakDetectNotify( WPARAM, LPARAM )
{
	if ( !m_bErrorNotification )
		return 0;
	int result = m_pPort->BreakDetect( true );
	if ( result )
	    SetDlgItemInt( IDC_BREAK_DETECT_COUNT, ++m_iBreakDetectCount );
    return 1;
}

void CChapt12Dlg::OnErrorNotification() 
{
	m_bErrorNotification = SendDlgItemMessage( IDC_ERROR_NOTIFICATION, BM_GETCHECK, 0, 0 ) == BST_CHECKED;
	if ( m_bErrorNotification ) {
		OnParityErrorNotify( 0, 0 );
		OnFramingErrorNotify( 0, 0 );
		OnHardwareOverrunErrorNotify( 0, 0 );
		OnSoftwareOverrunErrorNotify( 0, 0 );
		OnBreakDetectNotify( 0, 0 );
	}
}


void CChapt12Dlg::OnSendBreak() 
{
    int duration = GetDlgItemInt( IDC_BREAK_DURATION );
	if ( duration == 0 )
		duration = 250;
	m_pPort->Break( duration );
}

LRESULT CChapt12Dlg::OnCtsNotify( WPARAM state, LPARAM )
{
	if ( state )
		SetDlgItemText( IDC_CTS, "ON" );
	else
		SetDlgItemText( IDC_CTS, "OFF" );
    return 1;
}

LRESULT CChapt12Dlg::OnDsrNotify( WPARAM state, LPARAM )
{
	if ( state )
		SetDlgItemText( IDC_DSR, "ON" );
	else
		SetDlgItemText( IDC_DSR, "OFF" );
    return 1;
}

LRESULT CChapt12Dlg::OnCdNotify( WPARAM state, LPARAM )
{
	if ( state )
		SetDlgItemText( IDC_CD, "ON" );
	else
		SetDlgItemText( IDC_CD, "OFF" );
    return 1;
}

LRESULT CChapt12Dlg::OnRiNotify( WPARAM state, LPARAM )
{
	if ( state == 0 )
	    SetDlgItemInt( IDC_RI, ++m_iRingCount );
    return 1;
}

LRESULT CChapt12Dlg::OnTxNotify( WPARAM state, LPARAM )
{
	if ( !m_bErrorNotification )
		return 0;
	SetDlgItemInt( IDC_TX_EMPTY_COUNT, ++m_iTxNotifyCount );
    if ( m_bSpewing ) {
        static int counter = 0;
        char buf[ 128 ];
        sprintf( buf, 
                 "Packet %d: "
                 "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\n", 
                 counter++ );
        m_pPort->Write( buf );
    }
    return 1;
}

void CChapt12Dlg::OnSelchangeReadType()
{
    int i = SendDlgItemMessage( IDC_READ_TYPE, CB_GETCURSEL, 0, 0 );
	switch ( i ) {
	case 0 : m_eReading = SUPPRESS_READING; break;
	case 1 : m_eReading = READ_BYTES; break;
	case 2 : m_eReading = READ_BUFFERS; break;
	}
	OnRxNotify( 0,0 );
}

void CChapt12Dlg::OnPeekBuffer() 
{
    char buffer[ 3001 ];
	if ( m_pPort->Peek( buffer, 3000 ) == RS232_SUCCESS ) {
		ostringstream s;
		s << "\nPeek saw " << m_pPort->ByteCount << " bytes: <";
		if ( m_pPort->ByteCount > 40 ) {
			buffer[ 40 ] = '\0';
			s << buffer << "...>\n";
		} else {
			s << buffer << ">\n";
		}
		DWORD written = 0;
		WriteConsole( m_hConsoleOutput, s.str().c_str(), s.str().size(), &written, 0 );
	}
}

void CChapt12Dlg::OnFlushRx() 
{
	m_pPort->FlushRXBuffer();
}

void CChapt12Dlg::OnFlushTx() 
{
	m_pPort->FlushTXBuffer();
}

void CChapt12Dlg::OnSpew()
{
    if ( m_bSpewing ) {
        m_bSpewing = false;
        m_SpewButton.SetWindowText( "Start Spew" );
        m_pPort->Write( "Stopping spew...\n" );
    } else {
        m_bSpewing = true;
        m_SpewButton.SetWindowText( "Stop Spew" );
        m_pPort->Write( "Starting to spew...\n" );
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -