Capturar Salida De Error (Stderr) De Un Comando


Subject: 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.

Profile PM  
Subject: 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

Subject: 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

Profile PM  
Subject: 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

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

Saludos

Profile PM  
Subject: Re: Capturar Salida De Error (Stderr) De Un Comando
Muchas gracias a todos por comentar.

sebikul escribió: [Ver mensaje]
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.

Profile PM  
Subject: 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


pk2cmd-gb-0.0.1.tar.gz
Description: A simple front-end for pk2cmd
aztk CopyLeft 2011 

Download
Filename: pk2cmd-gb-0.0.1.tar.gz
Filesize: 36.85 KB
Downloaded: 66 Time(s)
pk2cmd-gb-0.0.1.tar.gz
Description: A simple front-end for pk2cmd
aztk CopyLeft 2011 

Download
Filename: pk2cmd-gb-0.0.1.tar.gz
Filesize: 36.85 KB
Downloaded: 66 Time(s)
pk2cmd-gb-0.0.1.tar.gz
Description: A simple front-end for pk2cmd
aztk CopyLeft 2011 

Download
Filename: pk2cmd-gb-0.0.1.tar.gz
Filesize: 36.85 KB
Downloaded: 66 Time(s)


Page 1 of 1


  
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events

   

This is a "Lo-Fi" version of our main content. To view the full version with more information, formatting and images, please click here.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Generation Time: 0.1204s (PHP: -10% SQL: 110%)
SQL queries: 24 - Debug Off - GZIP Enabled