Pregunta

Estoy usando socat para crear un puerto serie virtual con:

socat PTY,link=/dev/ttySV0,echo=1 PTY,link=/dev/ttySV1,echo=1

En mi programa escrito en C++, abro el puerto ttySV1 y empiezo a leer.

La función de lectura está en un tiempo, pero el problema es que la función de lectura se cuelga hasta que envío datos al puerto.¿Sabe cómo hacer que la función taht no se cuelgue y simplemente salga si no hay datos en el búfer?

EDITAR:Envío datos al puerto usando:

echo [data] > /dev/ttySV0
¿Fue útil?

Solución

También puede utilizar una función de lectura del sistema según el sistema operativo que esté ejecutando.Los detalles deben leerse en man (3).

Tendrías que configurar O_NONBLOCK usando fnctl.Esto debería provocar que la lectura falle si la tubería/FIFO está actualmente vacía.Revisé las páginas de manual de Linux, pero deberían tener comportamientos similares en la mayoría de los sistemas basados ​​en POSIX.

Otros consejos

Una forma es utilizar el método de selección () para ver si hay datos para leer. Este o algo más se encuentran en Google (Busqué "bsd zócalos seleccionar ") le llevará por el camino correcto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top