Tengo un programa que envia (o deberia) enviar datos a traves de uno de los puertos serie.La manera mas simple seria depurarlo, poner un breakpoint en CreateFile y ver que HANDLE obtiene y despues en WriteFile para ver si logra escribir o no. La dificultad de monitorizar un puerto COM viene dada por la exclusividad del mismo: no pueden haber dos HANDLEs abiertos en todo el S.O. para un puerto COM.
Qual es la mejor manera de mirar si estoy realmente enviado alguna cosa? Es decir, hay alguna manera en windows de monitorizar lo que se envia por los puertos serie (COM1, COM2)?
I si con la aplicacion abro el COM1, conecto un cable serie del 1 al 2. Puedo ahora mirar el dos con alguna cosilla de windows? (lo he intentado con "terminal virtual" pero no veo na..)Si desde el COM1 logras enviar datos al COM2 podes usar la misma tecnica para abrir el COM2 y en vez de enviar recibir.
No he usado break points :( i al final he pasado a la marrulleria de los miss. Con esto he visto que la funcion writefile retorna lo que toca.
Pero al final bytes_written siempre es 0, es decir no escribe na de na. Ves alguna cosa rara?Esa afirmacion que haces me hace pensar que lo raro es que uses acceso asincrono a los archivos. Que bytes_written sea cero no quiere decir nada usando este tipo de acceso que por cierto no tiene mucho sentido que uses si inmediatamente haces un WaitForSingleObject con INFINITE ya que estas finalmente haciendo sincrona la escritura. Deberias utilizar acceso sincrono pero para obtener el resultado de un acceso asincrono se usa GetOverlappedResult. Consulta la MSDN ya que esto viene mucho mejor explicado ahi http://msdn.microsoft.com (http://msdn.microsoft.com) (ver WriteFile, CreateFile, etc).