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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tserial_event.cpp

?? 串口通訊例程
?? CPP
?? 第 1 頁 / 共 2 頁
字號:

    /* --------------------------------------------- */
    if (erreur!=0)
    {
        CloseHandle(serial_handle);
        serial_handle = INVALID_HANDLE_VALUE;
    }
    else
    {
        Start_thread();
    }

    /* --------------------------------------------- */
    return(erreur);
}
/* -------------------------------------------------------------------- */
/* --------------------------    OnCharArrival ------------------------ */
/* -------------------------------------------------------------------- */
void          Tserial_event::OnCharArrival    (char c)
{
    if ((OnCharArrivalManager!=0) && ready)
        OnCharArrivalManager(c);
}
/* -------------------------------------------------------------------- */
/* --------------------------  OnConnected    ------------------------- */
/* -------------------------------------------------------------------- */
void          Tserial_event::OnConnected      (void)
{
    if ((OnConnectedManager!=0) && ready)
        OnConnectedManager();
}
/* -------------------------------------------------------------------- */
/* --------------------------  OnDisconnected ------------------------- */
/* -------------------------------------------------------------------- */
void          Tserial_event::OnDisconnected      (void)
{
    if (OnDisconnectedManager!=0)
        OnDisconnectedManager();
}
/* -------------------------------------------------------------------- */
/* --------------------------   OnCharSent    ------------------------- */
/* -------------------------------------------------------------------- */
void          Tserial_event::OnCharSent       (void)
{
    if ((OnCharSentManager!=0) && ready)
        OnCharSentManager();
}
/* -------------------------------------------------------------------- */
/* ---------------------  setManagerOnCharArrival --------------------- */
/* -------------------------------------------------------------------- */
/*
    Transmitting a null parameter will clear the variable in any case
*/
void         Tserial_event::setManagerOnCharArrival(type_charEvent manager)
{
    if ((OnCharArrivalManager==0) || (manager==0))
        OnCharArrivalManager = manager;
}
/* -------------------------------------------------------------------- */
/* ----------------------  setManagerOnConnected  --------------------- */
/* -------------------------------------------------------------------- */
void         Tserial_event::setManagerOnConnected  (type_voidEvent manager)
{
    if ((OnConnectedManager==0) || (manager==0))
        OnConnectedManager = manager;
}
/* -------------------------------------------------------------------- */
/* -----------------------  setManagerOnDisconnected  ----------------- */
/* -------------------------------------------------------------------- */
void         Tserial_event::setManagerOnDisconnected  (type_voidEvent manager)
{
    if ((OnDisconnectedManager==0) || (manager==0))
        OnDisconnectedManager = manager;
}
/* -------------------------------------------------------------------- */
/* --------------------   setManagerOnCharSent   ---------------------- */
/* -------------------------------------------------------------------- */
void         Tserial_event::setManagerOnCharSent   (type_voidEvent manager)
{
    if ((OnCharSentManager==0) || (manager==0))
        OnCharSentManager = manager;
}
/* -------------------------------------------------------------------- */
/* -----------------------   getNbrOfBytes  --------------------------- */
/* -------------------------------------------------------------------- */
int Tserial_event::getNbrOfBytes    (void)
{
    struct _COMSTAT status;
    int             n;
    unsigned long   etat;

    n = 0;

    if (serial_handle!=INVALID_HANDLE_VALUE)
    {
        ClearCommError(serial_handle, &etat, &status);
        n = status.cbInQue;
    }
    return(n);
}
/* -------------------------------------------------------------------- */
/* --------------------------    sendChar     ------------------------- */
/* -------------------------------------------------------------------- */
void Tserial_event::sendChar (char data)
{
    data_to_send = data;
    SetSignal(SIG_DATA_IN);
}
/* -------------------------------------------------------------------- */
/* --------------------------       Run       ------------------------- */
/* -------------------------------------------------------------------- */

/** 
 this function is the main loop of the Tserial object. There is a
 do while() loop executed until either an error or a PowerDown is 
 received.
 this is not a busy wait since we use the WaitForMultipleObject function
*/

void Tserial_event::Run(void)
{
    int           done;
    long          status;
    unsigned long read_nbr, result_nbr;
    char          data;
    char          success;

    ready             = true;
    done              = 0;
    tx_in_progress    = 0;
    rx_in_progress    = 0;
    OnConnected();
    GetLastError();     // just to clear any pending error

    /* ----------------------------------------------------------- */
    while(!done)
    {
        /* ---------------------------------------------------- */
        /*            checking for incoming                     */
        /* ---------------------------------------------------- */
        if (!rx_in_progress)      // if no reception is in progress
        {                         // I start a new one
            do
            {
                success = (char) ReadFile(serial_handle,&data,1,&read_nbr,&ovReader);
                // reading one byte only to have immediate answer on each byte
                if (success)
                {
                    // immediate return => data processing 
                    ResetEvent(serial_events[SIG_COM_READER]);
                    OnCharArrival(data);
                    rx_in_progress = 0;
                }
                else
                {
                    if(GetLastError() != ERROR_IO_PENDING )
                        done=1;
                    else
                        rx_in_progress=1; // read is pending
                                          // will wait for completion in
                                          // WaitForMultipleObjects
                }
            }
            while(success); 
            // as long as the read is returning data, I'll read them
        }

        /* ---------------------------------------------------- */
        /*            Waiting  for signals                      */
        /* ---------------------------------------------------- */
        if (!done)
        {
            // Main wait function. Waiting for something to happen. 
            // This may be either the completion of a Read or a Write or
            // the reception of Power On, Power Down, new Tx
            //
            status = WaitForMultipleObjects(TSERIAL_SIGNAL_NBR, serial_events,
                                            FALSE, INFINITE);

            /* processing answer to filter other failures */
            status = status - WAIT_OBJECT_0;
            if ((status<0) || (status>=TSERIAL_SIGNAL_NBR))
                done=1;
            else
            {
                /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
                /* ++++++++++++++++++++ EVENT DISPATCHER ++++++++++++++++++ */
                /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
                switch(status)
                {
                    /* ######################################################## */
                    case SIG_POWER_ON :
                        /* * /
                        printf("Tserial : power on\n");
                        /* */
                        break;
                    /* ######################################################## */
                    case SIG_POWER_DOWN:
                        /* * /
                        printf("Tserial : power down\n");
                        /* */
                        done = 1;
                        break;
                    /* ######################################################## */
                    case SIG_DATA_IN:
                        // Signal asserted that there is a new valid data
                        // in the "data_to_send" variable
                        success = (char) WriteFile(serial_handle, &data_to_send, 1,
                                            &result_nbr, &ovWriter);
                        // sending data on the port
                        if (success)
                        {
                            // as long as the write is returning immediately,
                            // I'll be ready to send additonnal data
                            tx_in_progress = 0;
                            OnCharSent();
                            // calling the frame to indicate that the transmission
                            // is over and we're ready to receive a new data
                        }
                        else
                        {
                            if(GetLastError() == ERROR_IO_PENDING )
                                tx_in_progress=1;       // write is pending
                            else
                                done = 1;               // failure !
                        }

                        break;
                    /* ######################################################## */
                    case SIG_COM_READER:
                        // reading the result of the terminated read
                        if (GetOverlappedResult(serial_handle, &ovReader,
                            &result_nbr, FALSE))
                        {
                            // no error => OK
                            // Read operation completed successfully
                            ResetEvent(serial_events[SIG_COM_READER]);
                            // Write operation completed successfully
                            if (result_nbr)
                                OnCharArrival(data);
                            // if incoming data, I process them
                            rx_in_progress = 0; // read has ended
                        }
                        else
                        {
                            // GetOverlapped didn't succeed !
                            // What's the reason ?
                            if(GetLastError() == ERROR_IO_PENDING )
                                // still pending ?? ok no proble, I'll
                                // wait for completion
                                rx_in_progress = 1; // read not ended
                            else
                                // other reason !? this is a failure
                                // exiting
                                done = 1;  // failure
                        }
                        break;
                    /* ######################################################## */
                    case SIG_COM_WRITER:
                        // WriteFile has terminated
                        // checkin the result of the operation
                        if (GetOverlappedResult(serial_handle, &ovWriter,
                            &result_nbr, FALSE))
                        {
                            // Write operation completed successfully
                            ResetEvent(serial_events[SIG_COM_WRITER]);
                            // Write operation completed successfully
                            tx_in_progress = 0; // write has ended
                            OnCharSent();       // checking if there are
                                                // other messages waiting
                        }
                        else
                        {
                            // GetOverlapped didn't succeed !
                            // What's the reason ?
                            if(GetLastError() == ERROR_IO_PENDING )
                                // still pending ?? ok no proble, I'll
                                // wait for completion
                                tx_in_progress = 1; // write not ended
                            else
                                // other reason !? this is a failure
                                // exiting
                                done = 1;  // failure
                        }
                        break;
                    /* ######################################################## */
                }
                /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
                /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
                /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
            }
        }
    };

    powerDown();
}
/* -------------------------------------------------------------------- */
/* -------------------------------------------------------------------- */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费观看久久久4p| 中文在线一区二区| 日韩激情视频网站| 制服丝袜日韩国产| 日韩经典一区二区| 久久香蕉国产线看观看99| 国产91在线看| 亚洲欧美另类图片小说| 欧美日韩在线观看一区二区| 日本欧美一区二区| 国产网红主播福利一区二区| 91美女蜜桃在线| 婷婷综合久久一区二区三区| 久久影院视频免费| 91小视频在线| 日韩—二三区免费观看av| 久久精品亚洲国产奇米99| 成人激情黄色小说| 日韩激情一区二区| 国产精品无圣光一区二区| 色丁香久综合在线久综合在线观看 | 午夜欧美一区二区三区在线播放| 91精品国产91久久综合桃花| 国产一级精品在线| 亚洲精品日产精品乱码不卡| 日韩欧美国产一区二区三区| 成人性生交大合| 亚洲成av人片一区二区梦乃| 26uuu另类欧美| 欧美在线色视频| 极品少妇xxxx精品少妇偷拍| 亚洲卡通欧美制服中文| 精品国产乱码久久久久久蜜臀| 91亚洲大成网污www| 久久99精品久久只有精品| 综合久久一区二区三区| 日韩精品资源二区在线| 91浏览器打开| 国产麻豆一精品一av一免费 | 久久精品999| 亚洲色图欧美在线| 欧美精品一区二区精品网| 91黄色免费看| 国产.欧美.日韩| 老色鬼精品视频在线观看播放| 一区二区三区四区视频精品免费 | 91黄视频在线观看| 成人黄色在线视频| 精品一区二区国语对白| 亚洲午夜精品网| 成人免费在线视频观看| 久久九九国产精品| 欧美日韩美少妇| 91蜜桃网址入口| 国产成人在线观看免费网站| 男女激情视频一区| 午夜欧美电影在线观看| 一区二区三区电影在线播| 国产精品每日更新| 日本一区二区三区国色天香| 精品成人在线观看| 日韩午夜三级在线| 欧美高清www午色夜在线视频| 色婷婷综合久久久久中文一区二区 | 亚洲男人的天堂一区二区| 中文欧美字幕免费| 亚洲国产精品成人久久综合一区| 精品欧美乱码久久久久久| 欧美一区2区视频在线观看| 欧美日韩五月天| 欧美午夜精品一区二区蜜桃| 97久久人人超碰| 国产二区国产一区在线观看| 黑人精品欧美一区二区蜜桃| 久久国产精品第一页| 六月丁香婷婷色狠狠久久| 全部av―极品视觉盛宴亚洲| 手机精品视频在线观看| 人妖欧美一区二区| 日本va欧美va欧美va精品| 久久国产精品72免费观看| 另类中文字幕网| 韩国精品在线观看| 国产suv精品一区二区三区| 懂色av一区二区三区蜜臀| 高清国产一区二区三区| 白白色 亚洲乱淫| 色欧美片视频在线观看| 欧美综合久久久| 91精品在线免费观看| 日韩视频在线一区二区| 久久午夜老司机| 国产精品久久久99| 亚洲综合一区二区| 亚洲va韩国va欧美va| 美女视频黄免费的久久| 国产成人精品www牛牛影视| 成人av免费在线观看| 在线视频综合导航| 日韩一区二区三区在线| 国产亲近乱来精品视频| 一区二区三区 在线观看视频| 天天色综合天天| 国产精品一卡二卡| 色8久久人人97超碰香蕉987| 69堂精品视频| 中文字幕免费一区| 亚洲国产精品久久艾草纯爱| 九九九精品视频| 99国产精品国产精品久久| 欧美日韩第一区日日骚| 国产欧美精品在线观看| 亚洲国产精品久久久男人的天堂| 久久成人18免费观看| 不卡在线观看av| 欧美一区二区网站| 中文字幕亚洲综合久久菠萝蜜| 亚洲第四色夜色| 成人污视频在线观看| 欧美猛男超大videosgay| 久久久美女毛片| 亚洲一区二区三区四区的| 国内精品在线播放| 欧美日韩精品一区二区在线播放| 欧美韩日一区二区三区| 五月天视频一区| 成人动漫一区二区| 精品噜噜噜噜久久久久久久久试看| 日韩理论片中文av| 国产高清不卡二三区| 884aa四虎影成人精品一区| 国产精品久久久久影院老司| 乱一区二区av| 欧美日本在线观看| 1024亚洲合集| 国产成人在线观看免费网站| 欧美一区二区免费| 亚洲一区二区偷拍精品| 成人avav影音| 久久影院电视剧免费观看| 日产国产高清一区二区三区| 色噜噜夜夜夜综合网| 日本一区二区成人在线| 久久99久久99精品免视看婷婷| 欧美日韩小视频| 亚洲图片有声小说| 91视频国产观看| 国产精品蜜臀在线观看| 国产精品99久久久久久久女警 | 亚洲成人资源网| 色欧美日韩亚洲| 亚洲欧美日韩国产另类专区| 不卡一区中文字幕| 亚洲国产电影在线观看| 国产美女精品在线| 久久久精品人体av艺术| 卡一卡二国产精品| 91精品免费在线观看| 日韩高清国产一区在线| 欧美年轻男男videosbes| 亚洲伊人伊色伊影伊综合网| 色诱亚洲精品久久久久久| 中文字幕一区二区三区在线观看| 丁香天五香天堂综合| 亚洲国产精品传媒在线观看| 丁香六月综合激情| 17c精品麻豆一区二区免费| 91在线porny国产在线看| 亚洲欧美另类久久久精品2019| 91麻豆国产香蕉久久精品| 亚洲精品日韩一| 欧美日本一道本| 免费成人在线影院| 欧美成人猛片aaaaaaa| 激情成人午夜视频| 国产亚洲成aⅴ人片在线观看| 国产传媒欧美日韩成人| 国产精品美女久久久久久| 91蜜桃婷婷狠狠久久综合9色| 一区二区免费在线| 欧美放荡的少妇| 精品伊人久久久久7777人| 久久先锋影音av鲁色资源| 成人va在线观看| 亚洲精品视频在线| 在线播放一区二区三区| 国产一区二区三区高清播放| 国产精品免费aⅴ片在线观看| 色综合久久综合| 五月综合激情网| 久久只精品国产| 色视频欧美一区二区三区| 婷婷夜色潮精品综合在线| 久久只精品国产| 欧美主播一区二区三区| 毛片不卡一区二区| 中文字幕在线观看一区二区| 欧美日韩在线综合| 懂色一区二区三区免费观看| 亚洲小说春色综合另类电影|