Hola a todos!
He heredado una aplicación hecha en Gambas y me estoy introduciendo en el mundillo.
esta aplicación comunica con varios periféricos a través de RS-485. En PC tiene un conversor RS-485 a RS-232 (no va por USB). Los periféricos actúan como slaves (sólo responden a las preguntas del PC). La cosa es que entre una trama y otra, tengo un delay de 50ms. Si pongo trazas en el código, veo que en el mismo milisegundo que recibo la respuesta de una trama, se envía la siguiente, pero si conecto el osciloscopio, entre la trama de respuesta y la siguiente pregunta tengo un tiempo de reposo de 50ms.
Es decir, según trazas en el código tengo los siguientes tiempos:
000ms: se envía trama de pregunta
055ms: se acaba de enviar la trama de pregunta
110ms: se empieza a recibir primeros bytes de trama de respuesta
150ms: se acaba de recibir la trama de respuesta
150ms: se envía trama de pregunta 2
Según el osciloscopio los tiempos son:
000ms: empieza trama de pregunta
040ms: acaba la trama de pregunta
050ms: empieza de trama de respuesta
090ms: acaba la trama de respuesta
150ms: empieza trama de pregunta
En el envío ya hay una diferencia de 15ms entre lo que tarda en enviar y el tiempo real de transmisión de la trama, pero entre que acaba la trama de respuesta y empieza la siguiente pregunta, hay un vacío de 50ms aprox.
Para enviar lo hago así:
Código:
_serial.Begin()
Write #_serial, s
_serial.Send()
Flush #_serial
Para recibir, he probado por polling o por interrupción y los tiempos no cambian.
La aplicación funciona sobre Debian 9.
¿Alguna idea de donde puedo estar perdiendo estos 50ms y como corregirlo?
Gracias.