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

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

?? tserial_event.cpp

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



/* ------------------------------------------------------------------------ --
--                                                                          --
--                        PC serial port connection object                  --
--                           for event-driven programs                      --
--                                                                          --
--                                                                          --
--                                                                          --
--  Copyright @ 2001          Thierry Schneider                             --
--                            thierry@tetraedre.com                         --
--                                                                          --
--                                                                          --
--                                                                          --
-- ------------------------------------------------------------------------ --
--                                                                          --
--  Filename : sertest2.cpp                                                 --
--  Author   : Thierry Schneider                                            --
--  Created  : April 4th 2000                                               --
--  Modified : April 24th 2001                                              --
--  Plateform: Windows 95, 98, NT, 2000 (Win32)                             --
-- ------------------------------------------------------------------------ --
--                                                                          --
--  This software is given without any warranty. It can be distributed      --
--  free of charge as long as this header remains, unchanged.               --
--                                                                          --
-- ------------------------------------------------------------------------ --
--                                                                          --
-- 01.04.24      Comments added                                             --
-- 01.04.28      Bug 010427 corrected. OnDisconnectedManager was not        --
--                initialized                                               --
-- 01.04.28      connect() function prototype modified to handle 7-bit      --
--                communication                                             --
-- 01.04.29      "ready" field added to remove a bug that occured during    --
--                 reconnect (event manager pointers cleared)               --
--                 I removed the "delete" in Tserial_event_thread_start     --
--                 because it was destroying the object even if we would    --
--                 use it again                                             --
--                                                                          --
--                                                                          --
-- ------------------------------------------------------------------------ --
--                                                                          --
--    Note to Visual C++ users:  Don't forget to compile with the           --
--     "Multithreaded" option in your project settings                      --
--                                                                          --
--         See   Project settings                                           --
--                   |                                                      --
--                   *--- C/C++                                             --
--                          |                                               --
--                          *--- Code generation                            --
--                                       |                                  --
--                                       *---- Use run-time library         --
--                                                     |                    --
--                                                     *---- Multithreaded  --
--                                                                          --
--                                                                          --
--                                                                          --
-- ------------------------------------------------------------------------ */




/* ---------------------------------------------------------------------- */

#define STRICT
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <process.h>
#include <conio.h>
#include <windows.h>


#include "Tserial_event.h"

#define SIG_POWER_ON    0    // signals definition for external threads
#define SIG_POWER_DOWN  1
#define SIG_COM_READER  3
#define SIG_COM_WRITER  4
#define SIG_DATA_IN     5    // for byte by byte operation

void Tserial_event_thread_start(void *arg);

typedef unsigned (WINAPI *PBEGINTHREADEX_THREADFUNC) (LPVOID lpThreadParameter);
typedef unsigned *PBEGINTHREADEX_THREADID;

/* ---------------------------------------------------------------------- */
/* ---------------------  Tserial_event_thread_start  ------------------- */
/* ---------------------------------------------------------------------- */
/**
    This function is not part of the Tserial_event object. It is simply used
    to start the thread from an external point of the object.
*/
void Tserial_event_thread_start(void *arg)
{
    class Tserial_event *serial_unit;

    serial_unit = (Tserial_event *) arg;
    
    if (serial_unit!=0)
        serial_unit->Run();
}

/* -------------------------------------------------------------------- */
/* -------------------------    Tserial_event ------------------------- */
/* -------------------------------------------------------------------- */
Tserial_event::Tserial_event()
{
    int i;

    ready            = false;
    parityMode       = spNONE;
    port[0]          = 0;
    rate             = 0;
    threadid         = 0;
    serial_handle    = INVALID_HANDLE_VALUE;
    tx_in_progress   = 0;
    rx_in_progress   = 0;

    OnConnectedManager   = 0;
    OnCharSentManager    = 0;
    OnCharArrivalManager = 0;
    OnDisconnectedManager= 0;   // bug 010427 correction

    /* -------------------------------------------------------------- */
    // creating Events for the different sources
    for (i=0; i<TSERIAL_SIGNAL_NBR; i++)
    {
        if ((i==SIG_COM_READER) || (i==SIG_COM_WRITER) )
            serial_events[i] = CreateEvent(NULL, TRUE, FALSE, NULL);  // Manual Reset
        else
            serial_events[i] = CreateEvent(NULL, FALSE, FALSE, NULL); // Auto reset
    }
}

/* -------------------------------------------------------------------- */
/* --------------------------    ~Tserial_event ----------------------- */
/* -------------------------------------------------------------------- */
Tserial_event::~Tserial_event()
{
    int i;

    /* -------------------------------------------------------- */
    for (i=0; i<TSERIAL_SIGNAL_NBR; i++)         // deleting the events
    {
        if (serial_events[i]!=INVALID_HANDLE_VALUE)
            CloseHandle(serial_events[i]);
        serial_events[i] = INVALID_HANDLE_VALUE;
    }

    if (serial_handle!=INVALID_HANDLE_VALUE)
        CloseHandle(serial_handle);
    serial_handle = INVALID_HANDLE_VALUE;
}

/* ---------------------------------------------------------------------- */
/* ------------------------      Start_thread       --------------------- */
/* ---------------------------------------------------------------------- */
void Tserial_event::Start_thread(void)
{
    SetSignal(SIG_POWER_ON);   // sending a power on signal to myself
    _beginthreadex(NULL,0,(PBEGINTHREADEX_THREADFUNC) Tserial_event_thread_start,
                  (void *) this, 0, &threadid);
}

/* -------------------------------------------------------------------- */
/* --------------------------    SetSignal    ------------------------- */
/* -------------------------------------------------------------------- */
void Tserial_event::SetSignal(long mask)
{
    if ((mask<TSERIAL_SIGNAL_NBR) && (mask>=0))
    {
        if (serial_events[mask]!=INVALID_HANDLE_VALUE)
            SetEvent(serial_events[mask]);
    }
}
/* -------------------------------------------------------------------- */
/* --------------------------    disconnect   ------------------------- */
/* -------------------------------------------------------------------- */
void Tserial_event::disconnect(void)
{
    ready = false;
    SetSignal(SIG_POWER_DOWN);
}
/* -------------------------------------------------------------------- */
/* --------------------------    powerDown    ------------------------- */
/* -------------------------------------------------------------------- */
void Tserial_event::powerDown(void)
{
    ready = false;
    if (serial_handle!=INVALID_HANDLE_VALUE)
        CloseHandle(serial_handle);
    serial_handle = INVALID_HANDLE_VALUE;

    OnDisconnected();
}
/* -------------------------------------------------------------------- */
/* --------------------------    connect      ------------------------- */
/* -------------------------------------------------------------------- */
/**
     Serial port, file and overlapped structures initialization
*/
int  Tserial_event::connect (char *port_arg, int rate_arg,
                                serial_parity parity_arg, char ByteSize)
{
    int erreur;
    DCB  dcb;
    COMMTIMEOUTS cto = { 0, 0, 0, 0, 0 };

    /* --------------------------------------------- */
    if (serial_handle!=INVALID_HANDLE_VALUE)
        CloseHandle(serial_handle);
    serial_handle = INVALID_HANDLE_VALUE;

    if (port_arg!=0)
    {
        strncpy(port, port_arg, 10);
        rate      = rate_arg;
        parityMode= parity_arg;

        erreur    = 0;
        ZeroMemory(&ovReader,sizeof(ovReader));      // clearing the overlapped
        ZeroMemory(&ovWriter,sizeof(ovWriter));
        memset(&dcb,0,sizeof(dcb));

        /* -------------------------------------------------------------------- */
        // set DCB to configure the serial port
        dcb.DCBlength       = sizeof(dcb);                   
        
        /* ---------- Serial Port Config ------- */
        dcb.BaudRate        = rate;

        switch(parityMode)
        {
            case spNONE:
                            dcb.Parity      = NOPARITY;
                            dcb.fParity     = 0;
                            break;
            case spEVEN:
                            dcb.Parity      = EVENPARITY;
                            dcb.fParity     = 1;
                            break;
            case spODD:
                            dcb.Parity      = ODDPARITY;
                            dcb.fParity     = 1;
                            break;
        }


        dcb.StopBits        = ONESTOPBIT;
        dcb.ByteSize        = (BYTE) ByteSize;
        
        dcb.fOutxCtsFlow    = 0;
        dcb.fOutxDsrFlow    = 0;
        dcb.fDtrControl     = DTR_CONTROL_DISABLE;
        dcb.fDsrSensitivity = 0;
        dcb.fRtsControl     = RTS_CONTROL_DISABLE;
        dcb.fOutX           = 0;
        dcb.fInX            = 0;
        
        /* ----------------- misc parameters ----- */
        dcb.fErrorChar      = 0;
        dcb.fBinary         = 1;
        dcb.fNull           = 0;
        dcb.fAbortOnError   = 0;
        dcb.wReserved       = 0;
        dcb.XonLim          = 2;
        dcb.XoffLim         = 4;
        dcb.XonChar         = 0x13;
        dcb.XoffChar        = 0x19;
        dcb.EvtChar         = 0;
        
        /* -------------------------------------------------------------------- */
        serial_handle    = CreateFile(port, GENERIC_READ | GENERIC_WRITE,
                   0, NULL, OPEN_EXISTING,FILE_FLAG_OVERLAPPED,NULL);
                   // opening serial port

        ovReader.hEvent = serial_events[SIG_COM_READER];
        ovWriter.hEvent = serial_events[SIG_COM_WRITER];

        if (serial_handle    != INVALID_HANDLE_VALUE)
        {
            if(!SetCommMask(serial_handle, 0))
                erreur = 1;

            // set timeouts
            if(!SetCommTimeouts(serial_handle,&cto))
                erreur = 2;

            // set DCB
            if(!SetCommState(serial_handle,&dcb))
                erreur = 4;
        }
        else
            erreur = 8;
    }
    else
        erreur = 16;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩中文字幕一区二区| 男男成人高潮片免费网站| av亚洲精华国产精华精| 久久一夜天堂av一区二区三区| 国产一区二区三区高清播放| 亚洲免费观看在线视频| 日韩一区二区电影| 在线观看一区二区精品视频| 欧美午夜精品一区| 国产一区二区三区久久悠悠色av | 欧美三级三级三级爽爽爽| 国产呦萝稀缺另类资源| 香蕉成人伊视频在线观看| 欧美激情一二三区| 精品国产乱码91久久久久久网站| 91美女蜜桃在线| 成人一区二区三区中文字幕| 麻豆久久一区二区| 亚洲欧美一区二区不卡| 久久在线免费观看| 欧美电影免费观看高清完整版在线观看| 97精品国产露脸对白| 国产一区二区91| 精品欧美一区二区在线观看| 日韩精品亚洲一区二区三区免费| 26uuu国产日韩综合| 91久久香蕉国产日韩欧美9色| 欧美bbbbb| 在线成人av影院| 成人性生交大片免费看中文网站| 一个色在线综合| 国产嫩草影院久久久久| 欧美精品久久久久久久久老牛影院 | 国产成人在线视频网址| 国产精品免费aⅴ片在线观看| 亚洲素人一区二区| 99久久精品国产一区二区三区| 日韩电影在线一区| 亚洲免费观看高清完整| 久久精品亚洲乱码伦伦中文 | 欧美精品在线视频| 麻豆成人av在线| 亚洲线精品一区二区三区| 18成人在线观看| 日韩欧美国产综合在线一区二区三区| 福利一区二区在线| 精久久久久久久久久久| 亚洲欧美激情小说另类| 久久久亚洲综合| 欧美精品一区二区久久婷婷| 91精品国产入口| 在线一区二区三区四区| caoporn国产一区二区| 91一区二区在线观看| 成人亚洲精品久久久久软件| 亚洲第一成人在线| 亚洲精品乱码久久久久久久久 | 337p亚洲精品色噜噜狠狠| 欧美日韩一区二区三区不卡| jlzzjlzz欧美大全| 99久久久国产精品免费蜜臀| av色综合久久天堂av综合| 色狠狠一区二区三区香蕉| 94色蜜桃网一区二区三区| 91视频国产资源| 欧美视频一区二区三区| 日韩免费一区二区| 91精品福利在线一区二区三区 | 欧美欧美午夜aⅴ在线观看| 在线观看亚洲专区| 欧美一级日韩不卡播放免费| 欧美一区二区不卡视频| 欧美国产激情二区三区| 国产视频一区二区三区在线观看| 精品福利视频一区二区三区| 国产欧美va欧美不卡在线| 亚洲卡通动漫在线| 美腿丝袜亚洲一区| 精品一区二区在线播放| 成人激情视频网站| www国产精品av| 91精品久久久久久久99蜜桃| 久久精品欧美一区二区三区不卡| 欧美国产禁国产网站cc| 久久av资源网| 国产一区二区三区黄视频| 色婷婷国产精品| 欧美激情综合五月色丁香小说| 午夜精品一区二区三区电影天堂| 色婷婷亚洲一区二区三区| 91网上在线视频| 中文字幕一区不卡| 日本视频一区二区三区| 99久久精品国产观看| 久久久www免费人成精品| 亚洲不卡av一区二区三区| 另类小说欧美激情| 欧美高清你懂得| 亚洲成人av福利| 欧美日韩黄色一区二区| 欧美成人国产一区二区| 麻豆精品一区二区综合av| 欧美二区在线观看| 亚洲 欧美综合在线网络| 色综合天天天天做夜夜夜夜做| 久久综合成人精品亚洲另类欧美| 国内精品不卡在线| 久久久亚洲欧洲日产国码αv| 日韩电影一二三区| 99riav一区二区三区| 中文字幕av资源一区| aaa亚洲精品| 亚洲欧美自拍偷拍| 自拍偷拍亚洲综合| 亚洲精品在线一区二区| 国产精品亚洲专一区二区三区| 久久免费视频色| 成人综合在线视频| 亚洲午夜久久久久久久久电影网| 欧美三级三级三级爽爽爽| 蜜臀99久久精品久久久久久软件| 91精品国产综合久久久蜜臀粉嫩| 久久激情五月婷婷| 国产婷婷色一区二区三区| 91国产福利在线| 日韩国产成人精品| 精品日韩一区二区三区| 成年人网站91| 欧美午夜精品一区二区三区| 久久av老司机精品网站导航| 久久九九久久九九| 成人免费看黄yyy456| 精品粉嫩超白一线天av| 色嗨嗨av一区二区三区| 另类小说视频一区二区| 亚洲乱码中文字幕| 91极品美女在线| 极品美女销魂一区二区三区免费| 亚洲日本青草视频在线怡红院| 亚洲精品在线电影| 欧美日韩免费观看一区二区三区| 狠狠色丁香九九婷婷综合五月| 亚洲综合在线观看视频| 欧美高清在线一区| 欧美日韩一区二区三区四区五区 | 国产69精品久久久久777| 丝袜美腿成人在线| 亚洲国产精品久久不卡毛片| 日韩欧美中文字幕精品| 欧美在线free| 欧美色图第一页| 欧美视频在线不卡| 91丨九色丨国产丨porny| www.欧美.com| 99视频一区二区三区| 日韩美女视频在线| 欧美色图激情小说| 欧美日韩在线亚洲一区蜜芽| 在线视频中文字幕一区二区| 色老汉av一区二区三区| 色婷婷国产精品久久包臀 | 久久久久久免费网| 久久久精品天堂| 中文一区二区完整视频在线观看| 久久久不卡影院| 一区二区三区四区乱视频| 亚洲色图第一区| 一区二区三区精品| 《视频一区视频二区| 亚洲自拍偷拍图区| 秋霞电影网一区二区| 国产福利精品导航| 亚洲在线一区二区三区| 午夜久久久影院| 国产尤物一区二区在线| 91色视频在线| 国产精品一区二区你懂的| 成人午夜免费电影| 欧美日韩成人在线一区| 韩国一区二区视频| 成人一区二区三区中文字幕| 色婷婷综合久色| 久久久国产一区二区三区四区小说| 处破女av一区二区| 精品国产乱码久久久久久久| 国产精品美女久久久久久2018 | 亚洲一区二区三区四区在线| 成人手机在线视频| 一区二区三区国产精品| 欧美视频第二页| 久久99久久99| 国产精品视频免费| 日本精品一级二级| 亚洲欧美日韩国产综合在线| 在线视频亚洲一区| 奇米精品一区二区三区在线观看一| 久久综合九色欧美综合狠狠| 成人av在线网站| 亚洲成人先锋电影| 久久奇米777|