Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Capturar Salida De Error (Stderr) De Un Comando

Capturar Salida De Error (Stderr) De Un Comando
Artículo
Responder citando    Descargar mensaje  
Mensaje 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.



 
TuXFamily - Ver perfil del usuario Enviar mensaje privado  
TuXFamily [ Miercoles, 12 Septiembre 2012, 20:02 ]
 


Capturar Salida De Error (Stderr) De Un Comando
Comentarios
Responder citando    Descargar mensaje  
Mensaje 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



 
jsbsan - Ver perfil del usuario Enviar mensaje privado  
jsbsan [ Miercoles, 12 Septiembre 2012, 20:53 ]
Responder citando    Descargar mensaje  
Mensaje 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



 
jguardon - Ver perfil del usuario Enviar mensaje privado  
jguardon [ Miercoles, 12 Septiembre 2012, 21:13 ]
Responder citando    Descargar mensaje  
Mensaje 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
 




 
sebikul - Ver perfil del usuario Enviar mensaje privado  
sebikul [ Miercoles, 12 Septiembre 2012, 22:20 ]
Responder citando    Descargar mensaje  
Mensaje Re: Capturar Salida De Error (Stderr) De Un Comando 
 
Cierto, eso pasa por no leer con cuidado... Good catch!

Saludos



 
jguardon - Ver perfil del usuario Enviar mensaje privado  
jguardon [ Miercoles, 12 Septiembre 2012, 22:23 ]
Responder citando    Descargar mensaje  
Mensaje 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.



 
TuXFamily - Ver perfil del usuario Enviar mensaje privado  
TuXFamily [ Jueves, 13 Septiembre 2012, 01:44 ]
Responder citando    Descargar mensaje  
Mensaje 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



 
razaAztk - Ver perfil del usuario Enviar mensaje privado  
razaAztk [ Jueves, 13 Septiembre 2012, 03:20 ]
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
Publicar nuevo tema  Responder al tema  Página 1 de 1
 
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno