Capturar Salida De Error (Stderr) De Un Comando


Objetivo: Capturar Salida De Error (Stderr) De Un Comando
Hola, estoy haciendo un front end para el programa de consola avrdude, he buscado y leido sobre el control de procesos, lo que hago es: desde gambas ejecuto el comando con EXEC, debo capturar la salida estandar, pero tambien debo capturar la salida estandar de error, justamente al tratar de capturar la salida de error, me salta el mensaje "Bad event handler FMain.lectura_Error() Not enough arguments"

el codigo que estoy usando es el siguiente:




PUBLIC proc AS Process

PUBLIC SUB btnCompConexion_Click()

proc = EXEC ["avrdude"] FOR READ AS "lectura"

END

PUBLIC SUB lectura_Read()
DIM Salida AS String
READ #LAST, Salida, -250
PRINT Salida
END

PUBLIC SUB lectura_Error()

DIM Salida AS String
READ #LAST, Salida, -250
PRINT Salida
END



Parece que el problema esta en

PUBLIC SUB lectura_Error()

DIM Salida AS String
READ #LAST, Salida, -250
PRINT Salida
END



He probado con el comando "ls" y comentando la parte de captura de error, y si funciona bien, imprime la salida estandar.

Cual es la forma correcta de capturar la salida estandar de error ??

Saludos.

Perfil MP  
Objetivo: Re: Capturar Salida De Error (Stderr) De Un Comando
TuXFamily:

Tu forma (con procesos) deberia de funcionar... ... mira en el buscador de foro porque recuerdo que jguardon comento esa forma de conseguir el error cuando se producia.

Se me ocurre otra forma de hacerlo, en vez de usar procesos, es redireccionando a un archivo el error ("2>")
Shell("avrdude 2>error.txt")


Y luego el programa se tiene que encargar de leer el archivo "error.txt", para ver que es lo que ha pasado..

enlace: Enlace

Objetivo: Re: Capturar Salida De Error (Stderr) De Un Comando
Parece un bug de gambas. Puede que estés usando una versión de Gambas2 antigua. ¿Has probado si ocurre lo mismo en las últimas versiones de Gambas3?

Saludos

Perfil MP  
Objetivo: Re: Capturar Salida De Error (Stderr) De Un Comando
Tanto en Gambas2 como en Gambas3 el proceso es el mismo. El código esta bien, pero si te detienes a leer el error (Bad event handler FMain.lectura_Error() Not enough arguments) veras que al metodo lectura_Error() le falta un argumento en su declaracion.

La documentacion sobre como obtener el mensaje de error esta aqui: http://gambasdoc.org/help/comp/gb/process/.error?es&v3

Basicamente, lo unico que debes modificar es lo siguiente:

PUBLIC SUB lectura_Error(sError As String)

PRINT "Error: " & sError

END

Perfil MP  
Objetivo: Re: Capturar Salida De Error (Stderr) De Un Comando
Cierto, eso pasa por no leer con cuidado... Good catch!

Saludos

Perfil MP  
Objetivo: Re: Capturar Salida De Error (Stderr) De Un Comando
Muchas gracias a todos por comentar.

sebikul escribió:  
Tanto en Gambas2 como en Gambas3 el proceso es el mismo. El código esta bien, pero si te detienes a leer el error (Bad event handler FMain.lectura_Error() Not enough arguments) veras que al metodo lectura_Error() le falta un argumento en su declaracion.

La documentacion sobre como obtener el mensaje de error esta aqui: http://gambasdoc.org/help/comp/gb/process/.error?es&v3

Basicamente, lo unico que debes modificar es lo siguiente:

PUBLIC SUB lectura_Error(sError As String)

PRINT "Error: " & sError

END


Efectivamente ese era el problema, el codigo quedo de esta manera y funciona muy bien:

PUBLIC proc AS Process

PUBLIC SUB btnCompConexion_Click()

proc = EXEC ["avrdude"] FOR READ AS "lectura"

END

PUBLIC SUB lectura_Read()
DIM Salida AS String
READ #LAST, Salida, -250
PRINT Salida
END

PUBLIC SUB lectura_Error(sError AS String)

PRINT "Error: " & sError

END


Ahora ya puedo continuar con lo que falta del front end, hasta el momento luce asi:

instant_nea27

Cuando lo termine lo posteare, tal vez a alguien le pueda servir o hacerle alguna mejora

Saludos.

Perfil MP  
Objetivo: Re: Capturar Salida De Error (Stderr) De Un Comando
Se ve chido el programita. He estado postergando mi aprendizaje con AVR, espero pronto usar tu app

Siguiendo tu espiritu de compartir, dejo aquí un pequeño front-end que hice para el pk2cmd (lo hice el año pasado y en gambas2), igual y le sirve a alguien:

Saludos!

pk2cmdgb


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
No puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.0783s (PHP: 18% SQL: 82%)
Consultas SQL: 19 - Debug off - GZIP Activado