/ 1階層)  USBカメラの制御
□投稿者/ vedfukui 【202.171.144.233】(2010/12/13(Mon) 17:45:08)

http://www.voraxed.co.jp/files/usbcamera.zip
    No5054に返信(vedfukuiさんの記事)
    > USBカメラを制御する HSPDSC.DLLを使って
    > なでしこでUSBカメラ画面をフル画面で表示する
    > プログラムをサンプルを参考に作ってみたのですが、
    > 「デバイスの解像度プロパティページ」を表示させる
    > 方法がわかりません。

    HSPDSC.DLLの作者の方に、設定方法を教えていただきました。
    DLLを指定する方法は、下記の1行だそうです。

    ●dsc_DevPinProp(p1)=DLL("hspdsc.dll","int dsc_DevPinProp(HWND hWnd)")

    タスクトレイに常駐しているアイコンを右クリックして
    デバイスの解像度プロパティページを表示して、
    解像度を変更できるようにソースを修正したのですが・・・

    なぜか、解像度を変更してから、
    カメラ画面が表示されるまでが非常に時間がかかります。

    さらに、1回目の解像度の変更は可能ですが、
    2回目以降に変更しても、カメラ画面が再生してくれません。

    なぜでしょう・・・・???

    どたなた教えていただければ幸いです。


    ===============================


    W=デスクトップW
    H=デスクトップH
    母艦のタイトルは「フォラックス教育 」&W&「x」&H
    母艦の幅はW
    母艦の高さはH
    母艦の位置は「0,0」
    母艦のスタイルは「枠可変」


    x=母艦の幅
    y=母艦の高さ

    # なでラーではないので、書き方がかなりいい加減だと思います。
    # とりあえず、動きますよーって感じです。
    # HSP側のヘッダとソースを参考にすると良いかも。

    # HSPDSCの命令
    ●dsc_Version()=DLL("hspdsc.dll","int dsc_Version()")
    ●dsc_Init()=DLL("hspdsc.dll","int dsc_Init()")
    ●dsc_GetActiveSel()=DLL("hspdsc.dll","int dsc_GetActiveSel()")
    ●dsc_SetActiveSel(p1)=DLL("hspdsc.dll","int dsc_SetActiveSel(INT p1)")
    ●dsc_GetRef()=DLL("hspdsc.dll","int dsc_GetRef()")
    ●dsc_GetDeviceList(p1,p2)=DLL("hspdsc.dll","int dsc_GetDeviceList(LP* pDevList,INT flg)")
    # dsc_VMRMixImage は 実数(float)のなでしこでの定義方法が不明なため掲載なし(判明しだい掲載)
    ●dsc_Open(p1,p2,p3,p4,p5)=DLL("hspdsc.dll","int dsc_Open(INT devid,INT p2,INT p3,INT p4,INT p5)")
    ●dsc_Play(p1,p2,p3,p4,p5)=DLL("hspdsc.dll","int dsc_Play(HWND hWnd,INT x1,INT y1,INT x2,INT y2)")
    ●dsc_Play2()=DLL("hspdsc.dll","int dsc_Play2()")
    ●dsc_ReSize(p1,p2,p3,p4,p5)=DLL("hspdsc.dll","int dsc_ReSize(HWND hWnd,INT x1,INT y1,INT x2,INT y2)")
    ●dsc_StreamFilterList(p1)=DLL("hspdsc.dll","int dsc_StreamFilterList(LP* pSList)")
    ●dsc_Stop()=DLL("hspdsc.dll","int dsc_Stop()")
    ●dsc_SetCapConfig(p1)=DLL("hspdsc.dll","int dsc_SetCapConfig(INT p1)")
    ●dsc_Close()=DLL("hspdsc.dll","int dsc_Close()")
    ●dsc_Exit()=DLL("hspdsc.dll","int dsc_Exit()")
    ●dsc_GetImage(p1,p2,p3,p4,p5)=DLL("hspdsc.dll","int dsc_GetImage(HDC hDC,INT x1,INT y1,INT x2,INT y2)")
    ●dsc_GetImageMem(p1,p2,p3)=DLL("hspdsc.dll","int dsc_GetImageMem(LP* pIData,LP* pISize,LP* pIHead)")
    ●dsc_GetImageMemSize(p1)=DLL("hspdsc.dll","int dsc_GetImageMemSize(INT p1)")
    ●dsc_SaveBMP(p1)=DLL("hspdsc.dll","int dsc_SaveBMP(CHAR savefile)")
    ●dsc_GetCapInfo(p1)=DLL("hspdsc.dll","int dsc_GetCapInfo(INT p1)")
    # dsc_FilterProp はUnicode文字列で渡す必要があるためとりあえず掲載なし(判明しだい掲載)
    ●dsc_DevPinProp(p1)=DLL("hspdsc.dll","int dsc_DevPinProp(HWND hWnd)")
    ●dsc_GetCodecList(p1,p2)=DLL("hspdsc.dll","int dsc_GetCodecList(LP* pSList,INT p1)")


    #バージョンを表示
    バージョンは0 #初期化する
    バージョン=dsc_Version()

    #デバイスを数える
    dsc_Init() #HSPDSC初期化
    数は0

    #明示的にメモリを確保します。
    #(HSPのsdimと同等)

    デバイスは文字列型
    デバイスに4096を確保

    数=dsc_GetDeviceList(POINTER(デバイス),0)

    #エラートラップ
    もし数=-2ならばdsc_Exit()して終了
    もし数=0ならばdsc_Exit()して終了

    #デバイス選択
    ダイアログ数値変換は1
    デバイスアイディは「0」
    もしデバイスアイディが-1以下ならば「そのインデックスのデバイスは表示できません。」を言ってdsc_Exit()して終了
    もしデバイスアイディが数-1 超ならば「そのインデックスのデバイスは表示できません。」を言ってdsc_Exit()して終了
    もしデバイスアイディが""ならばdsc_Exit()して終了

    #実際に表示する

    dsc_Open(デバイスアイディ,1,0,1,2)
    もしそれが0未満なら「オープンエラーが発生しました。」を言ってdsc_Exit()して終了

    //母艦ハンドルはハンドル

    dsc_Play(母艦ハンドル,1,1,x,y)
    もしそれが0未満なら「レンダリングエラーが発生しました。」を言ってdsc_Close()とdsc_Exit()して終了

    #「現在デバイスは再生中です。」と言う

    母艦のスタイルは「枠可変」
    母艦をタスクトレイ表示。

    母艦のタスクトレイ右クリックした時は
    dsc_Stop
    dsc_DevPinProp(母艦ハンドル)
    x=母艦の幅
    y=母艦の高さ
    dsc_ReSize(母艦ハンドル,1,1,x,y)
    dsc_Play(母艦ハンドル,1,1,x,y)
    母艦のタイトルは「フォラックス教育 」&x&「x」&y




    母艦のタスクトレイクリックした時は
      NはN+1。
       もし、N=1ならば
    dsc_ReSize(母艦ハンドル,1,1,320,240)
    dsc_Play(母艦ハンドル,1,1,320,240)
    母艦の幅は330
    母艦の高さは250
    母艦の位置は「0,0」
    母艦のタイトルは「フォラックス教育 320x240」
       もし、N=2ならば
    dsc_ReSize(母艦ハンドル,1,1,640,480)
    dsc_Play(母艦ハンドル,1,1,640,480)
    母艦の幅は650
    母艦の高さは490
    母艦の位置は「0,0」
    母艦のタイトルは「フォラックス教育 640x480」
       もし、N=3ならば
    dsc_ReSize(母艦ハンドル,1,1,800,600)
    dsc_Play(母艦ハンドル,1,1,800,600)
    母艦の幅は810
    母艦の高さは610
    母艦の位置は「0,0」
    母艦のタイトルは「フォラックス教育 800x600」
       もし、N=4ならば
    dsc_ReSize(母艦ハンドル,1,1,1024,768)
    dsc_Play(母艦ハンドル,1,1,1024,768)
    母艦の幅は1034
    母艦の高さは778
    母艦の位置は「0,0」
    母艦のタイトルは「フォラックス教育 1024x768」
       もし、N=5ならば
    dsc_ReSize(母艦ハンドル,1,1,W,H)
    dsc_Play(母艦ハンドル,1,1,W,H)
    母艦の幅はW
    母艦の高さはH
    母艦のタイトルは「フォラックス教育 」&W&「x」&H
    N=0


    母艦のサイズ変更した時は
    x=母艦の幅
    y=母艦の高さ
    dsc_ReSize(母艦ハンドル,1,1,x,y)
    dsc_Play(母艦ハンドル,1,1,x,y)
    母艦のタイトルは「フォラックス教育 」&x&「x」&y


    母艦の閉じた時は
    dsc_Stop()
      dsc_Close()
      dsc_Exit()
      終了


削除キー/

 
関連内容&回答

Nomal USBカメラの制御 / vedfukui (10/12/13(Mon) 15:55) [#5054]
Nomal USBカメラの制御 / vedfukui (10/12/13(Mon) 17:45) [#5055] 【 表 示 内 容 】
  └Nomal Re[2]: USBカメラの制御 / 焼きそば (10/12/19(Sun) 02:04) [#5070]
    └Nomal Re[3]: USBカメラの制御 / vedfukui (10/12/23(Thu) 20:14) [#5077] 解決済み!



Name/
E-Mail/
Title/
URL/
Icon/ (画像を選択/サンプル一覧)
削除キー/ (半角8文字以内)
確認キー/ (”質問掲示板”と記入)
解決済み! BOX/ 解決したらチェック
 

Pass/

BBS CGI RSS CGI
Child Tree RSS/SPAM対応版