亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chapt03.cpp

?? DOS下采用中斷接收數據的串口通訊的例子,很難找到的好東西!
?? CPP
字號:
//
//  CHAPT03.CPP
//
//  Serial Communications: A C++ Developer's Guide, 2nd Edition
//  by Mark Nelson, IDG Books, 1999
//
//  Please see the book for information on usage.
//
//  This test program is used to test the PC8250 classe.  To
//  build it using your compiler, see CHAPT03.MAK
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
#include "rs232.h"
#include "textwind.h"
#include "pc8250.h"

//
// The following short section of definitions are used to customize
// the program.  You can hard code 1 or 2 ports, and select various
// port setups.  If you want to use a different number it's pretty
// easy to make other configurations work.
//
// In the one port configuration, I define the first port used to
// be COM1.  If your system uses a serial mouse, you might want to
// change this to COM2.
//

#define PORT_COUNT 1

RS232PortName port_names[ 4 ] = { COM1, COM2, COM3, COM4 };
TextWindow *Windows[ PORT_COUNT ] = { 0 };
RS232 *Ports[ PORT_COUNT ] = { 0 };
RS232 *Port = 0;
int window_parms[ PORT_COUNT ][ 4 ] = {
#if PORT_COUNT == 1
                               { 1,  1,  78, 24 }
#else
                               { 1,  1,  38, 24 },
                               { 1, 41,  38, 24 }
#endif
                                };
int Spewing[ PORT_COUNT ] = { 0 };
long SpewCount[ PORT_COUNT ] = { 0L };
int Reading[ PORT_COUNT ] = { 0 };

void HandleCommand( int key );
void DrawHelp( void );
void DrawDump( void );

TextWindow *UserWindow;
TextWindow *StatusLine;
int FocusWindow = -1;
int Done = 0;
int Helping = 1;
long NextStatusUpdate = 0;

int main()
{
    int i;
    int c;
    char buffer[ 81 ];

    Set43LineMode( 1 );
    TextWindow *temp = new TextWindow( 0, 0, 80, 43 );
    UserWindow = new TextWindow( 27, 0, 80, 12 );
    StatusLine = new TextWindow( 39, 0, 80, 1 );
    temp->Clear();
    delete temp;
    UserWindow->Clear();
    StatusLine->Clear();

    i=0;
    //for ( i = 0 ; i < PORT_COUNT ; i++ ) 
	{
        Ports[ 0 ] = new PC8250( port_names[ 3 ],
                                 57600L, 'N', 8, 1, 1, 1 );
        if ( Ports[ i ]->ErrorStatus() == RS232_SUCCESS ) {
            Windows[ i ] = new TextWindow( window_parms[ i ][ 0 ],
                                           window_parms[ i ][ 1 ],
                                           window_parms[ i ][ 2 ],
                                           window_parms[ i ][ 3 ] );
            Windows[ i ]->Clear();
            Windows[ i ]->AddBorder();
            Windows[ i ]->SetPosition( 0, 0 );
            if ( FocusWindow == -1 )
                FocusWindow = i;
            Reading[ i ] = 1;
        } else {
            *StatusLine << "\nError opening port "
                        << itoa( i, buffer, 10 )
                        << "  status = "
                        << Ports[ i ]->ErrorName(
                                  Ports[ i ]->ErrorStatus() )
                        << ".  Hit any key to continue...";
            while ( Windows[ FocusWindow ]->ReadKey() == 0 )
                ;
            *StatusLine << '\n';
        }
    }
    DrawHelp();
    Port = Ports[ FocusWindow ];
    while ( FocusWindow != -1 && !Done ) {
        c = Windows[ FocusWindow ]->ReadKey();
        if ( c > 255 ) {
            HandleCommand( c );
            Windows[ FocusWindow ]->Goto();
        } else if ( c != 0 )
        Port->Write( c );
        for ( i = 0 ; i < PORT_COUNT ; i++ ) {
            if ( Spewing[ i ] && Ports[ i ]->TXSpaceUsed() == 0 ) {
                sprintf( buffer,
                         "Spewing packet %ld from port %d\r\n",
                         SpewCount[ i ]++,
                         i );
                Ports[ i ]->Write( buffer );
            }
            if ( Reading[ i ] ) {
                Ports[ i ]->Read( buffer, 80 );
                if ( Ports[ i ]->ByteCount > 0 ) {
                    *Windows[ i ] << buffer;
                    if ( i != FocusWindow )
                        Windows[ FocusWindow ]->Goto();
                }
            }
        }
        if ( !Helping ) {
            if ( ReadTime() > NextStatusUpdate ) {
                DrawDump();
                NextStatusUpdate = ReadTime() + 500;
            }
        }
    }
    for ( i = 0 ; i < PORT_COUNT ; i++ ) {
        if ( Windows[ i ] )
            delete Windows[ i ];
        delete Ports[ i ];
    }
    Set43LineMode( 0 );
    return 0;
}

void HandleCommand( int c )
{
    char buffer[ 11 ];
    RS232Error status;
    int result;

    *StatusLine << '\n';
    switch ( c ) {
        case F1 :
            Helping = !Helping;
            UserWindow->Clear();
            if ( Helping )
                DrawHelp();
            return;
        case F2 :
            do
                FocusWindow = ++FocusWindow % PORT_COUNT;
            while ( Windows[ FocusWindow ] == 0 );
            Port = Ports[ FocusWindow ];
            if ( !Helping )
                UserWindow->Clear();
            Windows[ FocusWindow ]->Goto();
            return;
        case F3 :
            Spewing[ FocusWindow ] = !Spewing[ FocusWindow ];
            Windows[ FocusWindow ]->AddBorder();
            if ( Spewing[ FocusWindow ] )
                Windows[ FocusWindow ]->DisplayTitle( "Spewing" );
            return;
        case F4 :
            Reading[ FocusWindow ] = !Reading[ FocusWindow ];
            *StatusLine << "Window "
                        << itoa( FocusWindow, buffer, 10 );
            *StatusLine << " reading flag is "
                        << itoa( Reading[ FocusWindow ], buffer, 10 );
            return;
        case F5 :
            ReadLine( "New baud rate:", buffer, 10 );
            status = Port->Set( atol( buffer ) );
            *StatusLine << "Set baud rate to "
                        << ltoa( atol( buffer ), buffer, 10 )
                        << " returns status of: ";
            break;
        case F6 :
            ReadLine( "New parity:", buffer, 10 );
            status = Port->Set( UNCHANGED, buffer[ 0 ] );
            *StatusLine << "Set parity to "
                        << buffer[ 0 ]
                        << " returns status of: ";
            break;
        case F7 :
            ReadLine( "New word length:", buffer, 10 );
            status = Port->Set( UNCHANGED, UNCHANGED, atoi( buffer ) );
            *StatusLine << "Set word length to "
                        << itoa( atoi( buffer ), buffer, 10 )
                        << " returns status of: ";
            break;
        case F8 :
            ReadLine( "New stop bits:", buffer, 10 );
            status = Port->Set( UNCHANGED,
                                UNCHANGED,
                                UNCHANGED,
                                atoi( buffer ) );
            *StatusLine << "Set stop bits to "
                        << itoa( atoi( buffer ), buffer, 10 )
                        << " returns status of: ";
            break;
        case F9 :
            status = (RS232Error) Port->Break();
            *StatusLine << "SendBreak returns: ";
            break;
        case F10 :
            Done = 1;
            return;
        case ALT_F1 :
            result = Port->XonXoffHandshaking();
            status = (RS232Error) Port->XonXoffHandshaking( !result );
            *StatusLine << "Toggle XON/XOFF handshaking returns: ";
            if ( status >= 0 ) {
                *StatusLine << itoa( status, buffer, 10 );
                return;
            }
            break;
        case ALT_F2 :
            result = Port->RtsCtsHandshaking();
            status = (RS232Error) Port->RtsCtsHandshaking( !result );
            *StatusLine << "Toggle RTS/CTS handshaking returns: ";
            if ( status >= 0 ) {
                *StatusLine << itoa( status, buffer, 10 );
                return;
            }
            break;
        case ALT_F3 :
            result = Port->DtrDsrHandshaking();
            status = (RS232Error) Port->DtrDsrHandshaking( !result );
            *StatusLine << "Toggle DTR/DSR handshaking returns: ";
            if ( status >= 0 ) {
                *StatusLine << itoa( status, buffer, 10 );
                return;
            }
            break;
        case ALT_F4 :
            status = (RS232Error) Port->Rts( !Port->Rts() );
            *StatusLine << "Toggle RTS returns: ";
            if ( status >= 0 ) {
                *StatusLine << itoa( status, buffer, 10 );
                return;
            }
            break;
        case ALT_F5 :
            status = (RS232Error) Port->Dtr( !Port->Dtr() );
            *StatusLine << "Toggle Dtr returns: ";
            if ( status >= 0 ) {
                *StatusLine << itoa( status, buffer, 10 );
                return;
            }
            break;
        case ALT_F6 :
            status = (RS232Error) Port->FlushRXBuffer();
            *StatusLine << "Flush RX Buffer returns: ";
            break;
        case ALT_F7 :
            status = (RS232Error) Port->FlushTXBuffer();
            *StatusLine << "Flush TX Buffer returns: ";
            break;
        case ALT_F8 :
            status = (RS232Error) Port->Peek();
            *StatusLine << "Peek count: "
                        << itoa( Port->ByteCount, buffer, 10 )
                        << "  ";
            if ( status >= 0 ) {
                if ( Port->ByteCount > 0 ) {
                    *StatusLine << "Char: ";
                    if ( isprint( status ) )
                        *StatusLine << (char) status;
                    else
                        *StatusLine << '<'
                                    << itoa( status, buffer, 16 )
                                    << '>';
                }
                return;
            }
            *StatusLine << "Status: ";
            break;
        case ALT_F9 :
            status = (RS232Error) Port->Read();
            if ( status >= 0 ) {
                *Windows[ FocusWindow ] << (char) status;
                return;
            }
            *StatusLine << "Read character returns: ";
            break;
        case ALT_F10 :
            {
                void *p = malloc( 1024 );
                if ( !p )
                    return;
                memset( p, 'A', 1024 );
                status = (RS232Error) Port->Write( p, 1024, 2500 );
                free( p );
            }
            *StatusLine << "Write 1K ByteCount: "
                        << itoa( Port->ByteCount, buffer, 10 )
                        << "  Elapsed Time: ";
            *StatusLine << ltoa( Port->ElapsedTime, buffer, 10 )
                        << "  Status: ";
            break;
        default :
            return;
    }
    *StatusLine << Port->ErrorName( status );
}

void DrawDump( void )
{
    int i;
    char buffer[ 81 ];

    UserWindow->SetPosition( 0, 0 );
    for ( i = 0 ;
          i < Port->DebugLineCount() ;
          i++ ) {
        Port->FormatDebugOutput( buffer, i );
        if ( i != 0 )
            *UserWindow << '\n';
        *UserWindow << buffer;
    }
    Windows[ FocusWindow ]->Goto();
}

void DrawHelp( void )
{
    UserWindow->Clear();
    UserWindow->SetPosition( 0, 0 );
    *UserWindow << "F1 Help Toggle      ALT F1 Toggle XON/XOFF\n";
    *UserWindow << "F2 Next port        ALT F2 Toggle RTS/CTS\n";
    *UserWindow << "F3 Spew Toggle      ALT F3 Toggle DTR/DSR\n";
    *UserWindow << "F4 Reading Toggle   ALT F4 Toggle RTS\n";
    *UserWindow << "F5 Set baud rate    ALT F5 Toggle DTR\n";
    *UserWindow << "F6 Set parity       ALT F6 Flush RX Buffer\n";
    *UserWindow << "F7 Set word length  ALT F7 Flush TX Buffer\n";
    *UserWindow << "F8 Set stop bits    ALT F8 Peek at 1 byte\n";
    *UserWindow << "F9 Send break       ALT F9 Read a byte\n";
    *UserWindow << "F10 Exit            ALT F10 Send 1K block\n";
    Windows[ FocusWindow ]->Goto();
}

// ******************** END OF TEST04.CPP ********************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品99久久久久久| 欧美丰满少妇xxxxx高潮对白| 在线视频国产一区| 日韩一级免费一区| 亚洲乱码国产乱码精品精可以看| 美女在线一区二区| 91久久奴性调教| 亚洲国产精华液网站w| 日韩中文字幕av电影| aa级大片欧美| 国产亚洲欧美一区在线观看| 亚洲第一福利一区| 一本到一区二区三区| 国产欧美综合在线观看第十页| 日韩不卡一二三区| 久久夜色精品一区| 日韩专区中文字幕一区二区| 色综合久久久久久久久| 国产精品免费看片| 国产精品66部| 久久伊人中文字幕| 老司机精品视频一区二区三区| 欧美午夜精品一区二区三区| 亚洲男人天堂av| 99在线精品一区二区三区| 欧美国产精品久久| 粉嫩aⅴ一区二区三区四区五区| 精品国产青草久久久久福利| 日韩福利电影在线| 91精品国产色综合久久久蜜香臀| 亚洲图片欧美色图| 精品视频一区二区不卡| 亚洲一区二区在线观看视频| 91福利国产精品| 亚洲欧美激情一区二区| 色呦呦国产精品| 午夜视频在线观看一区| 久久99精品国产麻豆婷婷| 日本韩国一区二区三区| 亚洲日穴在线视频| 99精品视频一区| 成人欧美一区二区三区| 色综合色综合色综合| 午夜精品一区二区三区免费视频| 色综合视频在线观看| 玉足女爽爽91| 欧美日韩亚洲综合| 麻豆91精品91久久久的内涵| 2023国产精品| 97久久精品人人做人人爽| 亚洲人123区| 欧美色倩网站大全免费| 美国欧美日韩国产在线播放| 久久亚洲二区三区| 99精品久久只有精品| 一区二区在线免费| 日韩欧美色电影| 国产精品亚洲成人| 一区二区三区中文字幕电影| 7777精品久久久大香线蕉 | 欧美熟乱第一页| 免费观看在线色综合| 国产日产欧美一区| 欧美网站大全在线观看| 久久精品国产网站| 亚洲色图视频免费播放| 337p亚洲精品色噜噜狠狠| 国产成人精品一区二| 尤物在线观看一区| 精品电影一区二区三区| 91免费版在线看| 国模冰冰炮一区二区| 亚洲精品一区在线观看| 久久精品国产成人一区二区三区| 91 com成人网| 日本欧美在线看| 日韩一卡二卡三卡国产欧美| 蜜臀av国产精品久久久久| 7777精品伊人久久久大香线蕉 | 国产精品乱码人人做人人爱 | 一区二区三区视频在线看| 在线成人小视频| 国产自产高清不卡| 亚洲另类在线视频| 久久久久久久久蜜桃| 国产在线精品视频| 亚洲午夜私人影院| 国产三级欧美三级| 欧美三区免费完整视频在线观看| 国产一区二区伦理片| 亚洲妇女屁股眼交7| 亚洲国产精品激情在线观看| 91精品欧美久久久久久动漫| 中文字幕日韩精品一区| 欧美aⅴ一区二区三区视频| 日韩一级片网址| 懂色av一区二区三区蜜臀| 中文字幕中文乱码欧美一区二区| 成人av在线看| 一区二区三区免费在线观看| 欧美日韩亚洲国产综合| 男人操女人的视频在线观看欧美| 精品国产亚洲在线| 成人做爰69片免费看网站| 亚洲卡通动漫在线| 欧美一卡二卡在线观看| 国产传媒久久文化传媒| 樱桃视频在线观看一区| 日韩一区二区电影| 99久久免费视频.com| 天天综合色天天| 久久综合网色—综合色88| av电影一区二区| 日本成人在线电影网| 国产人久久人人人人爽| 欧美在线一区二区三区| 激情六月婷婷综合| 亚洲激情网站免费观看| 26uuu亚洲| 欧美在线你懂的| 国产成人综合亚洲网站| 国产成人av一区二区三区在线观看| 国产精品久久久久久久久晋中 | 一区二区三区在线影院| 日韩一区二区视频在线观看| 99久久99久久久精品齐齐| 日本欧美一区二区| 亚洲黄网站在线观看| 国产片一区二区| 日韩欧美成人激情| 欧美日韩在线播| 91麻豆国产在线观看| 国产iv一区二区三区| 麻豆一区二区99久久久久| 亚洲一区在线观看免费| 国产精品无人区| 久久综合九色综合久久久精品综合| 欧美少妇一区二区| 色婷婷综合久色| av中文字幕不卡| 成人精品国产一区二区4080| 激情五月婷婷综合网| 日本不卡视频一二三区| 亚洲va天堂va国产va久| 亚洲精品美国一| 亚洲免费观看高清完整| 国产精品第四页| 中文字幕一区av| 国产精品欧美经典| 国产精品久久久久久亚洲毛片 | 精品国产乱码久久久久久浪潮| 色94色欧美sute亚洲线路二| 91香蕉视频黄| 不卡视频一二三四| 成人激情综合网站| 国产91丝袜在线观看| 国产成人精品1024| 国产成人亚洲综合a∨婷婷图片| 九九视频精品免费| 韩国精品在线观看| 国产福利一区二区| 国产成人av一区二区三区在线观看| 国产美女在线精品| 国产精品一区不卡| 99久久久免费精品国产一区二区| www.亚洲色图| 欧美视频在线不卡| 91麻豆精品国产91久久久久久久久 | 精品99一区二区| 久久久久久9999| 国产精品乱码妇女bbbb| 亚洲欧洲精品一区二区三区不卡| 国产精品电影一区二区三区| 亚洲激情网站免费观看| 捆绑调教美女网站视频一区| 激情久久五月天| 国产精一品亚洲二区在线视频| 成人h动漫精品| 欧洲精品在线观看| 欧美不卡视频一区| 国产农村妇女毛片精品久久麻豆| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲激情综合网| 免费观看成人av| 99re热视频这里只精品| 在线亚洲一区观看| 精品黑人一区二区三区久久| 国产精品网友自拍| 性久久久久久久| 国产精品一区二区三区乱码| 在线观看亚洲a| 欧美成人vps| 亚洲一区二区三区在线| 久久99蜜桃精品| 91黄色免费网站| 国产三级精品三级在线专区| 亚洲成av人片在线| 国产v综合v亚洲欧| 91麻豆精品91久久久久久清纯| 国产精品欧美精品|