elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Mandar rawData a una impresora luego de levantarla de un archivo y modificarla en: 22 Diciembre 2012, 23:21 pm
Tengo una impresora que puede imprimir código de barras.

Tengo, por otro lado, que leer un archivo (binario) que es el que tiene el texto más otros bytes (especiales, de impresión, como por ejemplo el caracter que determina que 'empieza un codigo de barras').

Quiero leer el archivo, levantarlo a un stream, parsear esos bytes y buscar, por ejemplo, ese byte que determina cuando empieza un codigo de barra (en mi protocolo es 0x14) y reemplazarlo por otros 3 bytes que son los que realmente usa la impresora que tengo en este momento.

Mi problema (pongo el codigo al final) es que si el archivo lo levanto del disco, no lo toco, Y LO MANDO INMEDIATAMENTE A IMPRESORA, el código de barras se imprime perfecto (lo mismo si uso, por ejemplo, en el command promt: print c:\test lpt).
Ahora, si lo que quiero es empezar a editar el contenido del archivo para poner los bytes que corresponden, cuando los mando a la impresora, me termina imprimiendo texto en vez del código de barras..

Código:
    static void ImprimirArchivo(unsigned char* path)
    {
        std::ifstream input((char*)path, std::ios::binary);
        std::ofstream output("lpt1", std::ios::binary);

        std::istreambuf_iterator<char> eos;
        std::istreambuf_iterator<char> streamInputIterator (input.rdbuf());

        bool codeBarStarted = false;
        int iterationsCounter = 0;
        while(streamInputIterator!=eos)
        {
            if(*streamInputIterator == 0x14)
            {
                output << '1d';
                output << '6b';
                output << '05';
                codeBarStarted = true;
            }
            else
            {
                output << *streamInputIterator;
            }

            if(codeBarStarted)
            {
                iterationsCounter++;
                if(iterationsCounter == 10)
                {
                    output << 0x00;
                    codeBarStarted = false;
                    iterationsCounter = 0;
                }
            }

            streamInputIterator++;
        }

por otro lado, en la parte de

Código:
            if(*streamInputIterator == 0x14)
            {
                output << '1d';
                output << '6b';
                output << '05';
                codeBarStarted = true;
            }
si lo cambio por

Código:
            if(*streamInputIterator == 0x14)
            {
                output << 0x1d;
                output << 0x6b;
                output << 0x05;
                codeBarStarted = true;
            }

el resultado es radicalmente distinto. En el segundo caso (0xYZ), sale impreso ese valor como un numero en formato texto (ejemplo: donde dice 0x1d, sale impreso '29')

Alguien tiene alguna idea de por qué no estoy pudiendo hacer esto que quiero? CUALQUIER pista es agradecida, porque estoy perdidísimo.
2  Programación / Programación C/C++ / Re: Crear aplicación basada en "módulos" en: 27 Julio 2012, 17:55 pm
http://qt-project.org/doc/qt-4.8/plugins-howto.html

probablemente sea esto lo que busco.
3  Programación / Programación C/C++ / Re: Crear aplicación basada en "módulos" en: 27 Julio 2012, 14:34 pm
El punto tampoco es el connect. Mi pregunta es específicamente de arquitectura / compilación / C++, no de Qt.
4  Programación / Programación C/C++ / Re: Crear aplicación basada en "módulos" en: 26 Julio 2012, 22:43 pm
No lo he entendido muy bien, pero si no me equivoco quieres tipo una ventana con botones que lancen los ejecutables ya creados por ti para que éstas no sean independientes no?.
Algo así. El punto es que no quiero que sean ejecutables independientes (dicho de manera simple, no quiero poder acceder al folder, darle doble click, y que corran los juegos). Entonces pregunto si hay que compilar de otra manera o algo, porque no tengo ni idea. Por eso citaba a las extensiones y plugins, que generalmente en si no tienen .exes, sino que son interpretados por la app principal y extienden esa funcionalidad adecuadamente.

No hace falta calentarse tanto la cabeza ni xml si lo que quieres es eso, crea un widget normal con una cantidad de botones determinada, al conocer la cantidad de aplicaciones y que cada botón ejecute las app's con system() por ejemplo.

Es que el punto es que yo quiero no necesitar saber cuantos módulos voy a tener. Yo quiero que se generen tantos botones como módulos diga el XML que hay instalados (ya como handlear si el path a dichos modulos es valido o no, etc, es ooootro tema y es menor, no me preocupa por ahora).

EDIT: Lo quieres dinámico y no tener que estar recodeando la app principal vale, puedes probar algo así:

Código
  1. #include <QtGui>
  2.  
  3. int main(int argc, char *argv[])
  4. {
  5.    QApplication a(argc, argv);
  6.    QWidget *window;
  7.    QVBoxLayout *mainLayout = new QVBoxLayout;
  8.    int contador = 0;
  9.    while(contador<=nºappsenxml) // mientras contador sea menor o igual que la cantidad de apps escritas en el xml
  10.    {
  11.        QPushButton boton = new QPushButton(nombreapp[contador]); // crea botones nuevos con el nombre registrado en el xml
  12.        mainLayout->addWIdget(boton);
  13.        contador += 1;
  14.    }
  15.    window->setLayout(mainLayout);
  16.    window->show();
  17.    return a.exec();
  18. }
  19.  



Tengo algo MUY similar a eso, sí. Pero esa es la parte facil, la que ya está hecha, que es el generar botones dinamicamente. AHora quiero que esos botones disparen los módulos.

No sé yo si me he explicado bien pero es todo lo que he entendido de tu extenso mensaje. Un saludo y espero que te sirva :)

Se entiende, sí. Parece ser que soy yo el que no sabe expresarse bien, porque eso fue, justamente, lo que dije que ya tenia hecho. =p

Igual sí, no te preocupes que entendí perfecto tu ejemplo. Lástima que no era lo que preguntaba. ='(

Y sólo para aclarar, mi duda no es con XML, sino con C++/Qt y como compilar/generar dichos módulos. Y como luego ejecutarlos desde la app principal.
5  Programación / Programación C/C++ / Crear aplicación basada en "módulos" en: 26 Julio 2012, 21:52 pm
Hola a todo el mundo, primer post y ya vengo a romper los huevos.

Quería saber si alguien que esté bien en tema podría tirarme una linea.

Estoy en Qt, un framework de C++, y me gustaría diseñar una aplicación "genérica" o dinámica, que levante módulos que yo desarrollé.

Básicamente, tengo una aplicación que, cuando se ejecuta, lee un XML el cual le dice que módulos hay instalados, y el path donde están instalados. En base a eso, genera una cantidad n de botones (Tantos botones como módulos haya descriptos en el XML).

Esa es la parte boluda, lo complicado ahora es que no tengo pálida idea de como desarrollar esos "módulos".

Hasta ahora tengo dos jueguitos pedorros con QGL (una abstracción de OpenGL de Qt), un Tetris y un Snake. Ambos dos son aplicaciones ejecutables en si mismas (.exe). Me gustaría que en vez de tener .EXEs, tener alguna otra forma de compilarlos, y poder utilizarlos como módulos para la primer aplicación genérica, la que crea botones en base al XML.

Cómo debería encarar el proyecto? Si fuese todo "estatico" en la aplicación ppal, simplemente hago unas DLL y después instancio mis juegos cuando me viene en gana, pero como todo esto es para poder hacer una aplicación "dinámica", no tiene sentido que rebuildeé la app principal cada vez que quito y agrego un juego nuevo.

Cómo encararian uds el diseño de esta app? Cómo funcionan los ADD-ONs en cosas como Firefox o Visual Studio? Yo no quiero que mi Tetris y Snake sean apps independientes, sino que sean extensiones de esa app principal... y no sé como hacerlo.

Alguna idea o recomendación como para empezar a guiarme?

Desde ya, si no fui claro, redacté como el orto, no fui claro (de vuelta), no fui claro o NFC, díganme. Cualquier ayuda se agradece.

Un saludo.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines