• Viernes 19 de Abril de 2024, 16:38

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - diego.martinez

Páginas: [1] 2 3 4
1
Buenas:

Tengo un problema con la iluminación de un objeto.
Estoy trabajando con Opengl ES 2.0 para entornos embebidos.
Cuando genero rotación del objecto, la iluminación del objecto rota de forma erronea, no correspondiendo con la linea de luz que deberia de dar sobre el objeto.



Si veis en la imagen, el punto de luz es el mismo para las tres teteras, pero al rotarlas, no se corresponde con un punto unico en el espacio.

Tengo la impresión de que se debe al calculo de la normal, quizas. He depurado los objetos y las normales parecen correctas, pero cuando las multiplico por la normal matrix, parecen erroneas.

La matrix de normales la calculo:

Código: C++
  1. void    GRPMATRIX::GetNormalMatrix (GLFLOAT (*r)[4][4])
  2. {
  3.         GRPMATRIX inverse;
  4.         GRPMATRIX transpose;
  5.  
  6.         transpose=*this;
  7.         transpose.Transpose();
  8.  
  9.         inverse=transpose;
  10.         inverse.Inverse();
  11.  
  12.         inverse.CopyTo(r);
  13.  
  14. }
  15.  

los cálculos de la inversa y la traspuesta están comprobados matemáticamente.

El shader que uso es:

Código: C++
  1.  
  2. const char GRPSHADERLIBRARY::VertexShaderDOT[] =
  3.  
  4.         "precision mediump float;                               \n"
  5.  
  6.         "attribute vec3 a_position;                     \n"
  7.         "attribute vec3 a_normal;                               \n"
  8.         "attribute vec2 a_texCoord;                     \n"
  9.                                                                                                                                                                                                                                
  10.         "uniform sampler2D s_texture;           \n"    
  11.  
  12.         "uniform mat4 MVPMat;                                           \n"
  13.         "uniform mat4 Model;                            \n"
  14.         "uniform mat4 ModelView;                                \n"                                                                                                            
  15.         "uniform mat4 iMVPMat;                                  \n"
  16.  
  17.         "varying vec4 v_position;                               \n"
  18.         "varying vec4 v_normal;                                 \n"
  19.         "varying vec2 v_texCoord;                               \n"
  20.  
  21.         "uniform vec3 lightPosition;            \n"
  22.         "uniform float lightStrength;\n"
  23.         "varying vec4 vLight;\n"
  24.  
  25.         "void main()                                                                                                                                                                                                                            \n"
  26.         "       {                                                                                                                                                                                                                                       \n"
  27.         "v_position             = (ModelView * vec4(a_position,1.0));\n"
  28.         "vLight         = normalize(MVPMat * vec4(lightPosition,1.0)); \n"                                                                                             
  29.         "v_texCoord     = a_texCoord;\n"
  30.         "v_normal               = normalize(iMVPMat*vec4(a_normal,1.0));\n"                                                                                                                                                                                                            
  31.         "gl_Position        = MVPMat * vec4(a_position,1.0);\n"
  32.  
  33.         " } \n";
  34.  
  35. //---------------------- fragment
  36.  
  37. const char GRPSHADERLIBRARY::TextureShaderLightTextureDOT[] =
  38.  
  39. "precision mediump float;                       \n"
  40.  
  41. "varying vec4 v_position;\n"
  42. "varying vec2 v_texCoord;                       \n"
  43. "varying vec4 v_normal;                         \n"
  44.  
  45.  
  46. "uniform sampler2D s_texture;   \n"                                                                                                                                                                                                            
  47. "const vec3 lightPos                    = vec3(1.0,     1.0,    1.0);\n"
  48.                                                                                                                
  49. "varying vec4 vLight;\n"
  50.                                                                                                                
  51. "void main() {\n"                      
  52.                                                                                                        
  53. "       vec4 N = v_normal;\n"
  54. "       vec4 nN = normalize(N);\n"
  55.  
  56. " vec4 nLight = normalize(vLight-v_position);\n"
  57.                                                                                                                
  58. " float lambert = dot(nN,nLight); \n"
  59. "        lambert = clamp (lambert,0.0,1.0);\n"
  60.  
  61. // Multiply the color by the diffuse illumination level to get final output color.
  62.                                                                                                                
  63.         "vec4 color                     =       vec4(texture2D(s_texture,v_texCoord).rgb,1.0);\n"
  64.         "gl_FragColor           =       vec4((color.r*lambert),(color.g*lambert),(color.b*lambert),1.0);                                                                        \n"// Pass the color directly through the pipeline.
  65.  
  66.                 "gl_FragColor.a =       1.0;                                                                                                            \n"
  67. "}\n";
  68.  
  69.  


Alguna idea?

2
Servidores / Mercurial , ssh y ftp
« en: Jueves 28 de Agosto de 2014, 13:24 »
Buenas:

Recientemente he montado un servidor de Mercurial para gestionar los códigos fuentes de la empresa en la que estoy.
El mercurial esta ubicado en un servidor, y nos conectamos a el mediante SSH.

El problema es que en los árboles de directorios en los que tenemos el código fuente, existen directorios de recursos binarios que pesan más de los 10 megabytes máximos que permite el mercurial , por lo que los hemos agregado al .hgignore para que no sean interpretados.

El asunto es que necesitamos algún tipo de servicio de syncronización de estos ficheros "grandes" para que cuando un trabajador se descarge el repositorio pueda usar estos fuentes con los archivos de recursos correctos.

Habia pensado en poner un servidor de ftp en el pc que tiene el servidor de mercurial y usar algún programa de sincronización (estilo bamboo o GoodSynch), pero estoy encontrando el problema de que el Putty que usamos para el enlace por ssh no permite transferencias pasivas de ftp, y ahora por lo visto es imposible encontrar un ftp en modo activo.

Alguna sugerencia?
Es una buena aproximación al problema?
Existe algún programa que me permita hacer esto de forma eficiente?


att:
Diego Martínez Ruiz de Gaona

3
GNU/Linux / Obtener el Handle de dispositivos
« en: Martes 8 de Abril de 2014, 13:06 »
Buenas!

Estoy haciendo una lectura directa de los ficheros de los dispositivos del sistema para leer el teclado y el ratón.
Interpreto los input_event correctamente.

Leo el fichero /proc/bus/input/devices para buscar el numero de evento del teclado y el ratón, y me funciona en Debian y Raspbian (Debian para raspberry), pero tras probar enotro equipo con Ubuntu, me he encontrado que aparecen otros dispositivos con eventos "kbd" (cinco diferentes).

La pregunta es: ¿Como determinar el numero de evento en el que se encuentra el teclado y el ratón?

PD: probando el software en VMWare, me encuentro que la maquina virtual me crea 2 ratones falsos, lo que aumenta el problema a la hora de determinar programaticamente el handle del teclado y el ratón.

Gracias!



4
Servidores / Autentificacion SSH para Mercurial
« en: Martes 11 de Marzo de 2014, 18:11 »
Buenas!

He montado mercurial en un equipo ubicado en "servidorversiones"

le he puesto un servidor SSH para crear los usuarios.

si hago plink.exe -ssh diego@servidorversiones

conecta, me pide contraseña y se autentifica en el servidor de ssh sin problema.

en el mercurial.ini tengo puesto


[ui]
ssh="C:\plink.exe" -ssh -i "C:\privateKey.ppk"

[web]
push_ssl=no
cacerts=C:\Program Files\Mercurial\cacert.pem
allow_push=diego


me conecto con http://diego:***@servidorversiones:8000/

y puedo hacer outgoing, pero cuando hago push

pushing to http://diego:***@servidorversiones:8000/
[Error: abort: authorization failed]
searching for changes
1 changesets found

[Operation completed. Exit code: 255]


que puedo hacer?


gracias!






5
Servidores / Team Foundation Server 2012
« en: Viernes 7 de Marzo de 2014, 10:02 »
Buenas!

Tengo un problemilla intentando usar el Team Foundation Server 2012.

Tengo una Solution hecha en Visual Studio 2012. Puedo hacer check in a mi servidor (en lan) y check out correctamente pero:

si tengo una Solution con 3 proyectos, que comparten código entre ellos, cuando hago el check in, sólo se envian los archivos que no tienen proyectos en común, por lo que cuando hago el check out en una máquina remota, NO se descargan los ficheros que estaban "compartidos" entre los proyectos.

Hay alguna solución a esto? 


graciaaaas
 

6
C/C++ / problemas de orientación de objetos e interfaces
« en: Jueves 10 de Enero de 2013, 03:44 »
Buenas:

Estoy programando un engine 3d y estoy usando un engine grafico (Ogre).

tengo una clase GOBJECT , que gestiona los objetos del mundo (con todas las operaciones correspondientes , pero virtuales, a la espera de saber con que engine trabajo).

luego tengo una clase OOBJECT, que hereda de GOBJECT y que me "rellena" los metodos puramente virtuales, con las acciones de Ogre3d correspondientes.

luego he creado una clase GACTOR que es una clase que hereda de GOBJECT y que contiene las animaciones correspondientes del actor.

pero cuando creo la clase OACTOR e intento heredar de GACTOR y de OOBJECT me da problemas


como puedo hacerlo?

gracias!




7
Microcontroladores / Configurar el supervisor de voltaje en el MSP430F5919A
« en: Martes 2 de Octubre de 2012, 18:56 »
Buenas:

Estoy intentando determinar cuando el sistema tiene bateria baja en un MSP430F5419A, pero no entiendo como funciona el supervisor.
Segun he leido se puede hacer que muestre un flag cuando esta por debajo de un nivel programable.

Estoy mirando pero no encuentro como indicarselo, cuando llega a su rango predefinido se resetea. Mi intencion es detectar antes a un nivel superior para encender el led de bateria baja.
Alguien lo ha hecho alguna vez?

Gracias!
:D

8
C/C++ / compilador con confusion con tipos bool y BYTE
« en: Jueves 16 de Febrero de 2012, 19:22 »
Buenas:

Estoy intentando compilar un proyecto y me estoy encontrando con que el compilador es como si confundiese bool y BYTE.
Por ello, cuando compilo me da el fallo:


1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlcomcli.h(2147): error C2535: 'ATL::CComVariant::CComVariant(BYTE) throw()' : member function already defined or declared

justo despues de
Código: C++
  1. CComVariant(_In_ bool bSrc) throw()
  2.         {
  3.                 vt = VT_BOOL;
  4.                 boolVal = bSrc ? ATL_VARIANT_TRUE : ATL_VARIANT_FALSE;
  5.         }
  6. CComVariant(_In_ BYTE nSrc) throw()  //<--- FALLO
  7.         {
  8.                 vt = VT_UI1;
  9.                 bVal = nSrc;
  10.         }
  11.  

y luego me da errores que me hacen pensar que confunde a veces bool con BYTE, pero no se por que

DeviceBeacon.cpp(66): error C2556: 'BYTE DEVICEBEACON::AllowBarChange(int *,int *,int *)' : overloaded function differs only by return type from 'bool DEVICEBEACON::AllowBarChange(int *,int *,int *)'
1>          c:\users\diego\desktop\current\agotekconfigurator2.0 v2.2.5\DEVICEBEACON.h(23) : see declaration of 'DEVICEBEACON::AllowBarChange'

y en la clase esta definido :

Código: C++
  1.  bool           AllowBarChange  (int *,int *,int *);
  2.  

y en el cpp donde dice que esta el fallo:

Código: C++
  1. bool    DEVICEBEACON::AllowBarChange    (int * P,int * S,int * R)
  2. {
  3.         *R=0;
  4.         return true;
  5. }
  6.  

Alguien sabe a que se puede deber esto?
Me esta volviendo loco.

Gracias!

9
C/C++ / Alguien sabe de alguna libreria para layout?
« en: Martes 24 de Enero de 2012, 20:11 »
Buenas:

Tengo una proyecto de aplicación de mdi, y queria que las ventanas y los paneles hicieran docking y pudieran cambiarse, como hace el visual studio o cualquiera similar vamos.

He estado mirando un poco y parece que hay varias, pero he visto que las hay de pago, que muchas son para mfc o .net. Alguien sabe de alguna para win32 puro?

Gracias :)

10
C/C++ / FIONREAD was not declared in this scope?
« en: Jueves 6 de Octubre de 2011, 18:18 »
Buenas:

Me salta el error
/home/diego/pru_project/src/pru_project.cpp: In function 'int main()':
/home/diego/pru_project/src/pru_project.cpp:65: error: 'FIONREAD' was not declared in this scope
/home/diego/pru_project/src/pru_project.cpp:65: error: 'ioctl' was not declared in this scope
make[2]: *** [pru_project.o] Error 1

En el codigo, parece que no encuentra la constante de FIONREAD pero en la documentación pone que esta en termios.h e ioctl lo mismo.
Estoy programando en Unix (Ubuntu) y usando Kdevelop.

Que puede estar pasando? por que la cabecera la tengo incluida en el modulo.
Gracias!



Código: C++
  1. /***************************************************************************
  2.  by Diego Martinez
  3.  ***************************************************************************/
  4.  
  5.  
  6.     #include <stdio.h>   /* Standard input/output definitions */
  7.     #include <string.h>  /* String function definitions */
  8.     #include <unistd.h>  /* UNIX standard function definitions */
  9.     #include <fcntl.h>   /* File control definitions */
  10.     #include <errno.h>   /* Error number definitions */
  11.     #include <termios.h> /* POSIX terminal control definitions */
  12. #include <iostream>
  13. #include <getopt.h>
  14.  
  15.     /*
  16.      * 'open_port()' - Open serial port 1.
  17.      *
  18.      * Returns the file descriptor on success or -1 on error.
  19.      */
  20.  
  21.     int open_port(void)
  22.     {
  23.       int fd; /* File descriptor for the port */
  24.  
  25.  
  26.       fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY);
  27.       if (fd == -1)
  28.       {
  29.        /*
  30.         * Could not open the port.
  31.         */
  32.  
  33.         perror("open_port: Unable to open /dev/ttyS0 - ");
  34.       }
  35.       else
  36.       {
  37.         fcntl(fd, F_SETFL, 0);
  38. //The FNDELAY option causes the read function to return 0 if no characters are available on the port. To restore normal (blocking) behavior, call fcntl() without the FNDELAY option:
  39.         fcntl(fd, F_SETFL, FNDELAY);           
  40.         //configuramos el puerto
  41.         struct termios options;
  42.         // Get the current options for the port...
  43.         tcgetattr(fd, &options);
  44.         // Set the baud rates to 19200...      
  45.         cfsetispeed(&options, B9600); //baudios de entrada
  46.         cfsetospeed(&options, B9600); //baudios de salida
  47.         //Enable the receiver and set local mode...
  48.         options.c_cflag |= (CLOCAL | CREAD);
  49.      // Set the new options for the port...
  50.         tcsetattr(fd, TCSANOW, &options);
  51.         }
  52.  
  53.  
  54.       return (fd);
  55.     }
  56.  
  57. int main()
  58. {
  59. int hcom=open_port();
  60.  
  61.  
  62. while(true)
  63. {
  64. int bytes;
  65. ioctl(hcom, FIONREAD, &bytes);
  66. if (bytes>0)
  67.         printf("Datos!\r\n");
  68. }
  69.  
  70. close(hcom);
  71.  
  72. return 0;
  73. }

11
C/C++ / Redibujado Owner Drawn del Frame de la ventana
« en: Martes 6 de Septiembre de 2011, 17:28 »
Buenas:

Estoy buscando tutoriales para hacer la ventana completamente Owner Drawn en Win32. Con imagenes en los botones de minimizar maximizar y cerrar.
Lo que quiero es principalmente redibujar el frame de la ventana para tener otro estilo (en negro como la apariencia de Steam).
Para ello tendria que capturar los eventos de dibujado y todo eso, pero no se muy bien por donde ir, por ejemplo, para obtener el boton de cerrado y minimizado (con FindWindow?).

a ver si me podeis orientar, que en Google hay cientos de tutoriales para hacer ownerdrawn de controles pero no de lo que es el frame.
La otra opcion podria ser quitar el frame, usar una ventana sin titulo y manipular yo los botones, pero me parecia complicarlo, especialmente por que quiero que mi aplicación tenga multiples ventanas.

Gracias!

12
PHP / una buena libreria para autenticación de usuarios en PHP?
« en: Viernes 2 de Septiembre de 2011, 12:46 »
Buenas:

Buscaba alguna libreria para la autorización y acceso de usuarios a una serie de páginas y directorios en PHP.

Alguna sugerencia?

Gracias! :D

13
Programación de Aplicaciones para Dispositivos / usando Smack API para enviar XMPP
« en: Miércoles 24 de Agosto de 2011, 10:53 »
Buenas:

Estoy usando la libreria Smack para usar el protocolo XMPP en dispositivos Android.
He hecho una aplicación que me permite mandar y reacibhir mensajes en chats Jabber o GTalk y funciona correctamente conectandome a los servidores de Jabber y Gmail.
Sin embargo, si monto un servidor OpenFire en mi localhost y conecto, me falla en la autorización (y he creado el usuario y configurado etc).

Si conecto el Spark a localhost funciona correctamente. Alguna idea? Gracias!

Código: Java(TM) 2 Platform Standard Edition 5.0
  1. // TODO Auto-generated method stub
  2.                 ConnectionConfiguration config=null;
  3.                 Connection connection=null;
  4.                
  5.                 try
  6.                 {
  7.                 System.out.println("Emisor: Creando conexión");
  8.                 // Create the configuration for this new connection
  9.                 config = new ConnectionConfiguration(
  10.                 "localhost",
  11.                 5222
  12.                 );
  13.                 config.setCompressionEnabled(true);
  14.                 config.setSASLAuthenticationEnabled(false);
  15.  
  16.                 System.out.println("Emisor: Estableciendo conexión");
  17.                 connection = new XMPPConnection(config);       
  18.  
  19.  
  20.                 // Connect to the server               
  21.                 connection.connect();
  22.                 System.out.println("Emisor: conectando...");
  23.                 // Log into the server
  24.                 connection.login("kulebril@diego-sw","password");
  25.                 System.out.println("Emisor: conectado con éxito");
  26.                
  27.                 XMPPServerListener Listener=new XMPPServerListener();
  28.                
  29.                 System.out.println("Emisor: creando sala de chat...");
  30.                 Chat chat = connection.getChatManager().createChat("admin@localhost", Listener);               
  31.                
  32.                 int i=0;
  33.                
  34.                 while(true)
  35.                 {
  36.                 i++;           
  37.                 System.out.print(".");
  38.                 chat.sendMessage("Enviando mensaje "+String.valueOf(i)+" desde Server");
  39.                  Thread.sleep(4000);
  40.                 }
  41.                
  42.                 }
  43.                 catch(XMPPException Ex)
  44.                 {
  45.                         System.out.println("Excepcion:----------------------------------");
  46.                         System.out.println(Ex.getMessage());                   
  47.                 }
  48.                 catch(Exception Ex)
  49.                 {
  50.                        
  51.                 }
  52.  
  53.  
  54.         }
  55.        
  56.         public void processMessage(Chat arg0, Message arg1) {
  57.                 // TODO Auto-generated method stub
  58.                
  59.                 String s=new String();
  60.                 s+="Packet received from:";
  61.                 s+=arg1.getFrom();
  62.                 s+="\r\nSubject:\r\n";
  63.                 s+=arg1.getSubject();
  64.                 s+="\r\nBody:\r\n";
  65.                 s+=arg1.getBody();
  66.                
  67.                 javax.swing.JOptionPane.showMessageDialog(null, this, s, 0);
  68.         }
  69.  
  70. }
  71.  
  72.  

14
C/C++ / Como ajustar el fondo de una imagen con el Center Image
« en: Lunes 23 de Mayo de 2011, 17:00 »
Buenas:

Tengo un dialogo con una imagen que tiene el atributo center image a true.

La imagen se centra bien, pero cuando amplio el dialogo dandole a maximizar, y el frame de la imagen se amplia, la imagen se centra pero el visual studio rellena el fondo de la imagen con un color que no queda bien y no se que puedo hacer para indicarle que color debe usar.

Alguna idea?

Gracias!

15
MySQL / Trigger para enviar sentencia a base de datos remota
« en: Viernes 6 de Mayo de 2011, 12:43 »
Buenas!

Tengo una base de datos MySql ubicada en el servidor A con una estructura X.
Tengo otra base de datos nueva y con otro formato en un servidor B con una estructura Y.

La base de datos A esta populada por miles de datos de productos con unas columnas determinadas.

Lo que quiero es que cada vez que se haga una inserción en la base de datos A, se haga una insercion con otra estructura (pero a partir de los datos suministrados) en la otra base de datos ubicada en el otro Servidor.

La idea es hacer un trigger para que los programas que sigan metiendo datos en la base de datos A empiecen a copiar los datos con la otra estructura en B, pero no se como hacer para que el insert en el BEFORE INSERT haga la solicitud en una base de datos remota ubicada en otro servidor. Es esto posible?

Gracias! :)

16
Windows / Como reparo la LSP en windows7?
« en: Viernes 8 de Abril de 2011, 18:08 »
BUenas:


Un virus me ha afectado a la LSP y me impedia acceder a ciertas conexiones.
Elimine el virus y todas sus entradas del registro, pase varios antivirus y parece que ya no está.
Sin embargo, la lsp parece que sigue estando filtrada, por que por ejemplo, no puedo mandar paquetes desde messenger, ni establecer conexiones https.

Antiguamente, en XP usaba el LSPFix, pero no puedo hacerlo en Windows7.

He probado a reiniciar netsh pero tampoco  alguien sabe como?

gracias!

17
C/C++ / duda con exception handling
« en: Lunes 18 de Octubre de 2010, 18:56 »
buenas:

estoy programando un interprete, y lo tengo hecho de este estilo:
Código: C++
  1.  
  2.       try   
  3.       {     
  4.         CallFunction("main");
  5.         return Ret.value;
  6.       }
  7.       catch(ParseException exc)         
  8.       {
  9.         sntx_err(exc.get_err());                         
  10.       }
  11.  
  12.  

Asi, durante el proceso del parsing de la funcion main, se realiza toda la interpretación del script.
Cuando el script encuentra un error de sintaxis (u otros), lanza un

Código: C++
  1.  
  2. throw(ParseException(IDENTIFICADOR_DE_TIPO))
  3.  
  4.  

Así, cuando encuentra un error, aborto el Parsing y muestro el error usando la cuncion sntx_err que simplemente muestra la función y la linea y columna de error, con su tipo.

El tema es, como puedo hacer que ejecute el throw, PERO CONTINUE EL PARSING después de la excepción?
o sea, que no se finalice al terminar el catch, si no que continue despues del throw si es permisible (por el gestor de errores), por que si no, solo me muestra un fallo por interpretación.
(Tengo todo el codigo para modificar, pero no se como hacerlo).

gracias!  :good:

18
C/C++ / Cerrar y reabrir un socket
« en: Miércoles 22 de Septiembre de 2010, 18:04 »
Buenas:

Tengo una aplicación que escucha un puerto UDP por un puerto (digamos que 10000) y que envia los datos tratados por otro puerto TCP digamos el 10001.
Son Sockets non-blocking. Uso el FD_SET y el select para saber si tienen datos de entrada o salida para enviar y recibir.

Todo funciona correctamente, pero cuando finalizo las conexiones, al intentar reabrir de nuevo, me encuentro con problemas.
El socket TCP se queda en un estado en el que nunca tiene forma de escribir y siempre lee 0 bytes.
El select siempre me da como que tiene para leer, pero no para escribir.

Si hago netstat -ano en el equipo, me encuentro que los sockets no han sido eliminados sino que estan en TIME_WAIT y encima hay multiples sockets conectados de la misma forma.

el finalizado del socket lo hago con

shutdown()
y luego
closesocket()

son sockets en WIN32.
Código: C++
  1.  
  2. int W32SOCKET_TCP::Close()
  3. {
  4.     this->State=GSOCKET::STATE::KILLING;
  5.     shutdown(this->ID,2);
  6.     return  closesocket(this->ID);   //ID es el identificador de SOCKET
  7. }
  8.  
  9.  

que estoy haciendo mal? por que no se finalizan los sockets para que pueda volverlos a abrir?

PD: no estoy usando multitarea. Uso una función Poll para enviar y recibir segun el estado del select.

gracias!

19
C/C++ / Creando mi propia runtime library
« en: Jueves 22 de Julio de 2010, 00:05 »
Buenas:

Estoy creando una demo de 4k y estoy desactivando toda la runtime.
Pero me ha surgido un problema con los senos y cosenos.

: error LNK2019: símbolo externo __CIcos sin resolver al que se hace referencia en la función _cosf

es un fallo curioso y no se como evitarlo.
Alguien sabe?

20
C/C++ / problemas con fondo de dialogo
« en: Miércoles 23 de Junio de 2010, 12:46 »
Buenas:

Estoy teniendo problemas para pintar un fondo a un dialogo.

Construyo el dialogo con DialogBox.

Despues, en el WM_PAINT hago
Código: C++
  1.  
  2.     case WM_PAINT:  
  3.             BeginPaint(hWnd,&ps);
  4.             Canvas->Swap();
  5.             EndPaint(hWnd,&ps);
  6.             return 1;
  7.  
  8.  

Canvas->Swap() hace:
Código: C++
  1.  
  2. //-------------------------------------------------------------------
  3. //  W32CANVAS::Swap
  4. /**
  5. //  Copia el contenido del canvas a la ventana target
  6. //  
  7. //  @author             Diego Martinez
  8. //  @version            10/Septiembre/2009
  9. */
  10. //-------------------------------------------------------------------
  11. void    W32CANVAS::Swap         ()
  12. {
  13.     RECT WindowSize;    
  14.  
  15.     GetClientRect             ((HWND)this->Target->Get(),&WindowSize);
  16.     SetStretchBltMode      (((W32WINDOW*)this->Target)->hDC,COLORONCOLOR);
  17.     StretchDIBits              (((W32WINDOW*)this->Target)->hDC,0,0,WindowSize.right,WindowSize.bottom, 0, 0, Width, Height, Data,&this->dib, DIB_RGB_COLORS, SRCCOPY);
  18.  
  19. }
  20.  
  21.  

Sin embargo, cuando se ejecuta, los controles del dialogo desaparecen y aunque haga InvalidateRect, dejan de verse.
Alguien sabe que estoy haciendo mal?

Gracias!!  ^_^

21
MySQL / sentencia algo complicada
« en: Lunes 17 de Mayo de 2010, 21:38 »
Buenas:

perdonad la molestia pero me estoy volviendo un poco loco para hacer una sentencia.

Tengo una tabla con los campos id,time,mac,status.

en ella se meten datos continuamente sobre el estado de unos sensores.

entonces quiero listar el ultimo status para cada mac diferente.

como puedo hacerlo?

gracias!

22
Visual C++ / problema con directorios en VS2010
« en: Lunes 10 de Mayo de 2010, 15:33 »
Buenas:

tengo Windows 7 y el Visual Studio 2010 instalado en C: y he cargado un proyecto que tenia en D:

Cuando lo cargo, el Visual me da un error diciendo que no tiene permiso para acceder a las carpetas, y me lo copia en c:.

Os ha pasado? Como puedo autorizar el Vs2010 a usar mi disco D:?

gracias!!! :D

PD: no sabia si poner la question en Visual c++ o en S.O. sorry...

23
Servidores / Servidor de Ficheros
« en: Martes 27 de Abril de 2010, 21:10 »
Buenas:

Era para preguntar si alguien sabe de algun servidor de ficheros que permita:

-acceso restringido a carpetas, ficheros segun usuario con autentificación (por ejemplo , los de I+D puedan ver toda la rama de desarrollo, pero los de hardware solo puedan ver la rama de I+D/HW)
-subir y bajar ficheros
-Encriptado
-con diferentes reglas de visibilidad de ficheros segun usuarios.
-mantenga la Fecha de creacion modificacion del fichero al pasarlo al server.
-logee los accesos.

y que preferiblemente:

-permita guardar versiones de ficheros
-regule el acceso por mac y usuario a ser posible
-permite ejecutar scripts, ejecutables sobre el fichero al ser subido. (como por ejemplo un antivirus, mails de control...)
-permita un acceso remoto seguro.


Para ello he probado a usando FTP sobre SSH, pero perdiamos las fechas al subir ficheros.
He probado a usar un Samba en un servidor ubuntu de una maquina virtual pero nos ha dado problemas para configurar los permisos y ademas no nos permitia encriptarlo.
No puedo poner Active Directory por que no hay un servidor de dominio y si lo pusiera ademas obligaria a todos a tener que crear un nuevo usuario y seria un lio.

Alguna sugerencia?

No tiene por que ser un unico programa, puede ser la unión de varios para ello.

gracias!   :good:

24
C/C++ / Abrir puerto en NON-BLOCKING
« en: Miércoles 24 de Marzo de 2010, 20:32 »
buenas:

hasta la fecha he programado servidores que abrian un puerto y escuchaban en tcp, pero siempre los hice bloqueantes.
En UDP, sin embargo, tengo el servidor como no-bloqueante, y todo va bien.

Sin embargo, estoy teniendo problemas para abrir un puerto tcp en no-bloqueante.

No entiendo muy bien.
Si despues de preparar el socket, hacerlo nobloqueante, hacer el listen y luego el accept; cuando el accept me devuelve WSA_WOULDBLOCK, que debo hacer para aceptar la conexion? Incluso lo he puesto en un bucle para recibir, pero no consigo entrar en el socket.

Código: C++
  1.  
  2. int appTCP::Open()
  3. {
  4. //-------- preparo el socket
  5.   sockaddr_in service;
  6.   ZeroMemory(&service,sizeof(service));
  7.   service.sin_family = AF_INET;
  8.   service.sin_addr.s_addr = htonl(INADDR_ANY);
  9.   service.sin_port = htons(Port);
  10.  
  11.     //creamos un socket para TCP
  12.     this->Socket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  13.     if (this->Socket==SOCKET_ERROR) return 1;
  14.  
  15.     //limpiamos nuestra address para hacer de host
  16.     memset((void *)&Host, '', sizeof(struct sockaddr_in));
  17.    
  18. //tomo los datos del host
  19.     /* Set family and port */
  20.     Host.sin_family = AF_INET;
  21.     Host.sin_port = htons(Port);
  22.  
  23.     /* Get host name of this computer */
  24.         gethostname(host_name, sizeof(host_name));
  25.         HostProperties = gethostbyname(host_name); //cojemos el nombre de la maquina local
  26.  
  27.         /* Check for NULL pointer */
  28.         if (HostProperties == NULL)
  29.             return 1;
  30.  
  31.         /* Assign the address */
  32.         Host.sin_addr.S_un.S_un_b.s_b1 = HostProperties->h_addr_list[0][0];
  33.         Host.sin_addr.S_un.S_un_b.s_b2 = HostProperties->h_addr_list[0][1];
  34.         Host.sin_addr.S_un.S_un_b.s_b3 = HostProperties->h_addr_list[0][2];
  35.         Host.sin_addr.S_un.S_un_b.s_b4 = HostProperties->h_addr_list[0][3];
  36.  
  37.         /*tenemos la ip , hagamosla string*/
  38. sprintf(StringIP,"%d.%d.%d.%d",Host.sin_addr.S_un.S_un_b.s_b1,Host.sin_addr.S_un.S_un_b.s_b2,Host.sin_addr.S_un.S_un_b.s_b3,Host.sin_addr.S_un.S_un_b.s_b4);
  39.        
  40.         TimeOut.tv_usec = msTimeout%1000;
  41.         TimeOut.tv_sec = msTimeout/1000;  // Time in seconds
  42.  
  43.  
  44.         u_long iMode = 1;
  45.         ioctlsocket (Socket, FIONBIO, &iMode);
  46.         err=WSAGetLastError(); 
  47.  
  48.         FD_ZERO (&fdSocket);
  49.         FD_SET  (Socket, &fdSocket); //ponemos el socket en vigilancia
  50.  
  51.         bind(Socket,(struct sockaddr *)&Host,sizeof(sockaddr));
  52.  
  53.         listen(Socket,SOMAXCONN);
  54.         unsigned int i=0;
  55.         err=WSAGetLastError(); 
  56.        
  57.         sockaddr Incoming;
  58.         int size=sizeof(Incoming);
  59.        
  60.         do
  61.         {
  62.             err=0;
  63.             SOCKET r=accept(Socket,&Incoming,&size);
  64.             if (r==-1)
  65.             err=WSAGetLastError();
  66.  
  67.         }while (err==WSAEWOULDBLOCK);
  68.            
  69. return 0;
  70. }
  71.  
  72.  

25
C/C++ / Excepcion Curiosa
« en: Jueves 25 de Febrero de 2010, 20:14 »
Buenas:

Llevo un par de dias con una excepción muy curiosa en mi codigo.

Código: Text
  1.  
  2. ...
  3. 'GRegister.exe': Loaded 'C:WINDOWS.0system32shlwapi.dll', No symbols loaded.
  4. 'GRegister.exe': Loaded 'C:WINDOWS.0system32msvcrt.dll', No symbols loaded.
  5. [color=#FF0000]First-chance exception at 0x7c92b21a in GRegister.exe: 0xC0000005: Access violation writing location 0x00000010.[/color]
  6. 'GRegister.exe': Unloaded 'C:Archivos de programaKaspersky LabKaspersky Anti-Virus 6.0 for Windows Workstationsadialhk.dll'
  7. 'GRegister.exe': Unloaded 'C:WINDOWS.0system32shlwapi.dll'
  8. 'GRegister.exe': Unloaded 'C:WINDOWS.0system32msvcrt.dll'
  9. ...
  10.  
  11.  

es una excepcion que se produce en la incialización de la aplicación , sin llegar a ejecutar ni una linea de codigo (o sea, que se produce durante la inicialización del programa, crt, windows, variables staticas...) .

Pero lo mas curioso, es que SOLO ocurre si en algun lugar uso MessageBox.
Si no hay ninguno, no ocurre, asi que es algo que se compila solo si se incluye esta funcion.

Igualmente, el codigo (a pesar de ser una excepcion de escritura en puntero no valido) funciona todo correctamente.
Quizas es el antivirus que esta supervisando los messagebox del sistema? os ha pasado algo asi a vosotros?


PD: me pasa con cualquier codigo, no solo con el GRegister, asi que no puede ser cosa de mi source. Quizas es algo de como esta montado el proyecto? quizas estoy mezclando alguna cosa?

gracias!

att:
Diego Martinez

Páginas: [1] 2 3 4