全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:863
推到 Plurk!
推到 Facebook!

DSPack的Demos一問

尚未結案
mitao
一般會員


發表:34
回覆:5
積分:7
註冊:2003-08-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-03 14:13:15 IP:163.25.xxx.xxx 未訂閱
小弟我把Demos\Playcap裡的程式加上一個旋轉檯控制的程式碼後...可以執行,不過當選擇Device後要關閉時卻會出現下列錯誤! 或是 請問是哪裡出問題了..?謝謝~~ 以下是部分程式碼..
//--------------------------------------------------------------------
#include 
#pragma hdrstop
#include "main.h"
//--------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "DSPack"
#pragma resource "*.dfm"
TMainForm *MainForm;
TSysDevEnum *SysDev;
HANDLE hComm;
//---------------------------------------------------------------------------
__fastcall TMainForm::TMainForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::FormCreate(TObject *Sender)
{
  SysDev = new TSysDevEnum(CLSID_VideoInputDeviceCategory);
  if (SysDev->CountFilters > 0) {
    int i;
    TMenuItem *Device;
    for(i = 0; i < SysDev->CountFilters; i++) {
      Device = new TMenuItem(Devices);
      Device->Caption = SysDev->Filters[i].FriendlyName;
      Device->Tag = i;
      Device->OnClick = DevicesClick;
      Devices->Add(Device);
    }
  }
//------------------------另外加的部分(開啟RS232),可能是這裡有問題
char *ComNo;
DCB dcb;
String Temp;
Temp="COM2";
ComNo=Temp.c_str();
hComm=CreateFile(ComNo,GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
if(hComm==INVALID_HANDLE_VALUE)
{
 MessageBox(0,"¶}±Ò³q°T°ð¿ù»~","Comm Error",MB_OK);
 return;
}
GetCommState(hComm,&dcb);
dcb.BaudRate=CBR_9600;
dcb.ByteSize=8;
dcb.Parity=NOPARITY;
dcb.StopBits=ONESTOPBIT;
if(!SetCommState(hComm,&dcb))
{
 MessageBox(0,"³q°T°ð³]©w¿ù»~","Set Error",MB_OK);
 CloseHandle(hComm);
 return;
}
//------------------------
}
//--------------------------------------------------------------------
void __fastcall TMainForm::DevicesClick(TObject *Sender)
{
  FilterGraph->ClearGraph();
  FilterGraph->Active = false;
  Filter->BaseFilter->Moniker = SysDev->GetMoniker(((TMenuItem *)Sender)->Tag);
  FilterGraph->Active = true;
  ICaptureGraphBuilder2 *Graph = NULL;
  IBaseFilter *SourceFilter = NULL;
  IBaseFilter *VideoFilter = NULL;
  CheckDSError(FilterGraph->QueryInterface(IID_ICaptureGraphBuilder2, &Graph));
  CheckDSError(VideoWindow->QueryInterface(IID_IBaseFilter, &VideoFilter));
  CheckDSError(Filter->QueryInterface(IID_IBaseFilter, &SourceFilter));
  Graph->RenderStream(&PIN_CATEGORY_PREVIEW, NULL, SourceFilter, NULL, VideoFilter);
  FilterGraph->Play();
  Graph->Release();
  VideoFilter->Release();
  SourceFilter->Release();
}
//--------------------------------------------------------------------
void __fastcall TMainForm::FormDestroy(TObject *Sender)
{
  delete SysDev;
}
//--------------------------------------------------------------------
void __fastcall TMainForm::FormCloseQuery(TObject *Sender, bool &CanClose)
{
  FilterGraph->Active = false;        
}
//--------------------------------------------------------------------
void __fastcall TMainForm::Button2Click(TObject *Sender)
{
 Close();
}
//--------------------------------------------------------------------
 
JerryKuo
版主


發表:42
回覆:571
積分:322
註冊:2003-03-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-08 17:50:49 IP:61.230.xxx.xxx 未訂閱
你好: 旋轉檯控制的程式碼,是不是要旋轉台才能幫你測試找問題囉?
系統時間:2024-05-13 5:19:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!