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

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

?? adint.cpp

?? 16 relay output channels and 16 isolated digital input channels LED indicators to show activated
?? CPP
字號(hào):
/*
 ****************************************************************************************
 * Program        : ADINTF.CPP                                                          *
 * Description    : Demo program for analog input function with interrupt triggering    *
 *                  (accept user to change FIFO size)                                   *
 * Boards Supp.   : PCL-818 series/816/1800/812PG/711B, MIC-2718, PCM-3718              *
 *                  PCI-1710/1713                                                       *
 * APIs used      : DRV_DeviceOpen,DRV_DeviceClose, DRV_FAIIntStart, DRV_FAIStop,       *
 *                  DRV_FAICheck, DRV_FAITransfer, DRV_GetErrorMessage                  *
 * Revision       : 1.00                                                                *
 * Date           : 7/1/2003                   Advantech Co., Ltd.                      *
 ****************************************************************************************
 */
#include <windows.h>
#include <windef.h>
#include <stdio.h>
#include <malloc.h>
#include <conio.h>

#include "..\..\..\include\driver.h"

/******************************
 *     Macro definition       *
 ******************************/
#define ERR_SIZE USHORT (-1)

/******************************
 * Local function declaration *
 ******************************/
void ErrorHandler(DWORD dwErrCde);
BOOL AllocateDataBuffer(long, int, int, USHORT**, void**);
void FreeDataBuffer(USHORT* pusINTBuf, void *pUserBuf);
void ErrorStop(long*, DWORD, USHORT*, void*);
USHORT GetFIFOSize(ULONG);

void main()
{
    DWORD  dwErrCde;
    ULONG  lDevNum;
    long   lDriverHandle;
    int    i, iSamples;
    USHORT usChan;
    char   chFifo;

    USHORT *pusINTBuf;      //INT internal transfer buffer
    float  *pfUserBuf;      //User buffer for retrieve data
    USHORT usActiveBuf;     //for PT_FAICheck to return data
    USHORT usStopped;
    ULONG  ulRetrieved;
    USHORT usOverrun;
    USHORT usHalfReady;
    ULONG  ulPreRetrieved;
    USHORT usFifoSize;		//Fifo size

    PT_FAIIntStart  tFAIIntStart;
    PT_FAICheck     tFAICheck;
    PT_FAITransfer  tFAITransfer;

    //Step 1: Display hardware and software settings for running this example
    printf("Before running this example, please\n");
    printf("use the device installation utility to add the device.\n");

    //Step 2: Input parameters
    printf("\nPlease input parameters:");
    printf("\nDevice Number (check the device installation utility): ");
    scanf("%d", &lDevNum);

    printf("Do you want to use FIFO ?\n");
    printf("If you want, press 'y'. Any other key to use NO Fifo.\n");
    fflush(stdin);
    scanf("%c", &chFifo);
    if(chFifo == 'y')
    {
        usFifoSize = GetFIFOSize(lDevNum);
        if(usFifoSize == ERR_SIZE)
        {
            printf("Program terminated!\n");
            printf("Press any key to exit....");
            getch();
            return;
        }
        if(usFifoSize == 0)
        {
            printf("No FIFO on the device.\n");
            usFifoSize = 1;
        }
        else
        {
            printf("The FIFO size of the device you specified: %d\n", usFifoSize);
            printf("Do you want to edit the FIFO size ?\n");
            printf("If you want, press 'y'. Any other key to maintain the original.\n");
            fflush(stdin);
            scanf("%c", &chFifo);
            if(chFifo == 'y')
            {
                printf("Input another FIFO Size (must be a natural number): ");
                scanf("%d", &usFifoSize);
                if(usFifoSize <= 0)
                    usFifoSize = 1;
            }
        }
    }
    else
    {
        usFifoSize = 1;
    }

    printf("Input Conversion Number: ");
    scanf("%d", &iSamples);
	
    printf("Input Channel: ");
    scanf("%d", &usChan);

    //Step 3: Open device
    dwErrCde = DRV_DeviceOpen(lDevNum, &lDriverHandle);
    if (dwErrCde != SUCCESS)
    {
        ErrorHandler(dwErrCde);
        printf("Program terminated!\n");

        printf("Press any key to exit....");
        getch();
        return ;
    }

    //Step 4: Allocate INT & data buffer for interrupt transfer
    if( AllocateDataBuffer(
            lDriverHandle,              // driver handle
            iSamples,                   // data count
            sizeof(float),              // size of one data
            &pusINTBuf,                 // INT buffer allocated
            (void**)&pfUserBuf)==false) // user buffer allocated
    {
        printf("Program terminated\n");
        DRV_DeviceClose(&lDriverHandle);

        printf("Press any key to exit....");
        getch();
        return;
    }

    // Step 5: Start interrupt transfer
    tFAIIntStart.TrigSrc = 0;          // 0: internal trigger, 1: external trigger
    tFAIIntStart.SampleRate = 10000;    // pacer rate: 10KHz
    tFAIIntStart.chan   = usChan;      // input channel
    tFAIIntStart.gain   = 0;           // gain code:0, check manual for detail input range
    tFAIIntStart.count  = iSamples;    // number of samples 
    tFAIIntStart.buffer = pusINTBuf;   // data buffer pointer
    tFAIIntStart.cyclic = 0;           // 0: non-cyclic mode, 1: cyclic-mode
    tFAIIntStart.IntrCount = usFifoSize;      //  FIFO interrupt
	
	printf("\nNumber of samples:%d\nSize of Fifo:%d\n",tFAIIntStart.count,tFAIIntStart.IntrCount );

    dwErrCde = DRV_FAIIntStart(lDriverHandle, &tFAIIntStart);
    if (dwErrCde != SUCCESS)
    {
        ErrorStop(&lDriverHandle, dwErrCde, pusINTBuf, (void*)pfUserBuf);
        return;
    }

    // Step 6: Check INT Status
    tFAICheck.ActiveBuf = &usActiveBuf; // not used for single buffer
    tFAICheck.stopped   = &usStopped;   // returned status: 1: complete, 0: imcomplete
    tFAICheck.retrieved = &ulRetrieved; // actual conversion count
    tFAICheck.overrun   = &usOverrun;   // not used for non-cyclic mode
    tFAICheck.HalfReady = &usHalfReady; // not used for single buffer
    ulPreRetrieved = 0;
    do
    {
        dwErrCde = DRV_FAICheck(lDriverHandle, &tFAICheck);
        if (ulPreRetrieved > ulRetrieved) break;

        ulPreRetrieved = ulRetrieved;
    } while ((dwErrCde==0) && (usStopped != 1));

    if (dwErrCde != SUCCESS)
    {
        ErrorStop(&lDriverHandle, dwErrCde, pusINTBuf, (void*)&pfUserBuf);
        return;
    }

    // Step 7: Stop A/D conversion for high speed
    dwErrCde = DRV_FAIStop(lDriverHandle);
    if (dwErrCde != SUCCESS)
    {
        ErrorStop(&lDriverHandle, dwErrCde, pusINTBuf, (void*)&pfUserBuf);
        return;
    }

    // Step 8: Get data from driver
    tFAITransfer.ActiveBuf = 0;         // 0: single buffer, 1: double buffer
    tFAITransfer.DataType = 1;          // 0: raw or unsigned short data, 1: float data
    tFAITransfer.start    = 0;          // 0: returned starting point of the data buffer
    tFAITransfer.count    = iSamples;   // requested data length. It requests all data.
    tFAITransfer.overrun  = &usOverrun; // returned overrun flag
    tFAITransfer.DataBuffer = pfUserBuf;

    dwErrCde = DRV_FAITransfer(lDriverHandle, &tFAITransfer);
    if (dwErrCde != SUCCESS)
    {
        ErrorStop(&lDriverHandle, dwErrCde, pusINTBuf, (void*)&pfUserBuf);
        return;
    }

    // Step 9: Display data starting from 0 to 99 of buffer location
    for (i = 0; i < 100; i ++)
    {
        printf("Buf[%ld] = %10.6f\n", i, pfUserBuf[i]);
    }

    // Step 10: Free buffer
    FreeDataBuffer(pusINTBuf, (void *)pfUserBuf);

    // Step 11: Close device
    dwErrCde = DRV_DeviceClose(&lDriverHandle);

    printf("\nPress any key to exit....");
    getch();

}//main

/**********************************************************************
 * Function: ErrorHandler
 *           Show the error message for the corresponding error code
 * input:    dwErrCde, IN, Error code
 * return:   none
 **********************************************************************/
void ErrorHandler(DWORD dwErrCde)
{
    char szErrMsg[180];

    DRV_GetErrorMessage(dwErrCde, szErrMsg);
    printf("\nError(%d): %s\n", dwErrCde & 0xffff, szErrMsg);
}//ErrorHandler

/**********************************************************************
 * Function:   AllocateDataBuffer
 *             Allocate data buffer for INT transfer.
 * Paramaters: lDrvHandle, IN, Driver handle
 *             iSamples, IN, Data count.
 *             iDataSize, IN, Size of one data
 *             plINTBuf, OUT, Interrupt buffer pointer.
 *             pUserBuf, OUT, user data buffer. Converted data is stored
 *                       here.
 * return:     TRUE - memory allocate successfully
 *             FALSE - allocate failed
 **********************************************************************/
BOOL AllocateDataBuffer(
        long  lDrvHandle,
        int   iSamples,
        int   iDataSize,
        USHORT ** pusINTBuf,
        void   ** pUserBuf)
{

    // Allocate INT buffer for driver
    *pusINTBuf = (USHORT*) GlobalAlloc(GPTR, iSamples * sizeof(USHORT));
    if (pusINTBuf == NULL)
    {
        printf("\nError: Allocate memory error.\n");
        return(false);
    }

    // Allocate memory for user buffer.
    *pUserBuf = malloc(iSamples * iDataSize);
    if (pUserBuf == NULL)
    {
        free(*pusINTBuf);
        printf("\nError: Allocate memory error.\n");
        return(false);
    }

    return(true);
}//AllocateDataBuffer

/**********************************************************************
 * Function:   FreeDataBuffer
 *             Free data buffer allocated by function AllocateDataBuffer
 * Paramaters: pusINTBuf, IN, Address of Interrupt buffer
 *             pUserBuf, IN, Address of user buffer
 * return:     none
 **********************************************************************/
void FreeDataBuffer(USHORT* pusINTBuf, void* pUserBuf)
{
    GlobalFree((HGLOBAL)pusINTBuf);
    free(pUserBuf);
}//FreeDataBuffer

/**********************************************************************
 * Function:   ErrorStop
 *             Release all resource and terminate program if error occurs
 * Paramaters: pDrvHandle, IN/OUT, pointer to Driver handle
 *             dwErrCde, IN, Error code.
 *             plINTBuf, IN, Address of Interrupt buffer
 *             pUserBuf, IN, Address of user buffer
 * return:     none
 **********************************************************************/
void ErrorStop( long*   pDrvHandle,
                DWORD   dwErrCde,
                USHORT* pusINTBuf,
                void*   pUserBuf)
{
    //Free resource
    DRV_FAIStop(*pDrvHandle);
    FreeDataBuffer(pusINTBuf, pUserBuf);

    //Error message
    ErrorHandler(dwErrCde);
    printf("Program terminated!\n");

    //Close device
    DRV_DeviceClose(pDrvHandle);

    printf("Press any key to exit....");
    getch();
    exit(0);
}//ErrorStop

/**********************************************************************
 * Function:   GetFIFOSize
 *             Get the FIFO size of the device you specified
 * Paramaters: lDevNum, IN, Device number by which to specify device
 * return:     the FIFO size of the specified device, if error occurs
               return ERR_SIZE
 *********************************************************************/
USHORT GetFIFOSize(ULONG lDevNum)
{
    DWORD  dwErrCde;
    long   lDriverHandle;
    long   lFifoSize;

    // Step 1: Open device
    dwErrCde = DRV_DeviceOpen(lDevNum, &lDriverHandle);
    if (dwErrCde != SUCCESS)
    {
        ErrorHandler(dwErrCde);
        return ERR_SIZE;
    }

    // Step 2: Get FIFO size
	dwErrCde = DRV_GetFIFOSize(lDriverHandle, &lFifoSize);
    if(dwErrCde != SUCCESS)
    {
        ErrorHandler(dwErrCde);
        DRV_DeviceClose(&lDriverHandle);
        return ERR_SIZE;
    }
                
    // Step 3: Close device
    DRV_DeviceClose(&lDriverHandle);
                
    // divide by 2 for conversion from byte to word
    return (USHORT)lFifoSize / 2;
}//GetFIFOSize

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合天天做天天爱| 亚洲一区二区欧美日韩 | 亚洲猫色日本管| 7777精品伊人久久久大香线蕉超级流畅| 免费在线观看一区| 亚洲美女免费在线| 国产欧美精品一区| 日韩一区二区在线观看| 在线国产亚洲欧美| 成人免费视频网站在线观看| 日韩电影在线观看网站| 亚洲蜜臀av乱码久久精品| 国产欧美日本一区二区三区| 欧美一级夜夜爽| 欧美视频一区二区在线观看| 成人免费看视频| 国内外成人在线| 日韩和欧美一区二区三区| 一区二区三区在线不卡| 欧美国产日韩在线观看| 欧美成人激情免费网| 欧美另类一区二区三区| 91福利在线看| proumb性欧美在线观看| 国产成人在线看| 韩日精品视频一区| 日av在线不卡| 日韩和欧美一区二区三区| 夜夜夜精品看看| 亚洲欧美怡红院| 国产精品日韩成人| 欧美极品xxx| 国产三级精品视频| 精品国产一区a| 精品日韩欧美在线| 精品国产伦一区二区三区免费 | 亚洲午夜激情网页| 亚洲乱码国产乱码精品精可以看| 中文字幕不卡在线| 欧美韩日一区二区三区四区| 国产亚洲一二三区| 中文字幕精品一区| 国产精品丝袜一区| 国产精品不卡在线观看| 自拍偷拍亚洲综合| 亚洲视频你懂的| 亚洲色图欧洲色图婷婷| 亚洲视频一区在线| 一区二区三区在线免费观看| 亚洲综合一二区| 视频在线在亚洲| 久久国产剧场电影| 国产美女一区二区三区| 国产成人av自拍| 91丝袜高跟美女视频| 色av一区二区| 欧美一二三区精品| 久久综合国产精品| 亚洲欧美一区二区在线观看| 一区二区三区中文在线观看| 亚瑟在线精品视频| 奇米影视7777精品一区二区| 激情综合网av| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产成人免费av在线| 成人av在线网站| 国产成人午夜精品5599| 欧美一区二区三区在线观看视频| 精品国产露脸精彩对白| 久久精子c满五个校花| 欧美一卡二卡三卡| 亚洲欧洲色图综合| 亚洲第四色夜色| 精品一区二区在线免费观看| 六月丁香婷婷色狠狠久久| 99精品一区二区| 欧美一区二区在线视频| 欧美国产日韩精品免费观看| 亚洲永久精品大片| 久久福利资源站| 丁香网亚洲国际| 91免费版在线| 777午夜精品免费视频| 精品福利二区三区| 亚洲婷婷国产精品电影人久久| 亚洲免费毛片网站| 日日嗨av一区二区三区四区| 国产福利一区二区三区视频| 国产成人丝袜美腿| 欧美亚洲国产一区二区三区| 日韩三级.com| 一级日本不卡的影视| 国产精品一品二品| 欧美日本国产视频| 国产精品成人免费在线| 全部av―极品视觉盛宴亚洲| 91免费版在线| 这里只有精品电影| 国产精品无人区| 日本不卡一区二区三区 | 国产乱人伦偷精品视频免下载| 亚洲成人久久影院| 国产91精品一区二区麻豆网站| 欧美丝袜丝nylons| 全国精品久久少妇| 亚洲综合激情网| 久久久精品tv| 国产亚洲va综合人人澡精品 | 一区二区三区四区不卡在线 | 亚洲国产毛片aaaaa无费看| 国内精品久久久久影院薰衣草| 欧美在线视频日韩| 国产精品久久免费看| 国产一区免费电影| 8x8x8国产精品| 亚洲成人午夜影院| 色综合一个色综合亚洲| 国产精品久久综合| 日韩精品在线看片z| 亚洲图片欧美色图| 91免费看`日韩一区二区| 国产精品色在线| 国产成人av电影| 久久久久久97三级| 国产精品一品视频| 久久久久国产精品麻豆ai换脸 | 波多野结衣一区二区三区 | 欧美激情综合网| 国产高清亚洲一区| 2020国产精品自拍| 久久成人麻豆午夜电影| 欧美精品123区| 视频一区二区国产| 欧美夫妻性生活| 日韩精品欧美精品| 日韩一区二区三免费高清| 午夜视黄欧洲亚洲| 欧美日韩亚洲国产综合| 香蕉成人啪国产精品视频综合网 | 日韩欧美一区在线| 另类调教123区 | 欧美极品xxx| 成人av集中营| 亚洲日本丝袜连裤袜办公室| 91视频91自| 亚洲一区二区在线观看视频 | 国产精品原创巨作av| 国产亚洲欧美日韩俺去了| 国产成人亚洲综合a∨婷婷| 国产视频一区在线播放| 成人午夜在线免费| 亚洲女同女同女同女同女同69| 色综合久久综合网| 亚洲国产精品久久久久婷婷884| 欧美军同video69gay| 久久精品av麻豆的观看方式| 久久久久久久久久美女| 成人av网站大全| 亚洲午夜电影在线观看| 日韩欧美国产一二三区| 国产露脸91国语对白| 国产精品不卡视频| 欧美伊人久久大香线蕉综合69| 亚洲成人先锋电影| 精品国产一区二区国模嫣然| 波多野结衣在线一区| 亚洲成人免费在线观看| 精品国产乱码久久久久久闺蜜| 成人一级黄色片| 午夜在线成人av| 久久精品水蜜桃av综合天堂| 色婷婷av久久久久久久| 日韩av电影天堂| 国产精品毛片大码女人| 欧美性猛交xxxx黑人交| 国产毛片精品视频| 亚洲一区二区综合| 久久一夜天堂av一区二区三区| 色综合久久综合中文综合网| 久久99日本精品| 亚洲黄色尤物视频| 26uuu色噜噜精品一区二区| 91丨九色丨尤物| 久久99国产精品免费网站| 亚洲天堂福利av| 精品99999| 欧美在线三级电影| 国产一区欧美一区| 亚洲一本大道在线| 国产精品免费视频观看| 在线不卡a资源高清| 成人教育av在线| 久久不见久久见免费视频1| 亚洲综合自拍偷拍| 欧美激情在线看| 欧美一区二区三区电影| 色噜噜狠狠一区二区三区果冻| 狠狠狠色丁香婷婷综合久久五月| 夜夜嗨av一区二区三区网页 | 婷婷一区二区三区|