Creo que accidentalmente he descubierto una necesidad en mi vida de sistemas integrados. ¡Lo cual es genial! Y algo de miedo. Y necesito ayuda.
Fondo : Me contrataron para crear una aplicación GUI que realiza escaneos de dos SICK LMS-291s y los integra con un GPS de precisión sub-pulgadas, para que sepa dónde ocurrió cada escaneo. Como ingenuo programador web que soy, entendí que el tiempo sería importante, ¡pero no me di cuenta de que también sería difícil! Si no sabe cuándo se produjo cada punto de GPS y cada exploración, no puede averiguar dónde se producen las exploraciones. Ups.
Habían especificado windows 7 como plataforma, y también habían comprado un SeaLevel RS422 a USB para conectar los sensores y el GPS a, y en poco tiempo descubrí mi locura. En algún lugar entre los sensores y mi programa de computadora, algo impedía que los escaneos llegaran de manera oportuna. El LMS escupe 75 exploraciones por segundo, o a 13.32 ms / exploración. Mi programa no los consigue de manera oportuna. Los obtiene cada 100 milisegundos, en grupos de 7 u 8 o 10 o algo así. También a veces no se muestran suficientes escaneos, o están destrozados. O este adaptador SeaPort solo envía diez veces por segundo (¿es posible? No sé cómo funciona el USB) o Windows no está revisando el búfer (debe haber un búfer en alguna parte, ¿no?) Con la frecuencia suficiente.
Día actual : Esto conduce a algunas inexactitudes con las que el cliente está básicamente de acuerdo. Sin embargo, no lo soy, y como tengo la oportunidad de hacer un trabajo similar para el cliente (¡integrando más entradas de sensores!), Me gustaría averiguar cómo hacerlo correctamente, por ejemplo. dada la precisión del GPS, ser capaz de dar garantías sobre la precisión y la exactitud de las ubicaciones de escaneo.
¿Cómo se ve eso? Necesito una interfaz de usuario y poder comprobar la entrada de estos tres dispositivos cada 13,32 milisegundos. Si utilizara FreeRTOS con, digamos, Nano-X para la GUI, ejecutado en una computadora portátil que proporcionan, ¿me parecería una solución sensata? ¿Es posible que el adaptador RS-422 a USB esté causando estos retrasos, y el uso de Windows está realmente bien para este propósito?