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

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

?? txiso.cpp

?? VHPD1394 V1.15驅動程序源碼
?? CPP
字號:
/************************************************************************
 *  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
 *  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
 *  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
 *  PURPOSE.
 ************************************************************************/

/************************************************************************
 *
 *  Module:       txiso.cpp
 *  Long name:    VHPD1394 isochronous transmit example
 *  Description:  This sample demonstrates how to use the VHPD1394
 *                device driver to transmit isochronous data to an
 *                isochronous channel.
 *                This sample is based on the VHPDLib C++ class library.
 *                It mainly demonstrates the usage of the class CVhpdIsoTalker.
 *
 *  Runtime Env.: implemented as Win32 console application
 *  Used link libraries:
 *                vhpdlib.lib, setupapi.lib, user32.lib
 *  Author(s):    Frank Senf
 *  Company:      Thesycon GmbH, Ilmenau
 ************************************************************************/

// standard includes
#include <stdio.h>
#include <conio.h>

// definitions of used classes
#include "IsoTalker.h"


// print prefixes
#define PFX   "TXISO: "
#define PFXERR  "TXISO Error: "
// standard help message
static const char g_UseHelp[] = "For help, use TXISO -h.";


// GLOBAL VARIABLES

// isochronous talker instance
CIsoTalker g_IsoTalker;

// parameters of the isochronous data stream to transmit
// number of bytes to put to a single isochronous frame
// has to be DWORD-aligned
// (no default, always has to be specified)
unsigned long g_BytesPerIsoFrame;

// number of the channel used to transmit data (default is channel 0)
int g_Channel =0;

// speed of the isochronous data stream to transmit
// (default is 400 MBit/s)
VHPD_BUS_SPEED g_UsedSpeed =BusSpeed400;


// parameters of the buffer pool used for transmitting
// number of buffers in pool
unsigned long g_NumberOfBuffers =8;

// each buffer contains 160 isochronous frame, so it is transmitted in 20 ms
unsigned long g_FramesPerBuffer =160;


// name of the input file (optional)
const char* g_InFileName =NULL;


/*******************************************************************/
// support functions
/*******************************************************************/

//
// display usage information
//
void
PrintHelp(void)
{

  fprintf(stdout,
    "\n"
    "usage: TXISO BytesPerIsoFrame <Options>\n"
    "\n"
    " BytesPerIsoFrame (required)\n"
    "  number of bytes to put to a single isochronous frame (has to be DWORD-aligned)\n"
    "\n"
    " Options:\n"
    "  -cChannel: isochronous channel to be used for transmission (optional, default %d)\n"
    "  -sSpeed: transfer speed of the selected channel (optional)\n"
    "           (1 -> 100MBit/s, 2 -> 200MBit/s, 4 -> 400MBit/s, default %d)\n"
    "  -nBufferCount: number of buffers in buffer queue\n"
    "                 (optional, default %d)\n"
    "  -bFramesPerBuffer: number of isochronous frames contained in one buffer\n"
    "                     (optional, default %d)\n"
    "  -fInputFile:  file that contains the isochronous data to be transmitted (optional)\n"
    "                random data will be transmitted if this parameter is omitted\n"
    ,g_Channel,g_UsedSpeed,g_NumberOfBuffers,g_FramesPerBuffer);

  fprintf(stdout,"\nPress any key to continue\n");
  getch();

} // PrintHelp



/*******************************************************************/
// main function
/*******************************************************************/
int __cdecl main(int argc, char *argv[])
{

/*******************************************************************/
// fixed command line argument

  // check for required arguments
  if ( argc < 2 ) {
    // at least BytesPerIsoFrame has to be specified
    PrintHelp();
    return 1;
  }

  // store values for required arguments
  int val;
  if ( 1==sscanf(argv[1]," %i ",&val) ) {
    // check if BytesPerIsoFrame is DWORD-aligned
    if ( val%sizeof(unsigned long) ) {
      fprintf(stderr, PFXERR" BytesPerIsoFrame is not DWORD-aligned\n");
      return 3;
    } else {
      // store value
      g_BytesPerIsoFrame = val;
    }
  } else {
    // invalid option format, ignore it
    fprintf(stderr, PFXERR"Invalid BytesPerIsoFrame argument\n");
    return 4;
  }


/*******************************************************************/
// optional command line options


  int i;
  char* p;
  for ( i=1; i<argc; i++ ) {
    p = argv[i];
    if ( (*p) == '-' ) {
      p++;
      switch ( *p ) {
        case 'h':
        case 'H':
        case '?':
          // help
          PrintHelp();
          return 0;
                
        // isochronous channel
        case 'c':
          // read number
          if ( 1==sscanf(p+1," %i ",&val) ) {
            if ( val>=0 && val<=63 ) {
              // valid channel number, store it
              g_Channel = val;
            } else {
              // invalid channel number, ignore it
              fprintf(stderr, PFXERR"Invalid channel number %d ignored\n",val);
            }
          } else {
            // invalid option format, ignore it
            fprintf(stderr, PFXERR"Invalid argument '%s' ignored\n",argv[i]);
          }
          break;
        // transfer rate of isochronous data stream
        case 's':
          // read number
          if ( 1==sscanf(p+1," %i ",&val) ) {
            // check value
            switch ( val ) {
              case 1:
                g_UsedSpeed = BusSpeed100; break;
              case 2:
                g_UsedSpeed = BusSpeed200; break;
              case 4:
                g_UsedSpeed = BusSpeed400; break;
              default:
                // invalid transfer rate, ignore it
                fprintf(stderr, PFXERR"Invalid transfer rate %d ignored\n",val);
                break;
            } // switch
          } else {
            // invalid option format, ignore it
            fprintf(stderr, PFXERR"Invalid argument '%s' ignored\n",argv[i]);
          }
          break;
        // buffer count
        case 'n':
          // read number
          if ( 1==sscanf(p+1," %i ",&val) ) {
            // store value
            g_NumberOfBuffers = val;
          } else {
            // invalid option format, ignore it
            fprintf(stderr, PFXERR"Invalid argument '%s' ignored\n",argv[i]);
          }
          break;
        // buffer size (in iso frames per buffer)
        case 'b':
          // read number
          if ( 1==sscanf(p+1," %i ",&val) ) {
            // store value
            g_FramesPerBuffer = val;
          } else {
            // invalid option format, ignore it
            fprintf(stderr, PFXERR"Invalid argument '%s' ignored\n",argv[i]);
          }
          break;
        // input file name
        case 'f':
          if ( *(p+1) != 0 ) {
            // save string pointer
            g_InFileName = p+1;
          } else {
            // invalid filename
            fprintf(stderr, PFXERR"Invalid argument '%s' ignored\n",argv[i]);
          }
          break;
        // unknown options
        default:
          fprintf(stderr, PFXERR"Unrecognized option '%s' ignored. %s\n",argv[i],g_UseHelp);
          break;
      } // switch
    }
  } // for


/*******************************************************************/
// setup g_IsoTalker

  unsigned long Status;
  // open the input file if a file name was given
  if ( g_InFileName != NULL ) {
    Status = g_IsoTalker.OpenFile(g_InFileName);
    if ( Status != 0 ) {
      // ERROR !!!
      fprintf(stderr, PFXERR"Open input file '%s' failed (0x%08X)\n",g_InFileName,Status);
      return 10;
    }
  }

  // prepare an OS-internal device list used for the open call
  HDEVINFO DevList; DevList = NULL;
  // device list will contain devices that provide the VHPD_IID interface
  // please refer to to the documentation (chapter 7.4) for details on how 
  // to define your private interface (strongly recommended)
  const GUID VhpdDefaultIID = VHPD_IID;
  DevList = CVhpd::CreateDeviceList(&VhpdDefaultIID);
  if ( DevList == NULL ) {
    // ERROR !!!
    fprintf(stderr, PFXERR"CreateDeviceList failed\n");
    goto Exit;
  }
  // open a handle to a device, we use device zero for now
  Status = g_IsoTalker.Open(0,DevList,&VhpdDefaultIID);
  if ( Status != VHPD_STATUS_SUCCESS ) {
    // ERROR !!!
    // this may be caused by the fact that currently no device associated to the
    // VHPD1394 driver is connected to the local node (this computer)
    fprintf(stderr, PFXERR"Failed to open the device (0x%08X)\n",Status);
    goto Exit;
  }
  // device opened, destroy the device list, we don't need it anymore
  CVhpd::DestroyDeviceList(DevList);
  DevList = NULL;

  // setup the g_IsoTalker
  // NOTE: we call CVhpdIsoChannel::SetupTalk()
  Status = g_IsoTalker.SetupTalk(
              (g_BytesPerIsoFrame*8000),  // expected maximum bandwidth (bytes/s)
              g_FramesPerBuffer,  // isochronous frames hold by a single buffer
              g_NumberOfBuffers,  // number of buffers used for data transmission
              g_Channel,          // number of isochronous channel
              g_UsedSpeed         // transfer speed of isochronous channel
              );
  if ( Status != VHPD_STATUS_SUCCESS ) {
    // ERROR !!!
    fprintf(stderr, PFXERR"Failed to initialize talker (0x%08X)\n",Status);
    goto Exit;
  }
  // start worker thread of g_IsoTalker
  // this worker thread continuously fills and submits all buffers
  // of the g_IsoTalker pool to the driver and finally starts data transmission
  if ( !g_IsoTalker.StartThread() ) {
    // ERROR !!!
    fprintf(stderr, PFXERR"Failed to start worker thread\n");
    goto Exit;
  }


/*******************************************************************/
// now loop until we are told to exit

  fprintf(stdout, PFX"Transmitting isochronous data ... press any key to exit\n");
  for(;;) {
    // query current data rate transported via this file handle
    VHPD_QUERY_RATE_COUNTER RateCount;
    __int64 r;
    memset(&RateCount,0x0,sizeof(RateCount));
    Status = g_IsoTalker.QueryRateCounter(&RateCount);
    if (Status != VHPD_STATUS_SUCCESS) {
      // ERROR !!!
      fprintf(stderr, "\n"PFXERR"Failed to query data rate (0x%08X)",Status);
      break;
    }
    // convert to bytes per second
    r = RateCount.CurrentMeanValue/*bytes*/;
    r = (1000*r) / RateCount.FilterDelay/*ms*/;
    // display state of data reception
    fprintf(stdout, PFX"Avg. rate is %I64d Bytes/s  %d buffer errors (last 0x%08X)     \r",
    (__int64)r, g_IsoTalker.GetErrorCount(),g_IsoTalker.GetLastError());

    // check if thread is still running
    // worker thread may terminate itself, even if ShutdownThread was not called
    // (e.g. because PreProcessBuffer returns false or an internal error was detected)
    if ( g_IsoTalker.ThreadExited() ) {
      fprintf(stdout,"\n"PFX"Worker thread has terminated ... aborting.\n");
      break;
    }

    // check for user break
    if ( kbhit() ) {
      getch();
      break;
    }

    // suspend some time
    Sleep(500);

  } // for()

  fprintf(stdout, "\n"PFX"Exiting ...\n");

  // stop data transmission
  g_IsoTalker.StopChannel();

/*******************************************************************/
// ERROR!!! or normal exit

// release claimed resources
Exit:
  if ( !g_IsoTalker.ShutdownThread() ) {
    // ERROR !!!
    fprintf(stderr, PFXERR"FATAL: Failed to stop worker thread\n");
  }
  g_IsoTalker.CloseFile();
  g_IsoTalker.Shutdown();
  g_IsoTalker.Close();

  return 0;

} // main

/*************************** EOF **************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本成人在线网站| 国产精品免费视频一区| 性欧美疯狂xxxxbbbb| 欧美性一二三区| 日韩av一级电影| 亚洲精品在线三区| 波波电影院一区二区三区| 亚洲欧洲无码一区二区三区| 色偷偷久久人人79超碰人人澡| 日产国产欧美视频一区精品| 日韩欧美一区二区免费| 蜜臀久久久久久久| 久久色在线观看| av亚洲精华国产精华| 亚洲欧美偷拍卡通变态| 欧美日韩免费在线视频| 国内精品写真在线观看| 中文字幕一区日韩精品欧美| 欧美亚洲综合色| 国产在线精品视频| 亚洲精品免费播放| 日韩三级视频在线看| 成人在线综合网| 亚洲高清免费观看高清完整版在线观看| 久久69国产一区二区蜜臀| 国产欧美日韩精品a在线观看| 午夜精品久久久久久| 精品国产91乱码一区二区三区| 午夜精品久久久久久久久| 精品久久99ma| 91老师片黄在线观看| 免费亚洲电影在线| 亚洲欧洲精品天堂一级| 欧美第一区第二区| 色成人在线视频| 国产精品一品视频| 视频一区二区欧美| 中文av一区特黄| 欧美成人一区二区三区在线观看| 日韩精品91亚洲二区在线观看| 欧美色综合影院| 国产精品一区二区不卡| 手机精品视频在线观看| 亚洲欧洲制服丝袜| 欧美本精品男人aⅴ天堂| 欧美亚洲国产一卡| 成人av免费在线| 国产精品影视在线观看| 五月婷婷色综合| 亚洲黄一区二区三区| 中文在线一区二区| 精品久久久久久久久久久久久久久 | 亚洲区小说区图片区qvod| 日韩欧美一区二区视频| 日本电影亚洲天堂一区| 国产精品一区在线| 美女网站色91| 日韩激情中文字幕| 亚洲午夜三级在线| 最新国产精品久久精品| 中文字幕欧美激情一区| 久久久综合九色合综国产精品| 成人免费视频caoporn| 麻豆成人av在线| 一区二区久久久| 亚洲欧美另类小说| 国产精品美女久久久久久久久久久 | 国产91精品入口| 狠狠色丁香婷婷综合| 蜜臀av一区二区| 日本成人中文字幕在线视频| 青娱乐精品视频在线| 亚洲成人动漫在线观看| 亚洲午夜久久久久久久久久久| 91精品国产欧美一区二区| 欧美日韩在线直播| 欧美日韩高清一区| 这里只有精品免费| 日韩欧美黄色影院| 日韩美女一区二区三区| 欧美成人性战久久| 久久亚洲春色中文字幕久久久| 成年人网站91| caoporm超碰国产精品| 一本久久综合亚洲鲁鲁五月天| 午夜精品福利一区二区蜜股av| 日韩免费电影一区| 26uuu欧美日本| 日本一区二区免费在线观看视频| 色综合久久久久久久久久久| 日本韩国欧美在线| 欧美日韩aaa| 精品伦理精品一区| 亚洲国产精品精华液ab| 中文字幕一区二区日韩精品绯色| 欧美一区二区久久| 久久综合网色—综合色88| 国产精品欧美极品| 亚洲va天堂va国产va久| 久久99精品久久只有精品| 韩国三级电影一区二区| 国产成人免费在线观看不卡| 不卡的av电影| 欧美人狂配大交3d怪物一区 | 日韩国产精品大片| 精品一区二区三区在线视频| 国产在线日韩欧美| 99精品国产91久久久久久| 欧美三级午夜理伦三级中视频| 成人网男人的天堂| 91久久免费观看| 欧美精品一区二区三区在线播放 | 亚洲v日本v欧美v久久精品| 日本不卡在线视频| 欧美日免费三级在线| 欧美一二三区精品| 自拍偷拍亚洲综合| 日韩高清电影一区| 成人h版在线观看| 欧美一区二区三区婷婷月色| 国产欧美精品一区| 五月婷婷激情综合网| 成人精品免费看| 日韩西西人体444www| 亚洲免费在线看| 国产一区二区三区国产| 欧美日韩国产一级片| 中文字幕在线不卡| 久久99久久99精品免视看婷婷 | 亚洲美女淫视频| 无码av免费一区二区三区试看 | 精品一区二区在线看| 色综合天天综合网天天狠天天| 狠狠网亚洲精品| 欧美三区免费完整视频在线观看| 色哟哟一区二区在线观看| 精品欧美一区二区三区精品久久| 欧美伦理电影网| 中文在线资源观看网站视频免费不卡| 欧美mv日韩mv国产网站app| 亚洲乱码中文字幕综合| 国产成人精品一区二区三区四区| 国产一区二区三区四区五区入口| 日本视频在线一区| 欧美三区免费完整视频在线观看| 欧美日韩亚洲综合在线 | 亚洲色图欧洲色图| 国产精品一区二区三区99| 欧美一二区视频| 午夜日韩在线电影| 一本大道av一区二区在线播放| 欧美视频中文字幕| 国产女人18毛片水真多成人如厕| 国产精品乱人伦中文| 国产乱码精品1区2区3区| 日韩久久久久久| 日本在线不卡视频一二三区| 欧美日韩视频一区二区| 亚洲欧洲成人自拍| 97se亚洲国产综合自在线| 国产精品福利一区| 91在线观看下载| 亚洲欧美日韩国产中文在线| 91丨九色porny丨蝌蚪| 中文字幕精品一区二区三区精品 | 欧美日韩mp4| 亚洲欧美激情一区二区| 91偷拍与自偷拍精品| 亚洲免费av网站| 色综合欧美在线视频区| 亚洲精品视频自拍| 欧美三级中文字幕在线观看| 午夜电影久久久| 欧美一区二区精品在线| 激情综合色综合久久综合| 精品国产污污免费网站入口 | 亚洲精品菠萝久久久久久久| 成人av免费在线观看| 综合久久给合久久狠狠狠97色 | 国产乱码字幕精品高清av| 国产欧美日本一区视频| 成人av网址在线观看| 亚洲婷婷在线视频| 欧美日本视频在线| 麻豆极品一区二区三区| 国产欧美日韩在线| 91视频你懂的| 三级影片在线观看欧美日韩一区二区 | 久久99精品国产| 国产欧美日韩久久| 色婷婷综合五月| 日本人妖一区二区| 国产亚洲成年网址在线观看| 91视频免费看| 七七婷婷婷婷精品国产| 欧美国产禁国产网站cc| 91一区二区三区在线播放| 日韩一区精品视频| 国产亲近乱来精品视频| 在线观看日韩国产|