• Domingo 28 de Abril de 2024, 07:31

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 - zairillo

Páginas: [1]
1
Programación en C / Programación paralela
« en: Viernes 15 de Abril de 2011, 09:35 »
Hola a todos!

Estoy empezando a trabajar con programación paralela pero necesitaría aclarar unos conceptos que, después d buscar por internet, no me quedan claros del todo.
La sentencia #pragma omp parallel lo que hace es crear tantos threads como tu definas, ¿cierto?
Entonces si dentro de esa sentencia pongo por ejemplo:
 #pragma omp parallel shared(valor) //previamente definido a 0
{
id_thread = omp_get_thread_num();
leido = valor;
valor += 10;
escrito = valor;
printf("thread %d, lee valor %d y escribe valor %d", id_thread, leido, escrito);
}

Lo que hay dentro de la sentencia pragma lo ejecutará cada thread pero mientras uno lo esté ejecutando, otro no tendrá acceso a esa región, quiero decir, un thread empieza a ejecutarlo y cuando termina, empieza el siguiente y así sucesivamente, ¿es así?

Ahora bien, modifico lo siguiente en el programa:
#pragma omp parallel shared(valor) //previamente definido a 0
{
id_thread = omp_get_thread_num();
#pragma omp barrier
leido = valor;
valor += 10;
escrito = valor;
printf("thread %d, lee valor %d y escribe valor %d", id_thread, leido, escrito);
}

Por lo que cuando un thread lee la barrera, espera a que todos los demás threads lleguen ahí ¿correcto? Pero el problema que tengo es que no entiendo por qué los datos que presenta por pantalla no está en orden como en el caso anterior es decir, si la primera vez que se lee "valor" es 0 y se escribe 10, y la segunda vez se lee 10 y se esribe 20, ¿por qué no siempre va en ese orden?

Espero haberme explicado. Un saludo y muchas gracias!

2
C/C++ / Convertir Cadena de caracteres en un float
« en: Sábado 28 de Marzo de 2009, 12:27 »
Hola a todos!

Necesito saber si hay alguna función o algo que me realice lo siguiente:

Estoy realizando un proyecto, y me encuentro con este problema: Tengo una cadena de caracteres declarada con "unsigned char cad[4], por ejemplo" y en cada una de esas 4 posiciones existirá un valor. Pues bien, necesito unir los 4 valores esos para formar una sola variable de tipo "float".
He estado mirando y existen funciones como atoi(convierte cadena Char en Int), atof(convierte cadena Char en double) y atol(convierte cadena Char en long), pero no he visto ninguna función que convierta Unsigned Char(que no Char solamente) a float.

Espero que me echéis una mano.

Un saludo.

3
C/C++ / Cadena de caracteres hexadecimal
« en: Viernes 20 de Marzo de 2009, 11:57 »
Hola a todos!

Ando liado con un proyecto en el cual tengo que trabajar con cadenas de caracteres en las cuales hay caracteres en hexadecimal. Mi problema es que para comprobar que funciona, declaro una variable a la que le doy un valor en hexadecimal, 0x10 por ejemplo, y seguidamente la saco por pantalla, pero al sacarla por pantalla lo que me sale es un símbolo raro, ¿qué tengo que hacer?

Un saludo!

4
C++ Builder / Librería windows.h en c++
« en: Martes 17 de Febrero de 2009, 18:39 »
Hola a todos!

Estoy realizando un proyecto para la transferencia de datos por el puerto serie, y tengo un problema. A la hora de trabajar con el puerto uso CreteFile, ReadFile y WriteFile, todos incluídos en la librería windows.h. Mi problema es que cuando tengo el código realizado, si lo ejecuto en un ordenador que tenga el windows xp me funciona perfectamente, pero si lo compilo en un ordenador con wondows vista no me funciona, ¿Sabéis por qué puede ser?

Un saludo.

5
C++ Builder / Programación puerto serie en c++
« en: Jueves 5 de Febrero de 2009, 20:41 »
Hola amigos!

Para empezar mi proyecto, el cual se trata de la conexión de un GPS(realizado por otra alumna) al puerto serie del pc, lo primero que intento es ver que soy capaz de enviar datos y recibirlos por el puerto COM. Tengo un cable adaptador USB-serie, el cual va conectado al pc por el usb, quedando libre el terminal serie. De los 9 pines que tiene el terminal, uno es de transmisión y otro de recepción, así que los he puenteado para que así pueda recibir lo que transmita.
Dicho todo esto, os intentaré plantear mi duda lo más explícitamente posible.
He estado mirando muchos forros y en cada uno se habla de una cosa, y al final, no llego a ninguna conclusión. El compilador que uso es el Borland Builder c++ v.6.0, y mi sistema operativo es el windows vista.
Según he leído, por medio de las API`s de windows se puede manejar este puerto, pero ahora según tengo entendido es más complicado, porque antes era más sencillo con windows 98 o ms-dos.
Según he leído, el modo sería tratar el puerto como un fichero, es decir, abrirlo, realizar lo que queramos hacer y luego cerrarlo.
Otra forma que he leído es por medio de librerías que el propio compilador trae, o descargándomelas(lo cual no me funciona nunca).
Tengo un lío increíble, y no sé por dónde coger esto, necesitaría tutoriales, sitios donde estén las instrucciones para el manejo del puerto, algo de dónde poder empezar a entender todo esto.
Os agradecería muchísimo una ayuda para pode empezar con el proyecto.

Saludos!!

6
C++ Builder / Usar puerto serial del pc
« en: Sábado 10 de Enero de 2009, 20:59 »
Hola a todos!

Soy nuevo aquí. Os expongo mi duda.
Voy a hacer un proyecto de fin de carrera, y para ello tengo que hacer un software para un receptor de GPS, el cuál está diseñado para la conexión al pc mediante el puerto serial. Mi duda es que, si yo programo todo para la transferencia por el puerto serial, y después le pongo un cable adaptador de puerto serial a usb, para conectarlo al usb de mi pc, ¿cambiaría algo?
Es que tengo portátil y no tiene puerto serial, y me gustaría hacer el software para usb, ya que el puerto usb es más moderno y se usa mucho más.
Quiero saber esto antes de empezar con el proyecto, para saber si informarme de una cosa u otra, ya que el receptor se diseñó con salida para puerto serial.

Muchas gracias!

Saludos!

Páginas: [1]