delphi serial-port freeze writefile

delphi - Puerto serie WriteFile() congelación



serial-port freeze (4)

¿Ha intentado establecer CommPortDriver.CheckLineStatus en verdadero ("para evitar bloqueos cuando no está conectado el dispositivo o el dispositivo está apagado")? La fuente de la biblioteca comdrv32.pas contiene esa sugerencia.

Tengo una aplicación simple, que debe enviar un solo byte a un puerto serie una vez por minuto. Pero a veces, por alguna extraña razón, se congela en algún lugar de la función WriteFile (). Ambos controles de flujo sw y hw están desactivados. He buscado en Google algunas cosas sobre operaciones de lectura pendientes realizadas desde otros hilos, pero creo que esto no es un problema, porque mi aplicación tiene un solo hilo. Además, el manejo desde CreateFile parece válido, por lo que el puerto no debe ser utilizado por ninguna otra aplicación. ¿Alguien ha sufrido esto?



Si busca las palabras escritas en el archivo de escritura , encontrará varias discusiones sobre este problema. Algunos clientes potenciales son los desbordamientos del búfer, el tamaño de su memoria intermedia correctamente, un puerto COM defectuoso, despejando el estado en caso de error ... Parece que hay muchas cosas que probar.

Otra cosa que sugeriría es usar una biblioteca de comunicaciones en lugar de llamar directamente a la API, algo así como Async Professional ( http://sourceforge.net/projects/tpapro/ ). Incluso si agregan algunos gastos generales a su aplicación, pueden simplificar su trabajo y evitar una serie de riesgos potenciales ...


También puede probar ComPort , que se descuidó durante un tiempo, pero ahora se desarrolla activamente de nuevo.