jueves, 18 de agosto de 2011

Integrando N1MM con OmniRig (MM2OR de LU7HZ)

Mi estación concursera está fuertemente automatizada alrededor de la plataforma OmniRig la que permite que muchos programas simultaneamente controlen los equipos de radio; es asi que el programa de logging (AALog), los filtros de recepción y otros permite establecer en forma coordinada la frecuencia, modo y otros parámetros de operación de los transceivers.
Por otra parte dependo crecientemente del excelente programa de logging de concursos N1MM que con su enorme potencia provee todo lo necesario como centro de control durante los concursos; en especial el crucial manejo de la configuración SO2R a la que me he acostumbrado tanto ultimamente.
El gran problema es que ambas plataformas si bien trabajan simultaneamente no son buenas compartiendo el control de los equipos de radio; lo tiene una o la otra pero no ambas.
El problema radica en que para comunicarse con las radios es necesario hacerlo mediante los puertos serie, y en la arquitectura de Windows solo un programa puede tener ese control en un momento dado. Si bien hay herramientas que permiten compartir un puerto serie son de poca utilidad, los programas asumen además que tienen el control exclusivo del puerto serie y se confunden muchisimo cuando reciben mensajes inesperados tal como experimenté durante el CQ MM DX donde intenté esa configuración. A pesar que OmniRig es una plataforma "abierta" (todo lo abierta que puede ser un programa en Windows, claro) y está implementada mediante un control COM que puede ser compartido entre muchos programas requiere no obstante que los programas especificamente implementen esta interfaz. Y es ahi donde empiezan los problemas, N1MM no implementa esta interfaz y basado en algunas consultas en el forum me parece que hay alguna pelea de pueblo chico entre los autores de ambas plataformas de forma que sea improbable que esta sea implementada en algun futuro. Por otra parte N1MM con todo lo potente y util que es tiene limitaciones de arquitectura muy evidente, no puede ser que un programa de semejante difusión dependa de sus autores para implementar cada nueva radio.
Al explorar estas posibilidades en el forum respectivo recibi en general un trato algo distante por parte de los autores del N1MM (tengo que aclarar que aun asi es mejor que el autor de OmniRig quien nunca contestó ningún mail que le mandé). Algunos no contestaron, otros lo hicieron en forma vaga y por su parte otros exclamaron que ni siquiera era posible una integración entre ambos programas.
Por supuesto que semejante afirmación es un disparate, podrá llevar mas o menos trabajo, pero siempre es posible integrar sistemas.
Por eso empecé con varios experimentos utilizando el muy versatil paquete com0com que esencialmente implementa un null modem virtual; es decir una aplicación abre el puerto serie (en este caso N1MM) y otra aplicación abre el otro puerto serie que mediante la configuración apropiada se transforma en el otro extremo de la conexión. De esa manera un programa como N1MM puede comunicarse con otro para el cual jamás fue diseñado. Pero eso es la mitad del problema, porque una vez que se puede interactuar con N1MM hay que implementar que los mensajes que envia sean contestados via OmniRig por el transceiver al que están dirigidos. Los comandos desde N1MM al transceiver tales como cambiar frecuencia, modo, VFO y split anduvieron rápidamente, pero el status del transceiver no fue tan facil de hacerselo entender al N1MM.
Por fortuna John (K3CT), uno de los autores del N1MM, finalmente me dio una copia especial del N1MM que tiene un trace que me permite ver que envia y que recibe por su puerto serie, lo que hizo posible que fuera ajustando los mensajes hasta que fueran correctamente tomados. Obviamente esta copia especial solo es necesaria durante el desarrollo, una vez que anda cualquier copia reciente del N1MM puede utilizarse.
De esta manera es posible por ejemplo tipear frecuencia o modo en la pantalla de nuevos contactos del N1MM y que estos actuen sobre el transceptor pero via OmniRig, es decir el logger ahora coexiste con todo el resto de los programas.
Esta integración tiene varios puntos importantes de cara a los concursos; en primer lugar habilita el uso del bandmap, es decir se puede posicionar el transceiver con click en las estaciones sobre el bandmap (que a su vez es alimentado en tiempo real por información del cluster). Por otra parte, y no menos importante, es que la banda registrada para el contacto se corresponde con lo que figura el transceiver, tuve varias veces durante concursos el problema que en el calor del tiroteo cambié de banda y olvidé registrarlo en el N1MM por lo que de repente habia estaciones que me las daba como no trabajada (en la banda que N1MM suponia que estaba) pero que si lo estaban (en la banda que el transceiver realmente estaba) haciendo perder mucho tiempo (y el pequeño papeloncito de recibir el QSO B4...).
Por ahora el programa está implementado como prueba de concepto pues solo funciona con el Yaesu FT100, hay que ponerle algo de trabajo adicional para generalizar su funcionamiento a otros transceivers, pero es un enorme paso adelante... sobre todo cuando habia alguien que aifrmaba que "... no se puede hacer."

No hay comentarios:

Publicar un comentario

Buscar este blog

Páginas vistas en total