Ir ao conteúdo
  • Cadastre-se

Programação no BCB !!


jhonatan.macedo

Posts recomendados

olá galera,

sou um fã de programação mas ainda sim tenho dificuldades...

foi passado para mim no curso de Eng Mecatronica a contrução de um prototipo ROV, uma specie de submarino controlado a distancia(cabos).

optei por toda a comunicação entre os motores CC e a placa em DB25(port.paralela) e o programa feito no BCB(borland C++ Builder 6), até ai fasil com o uso das definiçoes de outport+localização.

Estou tendo dificuldades em programar a WEBCAM via USB, pensei em usar as funcões capCreateCaptureWindow mas estou realmente em apuros pois não sei inglês ( estou mudando este quadro em nivel de urgencia).

eu estou aberto a dicas com explicações se possivel pois não uso CTRL+C, CTRL+V, mas tmb não posso perder ponto.

Muito grato, espero que v6 possam me ajudar.

Link para o comentário
Compartilhar em outros sites

segundo exposições este programa funciona (mas a apresentação eu me ferro), tenho que saber pra q serve cada "include", "variavel", etc.

:( esse 3 semestre ta pancada ! ! !.

Um TPanel com Width = 322, Height = 242

Um TButton Caption = 'Inicia' OnClick = cmdStartClick

Um TButton Caption = 'Salvar' OnClick = cmdSaveFrameClick

//Inicio do programa

#include <vcl.h>

#include <vfw.h>

#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

HWND w;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::cmdStartClick(TObject *Sender)

{

w = capCreateCaptureWindow("Meu Video", WS_CHILD | WS_VISIBLE,

1, 1, 320, 240, Panel1->Handle, 0);

int iCapDrv;

for (iCapDrv=0; iCapDrv<10; iCapDrv++)

if (capDriverConnect(w, iCapDrv))

break;

if (iCapDrv >= 10)

throw Exception("Erro: Não foram encontrados dispositivos.");

// Aqui poderíamos chamar a função a seguir

// para selecionar a resolução em tempo de execução

// capDlgVideoFormat(w);

capPreview(w, true);

capPreviewScale(w, true);

capPreviewRate(w, 40);

}

Link para o comentário
Compartilhar em outros sites

Informaçoes da NET...

o include vfw.h e linkando a biblioteca vfw32 eu consegui usar a função capCreateCaptureWindow, mas tive alguns problemas com as constantes, por isso, se você tiver o mesmo problema estarei passando os valores delas também, se a função não for encontrada você deverá atualizar seu compilador...

1. Crie uma janela de captura, supondo q a janela principal seja hWndPai, e a variável q estarei armazenando a janela d captura seja hWndCap:

Código:

hWndCap = capCreateCaptureWindow(NULL, WS_CHILD| WS_VISIBLE, 0, 0, 320, 240, hWndPai, 0);

SendMessage(hWndCap, WM_CAP_DRIVER_CONNECT, 0, 0);

2. Crie um timer de, por exemplo, 100 milisegundos:

Código:

SetTimer(hWndPai, 0, 100, NULL);

3. No evento WM_TIMER (pode ser tanto na fila de mensagens quanto na WindowProcedure) atualize a imagem:

Código:

SendMessage(hWndCap, WM_CAP_GRAB_FRAME, 0, 0);

4. Antes de sair da aplicação encerre o timer e desconecte a captura:

Código:

KillTimer(hWndPai, 0);

SendMessage(hWndCap, WM_CAP_DRIVER_DISCONNECT, 0, 0);

Bom, é isso ae, esse é o modo mais simples, os valores das constantes seguem abaixo:

Código:

#define WM_CAP_DRIVER_CONNECT 1034 //pARA QUE ESTAS CONSTANTES??

#define WM_CAP_DRIVER_DISCONNECT 1035 //

#define WM_CAP_GRAB_FRAME 1084 // SÃO CAMINHOS?

Vou para a aula, mas eu volto!!!!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...