[C con Clase] Puerto Serial en WinAPI
Steven Richard Davidson
stevenrichard.davidson en gmail.com
Mie Nov 14 07:03:54 CET 2007
Hola Paul,
On 11/13/07, Paul Andree Masias Chacon <paulmasias en yahoo.es> wrote:
> Ups, si ps olvide poner la linea de codigo en la q falla, en todo caso gracias por la pronta respuesta, en principio la linea de codigo es:
>
> hHilo = CreateThread(NULL, 0, Hilo, ¶m, 0, &id);
>
> para la cual me manda el error:
>
> ...\codigo\pto\serie.cpp invalid conversion from `DWORD (*)(DWORD*)' to `DWORD (*)(void*)'
>
El problema está en que el tercer parámetro de la función
'CreateThread()' requiere un puntero a una función del siguiente tipo:
DWORD WINAPI ThreadProc( LPVOID );
mientras que en tu programa, envías un puntero a una función de este otro tipo:
DWORD WINAPI ThreadProc( DWORD * );
El compilador no puede encontrar una conversión entre el prototipo de
la función que das y el que 'CreateThread()' espera. Por ello, te
lanza un mensaje de error.
> y una consulta programante, diculpa la ignorancia pero es q no se q es un casting en programación, y bueno como lo hago.
>
Bueno. No soy Programante, pero te contestaré de todas maneras.
Un "cásting" es un cambio de tipo. Lo que Programante te aconseja, y
yo también, es realizar un cásting explícito para forzar un cambio de
tipos. Esto sería,
hHilo = CreateThread( NULL, 0, (DWORD (*)(LPVOID *))Hilo, ¶m, 0, &id );
El API de MS-Windows incluye una definición para tal tipo y por tanto
puedes usar esta definición para que no sea tan engorroso escribir el
código anterior. Esto sería,
hHilo = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE)Hilo, ¶m, 0, &id );
Sugiero consultar el capítulo 9 de nuestro curso de C++ acerca de
conversiones de tipos. Puedes dirigirte a:
http://c.conclase.net/curso/index.php?cap=009 También puedes echar un
vistazo al capítulo 42: http://c.conclase.net/curso/index.php?cap=042
> por otra parte respecto a la otra pregunta q hago respecto a como incluir la comunicacion serial en mi programa, y es q es esto lo q mas me interesa saber, de todas maneras muchas gracias por el tiempo prestado.
>
Salvador ya te contestó sobre esto. Básicamente, menciona que
consultaras el siguiente artículo:
http://articulos.conclase.net/serie/
Espero que esto te ayude.
Steven
Más información sobre la lista de distribución Cconclase