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ú

Mensajes - minak

#1
Encontre una solucion pero no la entiendo y no es la mejor opcion porque me crea una ventana trasera que entiendo que es para hacer un bucle de refresco el caso que pongo lo que modifique.
Esta parte no entiendo porque se tiene que hacer asi pero si no lo hago asi after no me deja usarla dentro de la funcion.
class MyApp(tk.Tk):
   def __init__(self, parent, *args, **kwargs):
       tk.Tk.__init__(self, *args, **kwargs)

y añado esta funcion

   def update_logtext(self):
       if (ultimoMensaje!=""):

           global ultimoMensaje;
           self.pantallaLOG.insert(INSERT, ultimoMensaje +'\n')
           ultimoMensaje =""

       self.after(1000, self.update_logtext)


Ahora mientras encuentro otra solucion voy a ver si consigo que la ventana secundaria que se crea sea invisible.

PD : Hecho invisible pero no comprendo muy bien todo esto que hize

class MyApp(tk.Frame):
   def __init__(self, parent):
       tk.Frame.__init__(self)


Os pongo el codigo del que saque la solucion por si alguien lo quiere :
import Tkinter as tk
import time

class SampleApp(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)
        self.clock = tk.Label(self, text="")
        self.clock.pack()

        # start the clock "ticking"
        self.update_clock()

    def update_clock(self):
        now = time.strftime("%H:%M:%S" , time.gmtime())
        self.clock.configure(text=now)
        # call this function again in one second
        self.after(1000, self.update_clock)

if __name__== "__main__":
    app = SampleApp()
    app.mainloop()
#2
Hola estoy haciendo un pequeño programa en python que escucha un servidor mqtt y lo muestra en pantalla en el modo consola no tengo problema pero quise poner una gui con tkinter y no se como hacer que cuando el callback de mensaje recibido refresque un text que esta dentro de una clase que corresponde a la ventana principal. Me podéis ayudar a ver como puedo hacerlo por que es lo unico que me falta y no se me ocurre.

Ventana Principal
class MyApp:
   def __init__(self, parent):
       self.parent = parent  
       self.parent.protocol("WM_DELETE_WINDOW", self.on_closing) #Indicas que cuando presiones la x de cerrar ventana

       #Ventana principal
       root.title(proyect +" "+ version)                      
       root.resizable (True, True)
       root.iconbitmap('pyc.ico')
       #root.geometry ("650x400")
       root.config (bg="black",bd="10", relief ="sunken")

       ventanainfo = Frame()
       ventanainfo.grid()
       #ventanainfo.config (bg="white", width ="630", height ="380", bd="10", relief ="sunken", cursor ="pirate")
       ventanainfo.config (bg="white", bd="10", relief ="sunken", cursor ="arrow")


       #Configuracion de elemetos sobre frame Principal
       #*****PANTALLA LOG**************
       pantallaLOG = Text(ventanainfo, width ="90", height ="18")
       pantallaLOG.grid (row="0", column ="0", padx=1,pady=1,rowspan=4)
       scrollLog = Scrollbar (ventanainfo, command = pantallaLOG.yview)
       scrollLog.grid (row="0", column ="1", padx=1,pady=1, sticky = "nSeW",rowspan=4)
       pantallaLOG.config (yscrollcommand = scrollLog.set)

       pantallaLOG.insert(INSERT, 'test.\n')
       global ultimoMensaje;
       pantallaLOG.insert(INSERT, ultimoMensaje +'\n')


Callback
def on_message(client, userdata, msg):
   
   global ultimoMensaje
   ultimoMensaje = (time.strftime("%d/%m/%y - %H:%M -> ")+"[" + msg.topic+"] "+str(msg.payload))
   print (ultimoMensaje)

Dejo el main desde el que se inician callback
if __name__ == "__main__":

    openConfig(); 

    myIP = getipextern()
    print (myIP)

    client = mqtt.Client(client_name)
    client.username_pw_set(user, password=password)
    client.on_connect = on_connect
    client.on_disconnect = on_disconnect
    client.on_publish = on_publish
    client.on_message = on_message
    #client.on_log = on_log              # Descomenta para activar el modo Debug
    client.on_subscribe = on_subscribe   # Callback de una supcripcion

    #Comienzo del GUI de usuario

    root = tk.Tk()
    app = MyApp(root)
   
    #****Bucle**********************
    root.mainloop()

    #*** Salida del programa
    print("Cerrando...")
    try:
        client.disconnect()
        client.loop_stop()
    except:
        print ("No procede desconectar")
    print ("Adios")


El programa es mucho mas grande pero es que son mas de 500 lineas para ponerlo aqui. Lo que quiero conseguir es que ese cuadro sea como una consola donde se vaya escribiendo lo que pasa en el programa.
Muchas gracias
#3
Contestándote al mensaje vi el error, que tonto es que cuando fragmente el código por módulos he dejado restos y cambie mucho el funcionamiento de la parte de lectura y escritura para adaptarlo a un futuro implementar SD o otros tipos de almacenamiento y la había liado en la llamada a las funciones. Codigo compilado aunque no se si funciona no dispongo aquí ningún Wemos(Aprox. ARDUINO) para comprobarlo.

Estoy haciendo mi propio programa principalmente para la placa Sonoff y otros dispositivos.

Muchisimas gracias Kenji-chan.
#4
Que mal eso lo tengo hecho y no hace caso, creo que tiene que ver porque en cada header
/***********************************************************************************************************************************/
/*                                            Modulo de lectura/escritura en la eeprom                                             */
/*                                                     Soporte EEPROM V_171225.0                                                   */
/*                                                                                                                                 */
/***********************************************************************************************************************************/

#ifndef SoporteEEPROM_H
#define SoporteEEPROM_H

#include <ESP8266WiFi.h>  //Libreria necesaria para el ESP8266
#include <EEPROM.h>       //Libreria para el uso de la EEPROM

#include "Setting.h"

void setupEEPROM ();            // Setup EEPROM
extern void grabarEEPROM(int, String); //ARG int, ADDR String Datos
extern String leerEEPROM(int);         //ARG int, ADDR

#endif //__SoporteEEPROM_H


Y el header del otro implicado es el siguiente

/***********************************************************************************************************************************/
/*                                  Modulo reposable de la comunicacion Wifi                                                       */
/*                                     ModuloComunicacionWifi V_171214.0                                                           */
/*  Modulo reposable de la comunicacion Wifi, este modulo regula la comunicacion wifi, habilita un modo programacion y el modo  */
/*  OTA para la actualizacion a distancia.                                                                                         
/***********************************************************************************************************************************/

#ifndef ComunicacionWIFI_H
#define ComunicacionWIFI_H

#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>          //Manejo de DNS  Multicast DNS
#include <WiFiUdp.h>              //Manejo de UDP 
#include <ArduinoOTA.h>           //Manejo de OTA

#include "Setting.h"
#include "SoporteEEPROM.h"  //DECLARO EL HEADER DEL IMPLICADO EN EL PROBLEMA


/*******************************************************/
void setupModuloWifi();
void iniciandoWifi();
void modoSoftAP();
void modoConf();
void escanearRedes();
void leerConfSSID(); //DA PROBLEMAS NO ENCUENTRA LAS FUNCIONES
void paginaConf();
void guardarConfWifi(); //DA PROBLEMAS NO ENCUENTRA LAS FUNCIONES
void getUpdateOTA();
void testConexion();

#endif //__ComunicacionWIFI_H

Lo que correspondería en main también incluyo solo la parte implicada en las declaraciones de las partes.

//#include <Wire.h>                     //Manejo del I2C
//#include <ESP8266WiFi.h>

//#include "ComunicacionWIFI.h"
#include "Globales.h"             //Variables globales
#include "Setting.h"              //Activacion de los diferentes funciones

#ifdef TOOLS-I2C_ENABLE
#include "ToolI2C.h"
#endif //FIN

#ifdef DISPLAY-OLED_ENABLE
#include "PantallaOLED.h"
#endif //FIN

#ifdef SENSOR-HUMD-TEMP_ENABLE
#include "SoporteSHT30.h"
#endif //FIN

#ifdef SUPPORT-EEPROM_ENABLE
#include "SoporteEEPROM.h"
#endif

#ifdef SUPPORT-WIFI
#include "ComunicacionWIFI.h"
#endif


No tengo problemas para usar las funciones sobre el main pero sobre otro fichero no los encuentra
#5
Bueno mi problema no es en c++ si no en Arduino pero como el lenguaje que más se parece es a c++ lo pongo aquí haber si me podéis ayudar. El problema recae en que mi nivel de programación no es muy alto y que nunca me han llegado enseñado hacer programas estructurados en diferentes ficheros cpp. Ahora quiero aprender y no encuentro muy bien cómo se hace. El caso que quiero que el ino llame a funciones que están en diferentes .cpp y hasta hay bien pero cuando es un cpp el que llama a otra función declarada en otro cpp me da error que el compilador en ese cpp no lo tiene declarado. el caso como puedo hacer que lo que se declare en el programa principal este donde esté se le pueda llamar desde cualquier parte. Muchas gracias.

Pd: Es decir tengo el ino y hay declaro hago el include a wifi.h y datos.h pero claro desde la parte del codigo del cpp de wifi.h no puedo llamar a funciones de datos.h.
#6
Bueno encontre donde se valida la key ahora solo me queda desgranar como funciona todo y encontrar el metodo de hacer un keygen o saltame la validacion. Aun asi no estoy feliz lo encontre de casualidad y no por haber aprendido. Me cambie al x32dbg me parece mejor que el olly mas claro.
#7
He cogido todos vuestros comentarios, empeze haciendome el curso de ricardo y como los crackme me los salto casi sin terminar las lecciones practico con el programa que puse arriba. Pero mientras los crackme no se resisten el otro no. Pero aun tengo mucho que leer de los tutoriales.

Cita de: apuromafo en 14 Agosto 2017, 05:19 AM
si usas telegram, en una de esas puedes conocer un poco mas el tema de tener al alcance hasta hablar con ricardonarvaja..

en lo personal, no es engargolar o juntar mas cursos, sino practicarlos y leerlos, hoy en dia practico con x64dbg/x32dbg y no tiene nada que envidiarle a ollydbg, ademas hay tutoriales nuevos para usar IDA

estoy seguro que lo lograrás una vez logres entender un poco mas sobre lo que haces :)

Saludos Apuromafo
pd:la clave no es encontrar los strings, sino entender donde los crea, como se pueden evitar o que cosas se pueden digirir mejor :)


No uso telegram pero me estas tentando a ponermelo xD.

Me baje x64dbg/x32dbg para ver si me gusta mas que el ollydbg.

Si llevo dias intentando encontrar desde donde se le llaman pero me cuesta porque no lo consigo. Localice en la pila los string pero no quien les llama en el programa. Porque todo eso corre en API y bueno ahora estoy intentando entender bien el capitulo 9 por que habla de las API y el capitulo 12 ventanas del curso de ricardo

Muchas gracias a todos
#8
Bueno ya consegui crackear cosas en .net. Pero ya cuando encuentro algo en c++ la cosa se me ponen dificil.lograr hacer el resto. No son programas dificiles pienso solo son que no tengo el sufiente conocimiento aun.

Bueno el programa es el siguiente:
TrainController™ Gold Version 8.0
http://www.freiwald.com/pages/download.htm

El caso os cuento lo que hice hasta ahora:
- Descomprimi el ejecutable haber si evitaba instalar cosas en el PC.
Y asi es descomprimido y portable esta la aplicacion.
- Ahora hojeo el programa y esta c++.
- Entiendo que la libreria railres32.dll es los textos y las ventanas emergente.
- Lo abro con Resource hacker y compruebo que la ventana inicial donde pide el serial
31103:1031 y la cadena string que me da cuando inserto el codigo erroneo es
2000:1031 - 31992 "The code hasn't been entered correctly.\nPlease check the code once more, correct the code and try once more."

Es decir llevo poco, ahora ando analizando ollydbg y w32 haber si consigo algo pero creo que no se usarlos muy bien y doy palos de ciego.

Alguna pequeña ayudar para continuar.