|
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 - kezern
Páginas: [1]
1
« en: Martes 8 de Junio de 2010, 13:55 »
Hola a todos. Estoy buscando ejemplos de ejercicios (a poder ser resueltos) sobre punteros, listas, colas y pilas. LLevo un rato buscando en google y lo único que encuentro son tutoriales sobre como usar punteros y los ejemplos que acompañan a los tutoriales son demasiado simples. ¿Alguien puede decirme donde conseguirlos? Un saludo y gracias
2
« en: Miércoles 29 de Noviembre de 2006, 16:41 »
Hola a todos. He hecho un programa servidor que envia una imagen a otro programa cliente usando sockets TCP. Me gustaría cambiarlo para que en lugar de TCP usase UDP. Lo he intentado pero no consigo que funcione. El programa servidor es así. // Initiate the winsock2 library WORD wVersionRequested; WSADATA wsaData; wVersionRequested=MAKEWORD(2,2); if (WSAStartup(wVersionRequested,&wsaData)!=0) { printf("Initiating error"); exit(1); } //Definition of local and remote socket addresses localSocketAddress.sin_family=AF_INET; localSocketAddress.sin_port=htons(7777); localSocketAddress.sin_addr.s_addr=htonl(INADDR_ANY); remoteSocketAddress.sin_family=AF_INET; remoteSocketAddress.sin_port=htons(7777); remoteSocketAddress.sin_addr.s_addr=inet_addr("192.168.0.2"); // TCP sockets sock=socket(PF_INET,SOCK_STREAM,0); if(sock==INVALID_SOCKET) { printf("Creating socket error"); exit(1); } //Configuro los parámetros del socket int val=5*1024*4; int size=sizeof(int); int flag=1; setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (const char *) &val, sizeof(val)); setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (const char *) &val, sizeof(val)); setsockopt(sock,IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(int)); unsigned long iostate = 1; ioctlsocket(dialogSock,FIONBIO, &iostate); //non-blocking mode enabled int check=bind(sock,(sockaddr*)&localSocketAddress,sizeof(localSocketAddress)); if(check==SOCKET_ERROR) { printf("Bind error"); exit(1); } while (0!=listen(sock,0)){} dialogSock=accept(sock,(struct sockaddr*)0, 0); if(dialogSock==SOCKET_ERROR) { printf("Accept error"); exit(1); } char buffers[80]; memset(buffers, 0, sizeof(buffers)); //Clear the buffer d=getJPG(); sprintf(buffers, "%8d", d->tam); send(dialogSock, buffers, sizeof(buffers) - 1,0); send(dialogSock, (const char*)d->buffer,d->tam,0);
Y el cliente así: // Initiate the winsock2 library WORD wVersionRequested; WSADATA wsaData; wVersionRequested=MAKEWORD(2,2); if (WSAStartup(wVersionRequested,&wsaData)!=0) { printf("Initiating error"); exit(1); } //Definition of local and remote socket addresses localSocketAddress.sin_family=AF_INET; localSocketAddress.sin_port=htons(7777); localSocketAddress.sin_addr.s_addr=htonl(INADDR_ANY); remoteSocketAddress.sin_family=AF_INET; remoteSocketAddress.sin_port=htons(7777); remoteSocketAddress.sin_addr.s_addr=inet_addr("192.168.0.3"); // TCP sockets, creo los dos sockets sock=socket(PF_INET,SOCK_STREAM,0); if(sock==INVALID_SOCKET) { printf("Creating socket error"); exit(1); } //Configuro cada uno de los sockets int val=5*1024*4; int size=sizeof(int); int flag=1; setsockopt(sock, SOL_SOCKET, SO_SNDBUF, (const char *) &val, sizeof(val)); setsockopt(sock, SOL_SOCKET, SO_RCVBUF, (const char *) &val, sizeof(val)); setsockopt(sock,IPPROTO_TCP, TCP_NODELAY, (char*)&flag, sizeof(int)); //Conecto los dos sockets int check=connect(sock, (struct sockaddr*) &remoteSocketAddress, sizeof remoteSocketAddress); check=recv (sock, buffers, sizeof(buffers)-1, 0); int num=atoi(buffers); char* buf; buf=new char [num]; check=recv (sock,buf,num,0); mf.size=num; mf.data=(unsigned char*)buf;
Lo que he hecho ha sido cambiar el SOCK_STREAM por SOCK_DGRAM y eliminar en el servidor las funciones bind, listen y connect además de cambiar los send por sendto. Pero no me funciona. ¿Alguien puede echarme una mano?
3
« en: Jueves 9 de Noviembre de 2006, 13:18 »
Hola a todos. Estoy usando VOImage para cargar imágenes jpg. Tengo este código CVOImage ima; CString path = _T("Cliente/img.jpg"); HDC picDC = ::GetDC(m_ventanaRender->m_hWnd); ima.Load(picDC,path); ima.Draw(picDC,0,0); ReleaseDC( m_ventanaRender->m_hWnd, picDC);
En el leo la imagen desde un archivo y la muestro por pantalla. Me gustaría modificar la función Load para leer el jpg desde un buffer de memoria, he cargado el archivo cpp e intentando comprender la función para modificar los parámetros pero no hay forma. Alguien ha hecho algo parecido? Agradecería una mano. Un saludo.
4
« en: Lunes 23 de Octubre de 2006, 12:31 »
Espero que la pregunta que voy a hacer no sea abusar mucho de vuestra paciencia. Después de buscar mucho por Internet he conseguido convertir una imagen RAW a JPG. El problema es que dicha librería me guarda la imagen jpg en un archivo. Yo quiero tenerla en otro buffer para trabajar directamente con ella (al andar leyendo y escribiendo en archivos pierdo mucho tiempo). A esta función le paso entre otros parámetros pBuffer que es la imagen que quiero convertir y strOutFileName que es la ruta del archivo JPG de salida. He estado mirando el cinfo que parece que es donde guardan los parámetros de escritura del jpg para que me lo guardase en un buffer pero no lo he conseguido. ¿Alguien sabría como tengo que modificar el código para conseguir lo que pretendo? Un saludo. BOOL WriteRGBBytesIntoJpegFile(const CString& strOutFileName, const int nWidth, const int nHeight, const int nQuality, BYTE* pBuffer) { struct jpeg_compress_struct cinfo; struct extended_error_mgr jerr; JSAMPROW row_pointer[1]; int row_stride; FILE* outfile; if ((outfile = _tfopen(strOutFileName, TEXT("wb"))) == NULL) { strError.Format(CANT_OPEN_FILE, strOutFileName); return FALSE; } cinfo.err = jpeg_std_error(&jerr.pub); jerr.pub.error_exit = extended_error_exit; jerr.pub.output_message = extended_output_message; jerr.pub.reset_error_mgr = extended_reset_error_mgr; if (setjmp(jerr.setjmp_buffer)) { jpeg_destroy_compress(&cinfo); fclose(outfile); return FALSE; } jpeg_create_compress(&cinfo); jpeg_stdio_dest(&cinfo, outfile); cinfo.image_width = nWidth; cinfo.image_height = nHeight; cinfo.input_components = 3; cinfo.in_color_space = JCS_RGB; jpeg_set_defaults(&cinfo); jpeg_set_quality(&cinfo, nQuality, TRUE); jpeg_start_compress(&cinfo, TRUE); row_stride = nWidth * 3; while (cinfo.next_scanline < cinfo.image_height) { row_pointer[0] = & pBuffer[cinfo.next_scanline * row_stride]; jpeg_write_scanlines(&cinfo, row_pointer, 1); } jpeg_finish_compress(&cinfo); fclose(outfile); jpeg_destroy_compress(&cinfo); return TRUE; }
5
« en: Lunes 18 de Septiembre de 2006, 16:53 »
Estoy haciendo un programa en EVC++ para un pocket pc y me gustaría alguna forma de comprimir una imágen que tengo. ahora mismo me ocupa 150 kb y la tengo en un buffer. Necesito que ocupe una cuarta parte de ese tamaño pero no consigo ni pasarla a escala de grises ni nada. ¿Hay alguna librería o cualquier otra forma de bajarle el tamaño a esa imagen? Un saludo y gracias por adelantado.
6
« en: Miércoles 23 de Agosto de 2006, 11:18 »
Estoy haciendo un programa en Visual C++ para funcionar en un pocketpc. Por ahora conecto con la cámara del pocketpc y muestro el video en la pantalla. A la vez voy refrescando un buffer con los fotogramas que capturo de la cámara. Ahora intento mandar el contenido de ese buffer 30 veces por segundo a otro pocketpc para mostrar el video el el otro pocketpc. Se que la conexión por TCP se realiza bien porque he intentado mandar una sola vez el contenido del buffer y lo hace bien, pero cuando lo intento hacer de forma contínua el programa se bloquea. La imagen del buffer tiene una resolución de 320*240 y 2 bytes por píxel, lo que hace un tamaño de imagen de 150 kb. He hecho la prueba de mandar solo la mitad de la imágen y me lo hace bien, así que supongo que será un problema que la imágen es pesada para poder mandarla. Me gustaría saber alguna forma de reducirle el peso a unos 75Kb. No tengo muy claro como pasarla a escala de grises o si hay alguna compresión que pueda servirme. Un saludo y gracias
7
« en: Jueves 13 de Julio de 2006, 10:22 »
No he dicho nada, problema solucionado ---------------------------------- Se que esta pregunta puede ser bastante estúpida pero ahi va. Estoy programando con evc4 para windows mobile 2003. Tengo unos archivos de una clase (el .cpp y el .h) Es una clase para conectar con una camara que tiene la PDA. Una de las funciones de esa clase es void ReadImage(). Tiene por delante un void, lo que significa que es un procedimiento y por lo tanto no devuelve resultado y no se le pasan parámetros. Desde el archivo que estoy trabajando he incluido la linea #include "clase.h" y en el momento en que quiero que me guarde la imagen hago simplemente ReadImage(), pero al compilar me da este error: error C2065: 'ReadImage' : undeclared identifier Cuando he llamado a las funciones de una clase las he llamado siempre así y nunca he tenido problemas.¿Que estoy haciendo mal? Un saludo y gracias
Páginas: [1]
|
|
|