Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - wiserlander

#1
Hola, investigando en la wiki de wxWidgets y algunos sitios mas, encontré la manera de reproducir un sonido desde una aplicación gráfica hecha en CodeBlocks.

http://docs.wxwidgets.org/2.9.4/classwx_sound.html

Al dar clic a un botón suena un sonido, por ese lado todo perfecto, pero cuando pongo un segundo botón con un sonido diferente, al reproducir el primer sonido, sin que este llegue a acabar de sonar se para cuando le doy clic al segundo  botón.

Lo que me gustaría es que se puedan mesclar los diferentes sonidos de manera que se puedan reproducir asincronamente.

Encontré esto en la:

bool wxSound::Play (unsigned flags = wxSOUND_ASYNC ) const

Intente implementarlo en el código de lo que ya tengo hecho, pero no funciona.

wxSound(sonido).Play(wxSOUND_ASYNC);

El sonido 1 se para cuando inicio el sonido 2 y viceversa...

El codigo que tengo es el siguiente:

void VenFrame::OnButton3Click(wxCommandEvent& event)
{
    wxSound::Play(wxT("wsn.wav"));
}

void VenFrame::OnButton5Click(wxCommandEvent& event)
{
   wxSound("wsn2.wav").Play(wxSOUND_ASYNC);
}


Tambien probe con wxSOUND_ASYNC|wxSOUND_LOOP

Supuestamente el segundo botón, alias Button5 debería de hacer sonar un 2º sonido, sin que se pare el 1º sonido, eso entendí en la wiki de wxWidgets, pero el comportamiento es el mismo, los dos sonidos se paran cuando hago click en cualquiera de los dos botones, siendo una reproducción síncrona en este caso.

¿Alguien sabe como hacerlo de manera Asíncrona o conoce algún sitio con ejemplos prácticos?

Muchas gracias y saludos.




#2
Hola, acabo de instalar Codeblocks en la versión que trae ya el compilador Mingw.

Seria esta versión que he instalado -> http://sourceforge.net/projects/codeblocks/files/Binaries/12.11/Windows/codeblocks-12.11mingw-setup.exe

Luego aplique la variable de entorno de sistema para el compilador, habiendo probado la variable de sistema y la de usuario también.

Luego descargue y compile WxWidget -> http://sourceforge.net/projects/wxwindows/files/2.9.4/wxMSW-2.9.4-Setup.exe/download

Use lo siguiente para la compilación en el mismo orden en que están las lineas, pero esperando a que acabase cada proceso, todo sea dicho =)

mingw32-make -v

mingw32-make -f makefile.gcc clean

mingw32-make -f makefile.gcc BUILD=debug SHARED=0 MONOLITHIC=1 UNICODE=1

mingw32-make -f makefile.gcc BUILD=release SHARED=0 MONOLITHIC=1 UNICODE=1


Y al parece se compilo correctamente.

Luego intente compilar una aplicación de Wxwidget, habiendo configurado el patch de WX en las ventanas que salen al crear un proyecto.

El caso es que segui un tutorial de youtube para hacer la instalación, por si alguien quiere ver el tutorial que seguí... -> http://youtu.be/QuPiZ86EFhQ

Y el resultado fue negativo, por que me muestra un montón de errores y como estoy empezando con conocimientos muy limitados sobre el tema, pues no se interpretarlos.

El volcado de la construcción es el siguiente:

obj\Debug\wsnApp.o||In function `WinMain@16':|
C:\Users\elhackerpuntonet\Desktop\c++\wsn\wsnApp.cpp|17|undefined reference to `wxEntry(HINSTANCE__*, HINSTANCE__*, char*, int)'|
obj\Debug\wsnApp.o||In function `Z11wxCreateAppv':|
C:\Users\elhackerpuntonet\Desktop\c++\wsn\wsnApp.cpp|17|undefined reference to `wxAppConsoleBase::CheckBuildOptions(char const*, char const*)'|
obj\Debug\wsnApp.o||In function `ZN6wsnApp6OnInitEv':|
C:\Users\elhackerpuntonet\Desktop\c++\wsn\wsnApp.cpp|23|undefined reference to `wxInitAllImageHandlers()'|
obj\Debug\wsnApp.o||In function `ZN23wxCriticalSectionLockerC1ER17wxCriticalSection':|
C:\wx\include\wx\thread.h|308|undefined reference to `wxCriticalSection::Enter()'|
obj\Debug\wsnApp.o||In function `ZN23wxCriticalSectionLockerD1Ev':|
C:\wx\include\wx\thread.h|313|undefined reference to `wxCriticalSection::Leave()'|
obj\Debug\wsnApp.o||In function `ZN12wxEvtHandler9TryParentER7wxEvent':|
C:\wx\include\wx\event.h|3353|undefined reference to `wxEvtHandler::DoTryApp(wxEvent&)'|
obj\Debug\wsnApp.o||In function `ZN16wxAppConsoleBase22SetInitializerFunctionEPFP12wxAppConsolevE':|
C:\wx\include\wx\app.h|409|undefined reference to `wxAppConsoleBase::ms_appInitFn'|
obj\Debug\wsnApp.o||In function `ZN16wxAppConsoleBase11GetInstanceEv':|
C:\wx\include\wx\app.h|417|undefined reference to `wxAppConsoleBase::ms_appInstance'|
obj\Debug\wsnApp.o||In function `ZN6wsnAppC1Ev':|
C:\Users\elhackerpuntonet\Desktop\c++\wsn\wsnApp.h|15|undefined reference to `wxApp::wxApp()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x8)||undefined reference to `wxApp::GetClassInfo() const'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x14)||undefined reference to `wxObject::CreateRefData() const'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x18)||undefined reference to `wxObject::CloneRefData(wxRefCounter const*) const'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x24)||undefined reference to `wxEvtHandler::ProcessEvent(wxEvent&)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x28)||undefined reference to `wxEvtHandler::QueueEvent(wxEvent*)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x30)||undefined reference to `wxEvtHandler::SearchEventTable(wxEventTable&, wxEvent&)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x34)||undefined reference to `wxEvtHandler::TryBefore(wxEvent&)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x38)||undefined reference to `wxEvtHandler::TryAfter(wxEvent&)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x44)||undefined reference to `wxApp::GetEventTable() const'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x48)||undefined reference to `wxApp::GetEventHashTable() const'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x4c)||undefined reference to `wxEvtHandler::DoSetClientObject(wxClientData*)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x50)||undefined reference to `wxEvtHandler::DoGetClientObject() const'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x54)||undefined reference to `wxEvtHandler::DoSetClientData(void*)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x58)||undefined reference to `wxEvtHandler::DoGetClientData() const'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x5c)||undefined reference to `wxApp::Initialize(int&, wchar_t**)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x68)||undefined reference to `wxAppBase::OnRun()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x70)||undefined reference to `wxAppBase::OnExit()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x78)||undefined reference to `wxApp::CleanUp()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x80)||undefined reference to `wxAppConsoleBase::Exit()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x84)||undefined reference to `wxAppBase::OnInitCmdLine(wxCmdLineParser&)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x88)||undefined reference to `wxAppBase::OnCmdLineParsed(wxCmdLineParser&)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x8c)||undefined reference to `wxAppConsoleBase::OnCmdLineHelp(wxCmdLineParser&)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x90)||undefined reference to `wxAppConsoleBase::OnCmdLineError(wxCmdLineParser&)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x94)||undefined reference to `wxAppConsoleBase::FilterEvent(wxEvent&)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x98)||undefined reference to `wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0x9c)||undefined reference to `wxAppConsoleBase::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) const'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xa0)||undefined reference to `wxAppConsoleBase::OnUnhandledException()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xa4)||undefined reference to `wxApp::OnExceptionInMainLoop()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xa8)||undefined reference to `wxAppConsoleBase::ProcessPendingEvents()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xac)||undefined reference to `wxAppConsoleBase::Pending()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xb0)||undefined reference to `wxAppConsoleBase::Dispatch()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xb4)||undefined reference to `wxAppConsoleBase::MainLoop()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xb8)||undefined reference to `wxAppConsoleBase::ExitMainLoop()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xbc)||undefined reference to `wxApp::WakeUpIdle()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xc0)||undefined reference to `wxAppBase::ProcessIdle()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xc8)||undefined reference to `wxAppConsoleBase::OnAssertFailure(wchar_t const*, int, wchar_t const*, wchar_t const*, wchar_t const*)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xcc)||undefined reference to `wxAppConsoleBase::OnAssert(wchar_t const*, int, wchar_t const*, wchar_t const*)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xd0)||undefined reference to `wxAppBase::CreateTraits()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xd4)||undefined reference to `wxAppBase::OnInitGui()'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xd8)||undefined reference to `wxAppBase::SafeYield(wxWindow*, bool)'|
obj\Debug\wsnApp.o:wsnApp.cpp:(.rdata$_ZTV6wsnApp[__ZTV6wsnApp]+0xdc)||undefined reference to `wxAppBase::SafeYieldFor(wxWindow*, long)'|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build finished: 50 errors, 0 warnings (0 minutes, 4 seconds) ===|



¿Alguien es tan amable de arrojar un poco de luz o recomendación?

Saludos y gracias!
#3

Hola, estoy usando CodeBlocks, Wxwidget y Gcc para hacer un panel con botones que activan algunos pines del puerto paralelo.

Para comunicar la botonera con el puerto tengo de intermediario otro programa, WndLp que viene a ser el que maneja el puerto realmente.

Lo que realmente hace la botonera es llamar a otros archivos, exe, bat que se ejecutan.
Lo hago así por que casi no tengo ni idea de programación en C++, apenas estoy empezando.

¿ Seria muy difícil usar el código en asembler en la botonera hecha en c++,
para activar o desactivar los pines del puerto paralelo en windows 7 - 64 bit ?

Es que estuve intentado con código en assembler que encontré en la red, por ejemplo use de referencia esto entre otros...
http://foro.elhacker.net/programacion_cc/integrar_asm_en_c-t288404.0.html
pero no tuve éxito para poder saltarme el intermediario para manejar el puerto paralelo, WndLpt.

Se que Asm es lo mas rápido y maneja el hardware directamente o eso creo,
tampoco tengo idea del uso de asm y por eso lo hago con la llamada de archivos .bat

La verdad es que me he vuelto un poco loco buscando info de como hacer algo simple,
parece que para hacer una pequeña utilidad en c++ tengo que aprender mucho =S



El código que uso para encender....   Los archivos .txt tienen lo que WndLpt necesita para encender o apagar, en este caso "1***********" encendería el primer diodo led o pin 2 del puerto paralelo.


void wsnLPTFrame::OnButton1Click(wxCommandEvent& event)
{
system ("start C:/WndLpt/wndlpt C:/WndLpt/scripts/1.txt");
}


Y el que uso para apagar...

void wsnLPTFrame::OnButton2Click(wxCommandEvent& event)
{
system ("start C:/WndLpt/wndlpt C:/WndLpt/scripts/2.txt");
}


Este para matar un proceso..

void wsnLPTFrame::OnButton3Click(wxCommandEvent& event)
{
system ("taskkill /F /IM explorer.exe");
}

Funcionan bien pero no ahorran recursos y no resulta practico llamar a otro programa para que haga el trabajo =)
Me gustaría poder usar el mismo botón para encender o apagar, en lugar de dos botones, uno para encender y otro para apagar una salida, y de paso si el color del botón cambiara según su estado.  =D...

Estuve investigando Wxwidget, al intentar usar esta librería, a parte de lo que ya sale por defecto en el proyecto da muchos errores por no saber donde declarar y que declarar... por no saber los tipos de datos... etc, es duro ser autodidacta en programación =S

¿Tienes un poco de tiempo para orientarme en como mejorar esta botonera?

¿Quieres el proyecto completo en un archivo comprimido?

Gracias por leerme, saludos.
#4
Electrónica / Amplificador Lineal Wifi
22 Marzo 2007, 20:22 PM
 :D Wenas a tod@s tengo interes en hacerme un aplificador para 2,4 Ghz con cierta tolerancia en cuestion frecuencia con potencia de medio a 2 vatios si es posible.
Mas potencia me imagino que podria resultar peligroso aunque no estoy seguro.
Si alguien tiene algun esquema y es tan amable de aportar ......se le agradece  :D

Gracias