Ver la versión completa : Puerto serie en Fénix... es posible?
masteries
15/02/2011, 11:30
¡Saludos compañeros del metal!
Os cuento un poco para que entendaís, necesito saber si en lenguaje Fénix se puede utilizar el puerto serie RS-232, vamos el COM de toda la vida. Porque necesito hacer un aplicación lo más visual y gráfica posible que se comunique con una placa de desarrollo miniSTM32 que gobernará un sistema físico. La comunicación en realidad utiliza un puerto serie virtual desde el puerto usb de la placa de desarrollo; la otro opción era implementar usb-hid pero se me está resistiendo, y el com virtual ya lo tengo finiquitado.
Ahora lo que quería era ahorrarme el trabajo de utiizar SDL y agarrar directamente Fénix que para gráficos 2D es muy rápido (tardas poco tiempo en desarrollar). Pero antes necesito saber si hay alguna manera de escribir/leer del puerto serie en Fénix.
Para los más entendidos que se pueden estar preguntando ciertas cosas muy malas, la comunicación por puerto serie se va a utilizar sólo para configurar opciones del sistema físico, que la placa guardará en una rom flash del bus i2c. Y quizá para descargar algunos .logs que se generen.
Gracias anticipadas.
GameMaster
15/02/2011, 11:36
Tienes el codigo en C que haga la comunicación ? Seria portarlo a un modulo de Bennu, no creo que sea dificil, eso si, tienes que tener el codigo en c y que funcione sin dependencias raras.
saucjedi
15/02/2011, 11:44
Pero ojito que entonces solo funcionaría en el target para el que hagas el modulo. No se podría coger uno de windows y pasarlo a cualquier otro target sin más.
Aunque imagino que no te estoy contando nada que no sepas.
¿Sistema operativo donde corre tu programa?
Porque en *nix los puertos serie no son más que un dispositivo dentro de /dev (muchas veces, /dev/ttySx) Puedes abrirlos, escribirlos y leerlos como si fuesen un archivo más y no necesitarían nada especial que no tenga Bennu/Fenix ya.
masteries
15/02/2011, 11:46
Tengo el código en .c ; lo que depende es de unos cuántos .h
Gracias por la idea GameMaster.
La verdad es que esta funcionalidad le daría un auge "industrial" al asunto, por los scada´s.
A ver si se pasa Splinter y nos ilumina aún más.
Edición: El programa correrá en Windows porque irá destinado a la sanidad pública y a clientes particulares.
animanegra
15/02/2011, 11:48
En bennu no se como andara, pero intente en su dia el tema de hacer funciones para el fenix de la gp2x y al menos yo no fui capaz. Metia las nuevas funciones en el fenix de windows o linux y todo guai, pero al intenarlo en la version para gp2x me daba pantalla negra en ejecucion.
Comprobe ademas que la compilacion cruzada no estaba erronea mediante una llamada en c normal y el programa se ejecutaba pero al intentar embeberlo dentro del fenix mediante llamada a funciones, conseguia compilar todo bien pero no llegaba a funcionar.
Solo es para avisarte de que no es, al menos tan directo como el hacer una libreria en c de fenix para linux o windows.
masteries
15/02/2011, 12:00
En bennu no se como andara, pero intente en su dia el tema de hacer funciones para el fenix de la gp2x y al menos yo no fui capaz. Metia las nuevas funciones en el fenix de windows o linux y todo guai, pero al intenarlo en la version para gp2x me daba pantalla negra en ejecucion.
Comprobe ademas que la compilacion cruzada no estaba erronea mediante una llamada en c normal y el programa se ejecutaba pero al intentar embeberlo dentro del fenix mediante llamada a funciones, conseguia compilar todo bien pero no llegaba a funcionar.
Solo es para avisarte de que no es, al menos tan directo como el hacer una libreria en c de fenix para linux o windows.
Animanegra, la aplicación Fénix/Bennu es para Windows, no es para la gp2x, aunque he escrito el tema en estos subforos de gp2x porque hay en ellos mucha experiencia en Fénix.
animanegra
15/02/2011, 12:14
A perdon, debi leer mal. :D Entonces tira de alguna libreria en c y le haces el parsing hacia funcion en fenix y listo. Es muy sencillo, ademas creo que por divsite o bennugd habia algun ejemplo muy sencillo. Yo si encuentro lo que tenia, empece una libreria de red para ver como iban esas historias en fenix, te lo rulo.
En lo que se refiere al puerto serie en c, yo alguna vez he hecho cosas mediante ioctl, y es facil de esa forma. Pero no estoy seguro que en windows se pueda usar lo mismo. Si eso te paso el source para eso, que tuve que hacer unas movidas para un gps.
masteries
15/02/2011, 12:49
Gracias Animanegra, lo voy a ir mirando porque para la aplicación gráfica que tengo en mente, con Fénix va a quedar de lujo y será bastante fácil de hacer.
Cosa que con SDL se puede, pero toca currar mucho más. Y no puedo perderme en esos menesteres.
GameMaster
15/02/2011, 13:08
Tengo el código en .c ; lo que depende es de unos cuántos .h
Gracias por la idea GameMaster.
La verdad es que esta funcionalidad le daría un auge "industrial" al asunto, por los scada´s.
A ver si se pasa Splinter y nos ilumina aún más.
Edición: El programa correrá en Windows porque irá destinado a la sanidad pública y a clientes particulares.
Si tienes el codigo en c, yo mismo podria probarte hacer el modulo si quieres
SplinterGU
15/02/2011, 14:30
es una aplicacion completamente grafica? tipo juego? porque si necesitas un GUI, no creo que fenix o bennugd sea la mejor opcion...
en cuanto al serial, por ahora no hay acceso directo, y si fuera linux podrias quizas directamente manipular los dispositivos (no lo probe nunca, pero en teoria se podria)
en windows deberias crear un modulo, yo creo que lo ideal seria con threads, que se encarguen de hacer la comunicacion, que vos le pases por parametro que quieres enviar por el serial y en otro buffer recibas respuestas desde el dispositivo, alguna funcion para setear los parametros del serial y creo que con eso estaria.
menciono threads, porque si en bennugd no haces frame, el video y la aplicacion se freeza hasta que le des el control y no queda lindo.
Tengo el código en .c ; lo que depende es de unos cuántos .h
Gracias por la idea GameMaster.
La verdad es que esta funcionalidad le daría un auge "industrial" al asunto, por los scada´s.
A ver si se pasa Splinter y nos ilumina aún más.
Edición: El programa correrá en Windows porque irá destinado a la sanidad pública y a clientes particulares.
¿Tambien usas scadas? ya nos enseñarás algo boníco.
masteries
16/02/2011, 11:30
es una aplicacion completamente grafica? tipo juego? porque si necesitas un GUI, no creo que fenix o bennugd sea la mejor opcion...
en cuanto al serial, por ahora no hay acceso directo, y si fuera linux podrias quizas directamente manipular los dispositivos (no lo probe nunca, pero en teoria se podria)
en windows deberias crear un modulo, yo creo que lo ideal seria con threads, que se encarguen de hacer la comunicacion, que vos le pases por parametro que quieres enviar por el serial y en otro buffer recibas respuestas desde el dispositivo, alguna funcion para setear los parametros del serial y creo que con eso estaria.
menciono threads, porque si en bennugd no haces frame, el video y la aplicacion se freeza hasta que le des el control y no queda lindo.
La parte de GUI es realmente pequeña, es más destacable la parte gráfica. Por eso quiero echar el guante a Fénix/Bennu para ello, porque el manejo de gráficos está muy simplificado.
SplinterGU
16/02/2011, 15:05
la parte serial es algo que se usa constantemente o solo para configurar? porque de ser esto ultimo, desde bennugd, puedes lanzar una aplicacion externa que solo se encargue de la parte serial...
tira un poco mas de detalles de lo que quieres hacer.
No te puedo decir detalles porque no es mi proyecto; pero como usuario de scadas casi te aseguraríia que se necesitaría uso constante
SplinterGU
16/02/2011, 15:57
No te puedo decir detalles porque no es mi proyecto; pero como usuario de scadas casi te aseguraríia que se necesitaría uso constante
puede ser, yo pense lo mismo, pero como en el primer post dijo que solo lo usaria para configurar y para bajar alguno que otro log...
aunque hace tanto que no trabajo con scada que ya no recuerdo si los datos los procesabamos de archivos de log o los obteniamos online... si recuerdo que usabamos 386 industriales y qnx4 como sistema operativo.
masteries
16/02/2011, 18:50
la parte serial es algo que se usa constantemente o solo para configurar? porque de ser esto ultimo, desde bennugd, puedes lanzar una aplicacion externa que solo se encargue de la parte serial...
tira un poco mas de detalles de lo que quieres hacer.
La parte serial sólo es para configurar, y muy de tarde en tarde leer algo del dispositivo de control para guardar esa configuración en disco duro de un pc. Y esto es sólo como salvaguarda, pues la configuración del dispositivo de control la guarda la propia plaquita en una memoria flash de 2 MB conectada a un bus I2C.
El proyecto, para que os aclareís, consiste en definir los ejercicios a realizar para un exoesqueleto de rehabilitación del miembro superior. Por lo que quiero mostrar el exoesqueleto en pantalla, y que con el ratón se elija la posición inicial y final del movimiento a realizar (todo muy gráfico, mediante sprites a color de 16 bits), y seleccionar el período del ciclo de trabajo. Se preveé poder consultar a la placa por el serial que tal ha ido de precisión los movimientos realizados, para saber el error cometido y corregirlo; pero no es una consulta en tiempo real, sino a posteriori.
SplinterGU, si quieres mándame un privado y me explicas cómo usar BennuGD para lanzar una aplicación externa, supongo que BennuGD podrá coger y mandar datos a esa aplicación externa para que los envie por el serial.
Gracias de antemano.
Lo de los scadas es una idea más lejana, pero que se acabará haciendo, mostrando un scroll en isómetrico de una planta de fabricación pequeña; el serial en este caso utilizará un conversor RS-485. Sólo es un scada para observar la evolución y los errores en el sistema, no servirá para gobernarlo.
SplinterGU
16/02/2011, 19:08
esta muy buena la idea del proyecto...
lanzar una aplicacion externa es muy simple, tenes el comando EXEC, este es el link a la ayuda en la wiki:
http://wiki.bennugd.org/index.php?title=Exec
si tienes alguna otra duda, no temas hacerlas, por aca, por privado, por mail o por el foro de bennugd.
masteries
30/05/2011, 23:09
Al final no utilicé ni Bennu ni Fénix; usé lenguaje C y OpenGL para mostra un modelo 3D en pantalla.
Para los temas del puerto serie, una librería sencillita me ha venido al pelo. Aunque en relidad no un serie, sino un puerto usb haciendo las funciones de un com.
Pero gracias por las respuestas.
SplinterGU
30/05/2011, 23:29
felicitaciones! me alegro que lo hayas resuelto aunque no hayas usado bennugd.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.