![]() |
Variar control de flujo Puerto Serie
Muchas veces no se sabe como prebuntar y por eso no se encuentra la contestación correcta.
Una vez abierto el puerto me funciona todo correctamente: ... DCB.BaudRate:= CBR_115200; // 19200 DCB.Parity:= noPARITY; DCB.StopBits:= ONESTOPBIT; DCB.Flags:=$01 ; DCB.ByteSize:=8; SetCommState(hComm, DCB); ... Al leer con ReadFile se queda colgado. Es debido a que el control de flujo se queda programado en Hadware. Lo he comprobado al arrancar el Hyperterminal y reconfigurar el puerto. Lo cargo con Hyperterminal y ya funciona todo correctamente. Pregunta ¿Cómo se programa el Control de flujo para que se quede en "ninguno"? He probado desde el controlador del COM1 y está en "Ninguno" siempre Gracias |
El control de flujo se configura en la estructure DCB al igual que el resto de parámetros. En delphi todo un grupo de miembros de esa estructura que midem solo uno o dos bits se juntan dentro de un solo parametro llamado "flags". En resumen si no quieres tener ningún tipo de control de flujo utiliza algo como esto:
De todas formas no creo que el problema que comentas venga del control de flujo, ya que este solo actúa cuando el buffer se llena. Lo que parece que esta pasando es que no hay suficientes bytes almacenados en el buffer cuando llamas a la función readfile, por lo que la función no termina, esperando hasta recibir los bytes que le estas pidiendo. Una forma de solucionarlo es utilizar la función ClearCommError, que entre otras cosas nos permite saber cuantos bytes hay en el buffer esperando para ser leídos. Así una vez que sabemos cuantos bytes hay en el buffer llamamos a la función ReadFile para que lea solo ese numero de bytes, asegurándonos de que la función terminara inmediatamente. |
Gracias por el comentario. Voy a ver lo que comentas.
El tema es que arranco el Hyperterminal con la configuracion correcta y lo cierro y el programa que he realizado va estupendamente. Voy a ver si puedo arreglarlo con viendo el buffer. Muchas gracias. |
hola amigo.. soy nuevo en este blog y me parecio muy bueno
queria saber si me pueden ayudar o darme algun tuto de delphi7 para controlar un rele mediante usb o puerto.. muchas gracias... |
La franja horaria es GMT +2. Ahora son las 04:36:09. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi