Hola buenas, tengo una pregunta para los entendidos en la materia.
Es posible usar los puertos SERIE del pc con Bennu??
Deseo hacer una aplicacion para puerto serie, aprobechando la super interfaz grafica de un lenguaje DIVLIKE y me preguntava si existe forma alguna de programar para el puerto serie del pc.
Movido a mesa de ayuda.
Habías posteado en el foro en inglés.
Que yo sepa, como no exista una dll con compatibilidad 100% con Bennu, no, no se puede.
Aunque sería interesante tener una .so de Linux que haga de parser con las funciónes open y close, porque así podríamos usar dispositivos como si escribiéramos en ficheros: imaginaos, puerto serie, paralelo, usb, webcams, pendrives... muy a bajo nivel, pero es algo.
Tambien se podría hacer un módulo/parser para dicho puerto ¿no? el que sepa...
Ah damn, an interesting feature request and it gets shipped to the Spanish section! Well que sera sera.
Bennu as of now cannot communicate with the COM port. It would be easy to do this on Windows 98 and earlier and even easier on Linux, BSD, etc. However, on Windows NT and later, it comes with some minor pains. It is doable however, and I've been thinking about making one, but never done it. Moreover, I have little time. Maybe someone else?
! It is great for Bennu characteristics as any other DIVLIKE have this support, and I personally would great for a project I'm doing in freebasic DIVLIKE not have any RS232 compatible ..
La verdad es qeu seria un avance muy potente para el lenguaje.. si alguien se anima ha programar una libreria con este fin.. estaria genial..
A mi me solucionaria la comunicacion con muchisimas maquinas que tengo conectadas por ethernet mediante un adaptador de ethernet/RS232 y el correspondiente driver para un puerto serie virtual..
Haber si alguien se anima a implementar esto en Bennu..
La verdad es que sí sería muy interesante. Por lo que veo en una búsqueda básica, habría que hacer dos implementaciones distinas: una para windows y otra para Unix-like.
Aquí hay un programa que hace todo lo que se me ocurre que se podría necesitar (no soy ningún experto en electrónica) para Linux:
http://www.comptechdoc.org/os/linux/programming/c/linux_pgcserial.html
Sólo habría que compartimentar un poco el código para convertirlo en librería, pero sería casi copy-paste.
PD: En windows parece que es alo más laborioso, pero tampoco muy complicado:
http://msdn.microsoft.com/en-us/library/ms810467.aspx
Quote from: Erkosone on December 02, 2009, 08:39:25 PMA mi me solucionaria la comunicacion con muchisimas maquinas que tengo conectadas por ethernet mediante un adaptador de ethernet/RS232 y el correspondiente driver para un puerto serie virtual..
Disculpad si digo una tontería, pero si va por cable ethernet, se supone que se puede comunicar por red mediante tcp/ip o udp ¿no? ¿no sería mejor entonces usar la fsock para dicha comunicación?
Y otra pregunta: recuerdo haber visto que Linux puede comunicarse con ficheros mediante sockets, no recuerdo bien el método, pero ¿sería posible comunicarse con ficheros de dispositivo mediante esta interfaz? ¿o eso sólo funcionaba entre procesos?
Sí, en Unix-like se puede hacer directamente mediante fopen+fwrite, si el usuario tiene permisos de escritura.
No funcionaría en windows, eso sí.
No, no es fopen, ya se lo pregunté a splinter en tienpos de Fenix, es OPEN a secas, que no es lo mismo: según el man, fopen se usa en ficheros binarios y de texto, open ADEMÁS permite leer y escribir en ficheros de dispositivos. Ya le comenté de cambiarlo pero me dijo que por portabilidad nos ería posible y que ya lo miraría.
Hacer un "parser" o como se llame con estas dos funciones en Linux podría ser como un "hola mundo" de los .so que me gustaría hacer algún día (si no se me adelantan).
Buenas de nuevo, pues no, por ehternet si que es cierto que viaja la informacion, pero va encapsulada en paquetes que se difigen a un puerto diferente cada vez que quiere cambiarlo el aparato solito.. es muy dificil de segir, porno decir imposible.. Tras mucho Snifar trafico de red y ver que las respuestas de estos cacharros nada tienen que ver con algun
Pero para esto traen su puerto serie virtual mediante un driver, el aparato es de la casa TIBBO, por si alguien quiere curiosear..
Buenas. como dijo jack el destripador vayamos por partes.
La comunicacion por rs232 se puede hacer a traves de un mero open??.
Bueno depende. :S Hay aparatos que leen la info de la forma estandar (por decirlo de alguna manera) si le pones la velocidad especifica, para lo que habria que hacer una funcion que permita setear la comunicacion mediante ese puerto y ponerle la velocidad de transmision (ademas de bits de paridad y ese tipo de cosas).
Un ejemplo de ejemplo sencillo es transmision entre dos ordenadores con un null modem. Basicamente si los configuras con un minicom en una parte lees del /dev/ttyS0 y de la otra haces un echo hacia /dev/ttyS0 puedes enviar y recibir los datos.
Vale para todo tipo de perifericos??
Evidentemente no, para hacer algo mas o menos generico creo que habria que tirar por ioctls que proveen funciones de setear o resetear el bit de cada uno de los pines de los puertos. Eso si, de ahi hasta hacer algo que use la frecuencia especifica del cacharro del otro lado y se pueda comunicar con su protocolo hay millas. Cada aparato tiene su propia forma de funcionar. Me toco a mi programar algo asi para la comunicacion con unos gps que tenemos que dan mensajes nmea y esas cosas y se pasan muchas penurias, hasta que le coges el tranquillo. Y lo que hice no es especialmente dificil, pero... te sirve para ver que o tienes buena docu del periferico o hacer ese tipo de cosas es una autentica mierda.
De toda formas, creo (pero no lo se, si alguien lo puede confirmar) que ioctls se pueden usar en linux y en windows asi que seria un metodo facil de implementar (Lo que es que un pin especifico se ponga en on o off) a traves de una libreria c. Eso si lo dicho, algunos perifericos se cabrean si no les das los datos a la frecuencia o de la forma que quieren.
En la carrera usé ensamblador para comunicar por el puerto serie... No me pareció demasiado complicado, pero ni idea donde tengo ese código.
¿Qué utilidad tendría usar el puerto serie en el mundo actual donde tenemos internet y todas esas cositas del futuUuUUuuuUurooOOoOOOoo... :o?
:P
Por ejemplo, podríamos comunicar un programa hecho en Bennu con un microcontrolador como Arduino: http://www.arduino.cc/ , y de esta manera entrar en el mundo de los robots físicos!!!! (por decir algo).
La verdad es que yo solo veo util el tema de puerto serie o paralelo para cosas mas pachaneras y hechas por nosotros mismos. Si la idea es la de manejar distintos aparatos optaria por una libreria de comunicacion usb. Eso si, la programacion serie o paralela es relativamente sencilla. pero el usb... a mi me parece casi magia.
Esque el uso de serie ya es solo para hard casi arcaico.
Por cierto arduino tiene su version con USB. :D
Hombre, hay muchos dispositivos que aún se comunican por puerto serie (equipos de adquisición de datos, por ejemplo).
A parte está el tema de equipamiento tipo arduino, que parece interesante.
Yo trabajé en su día comunicando un sistema embebido para obtención de datos con un PC windows a través del puerto serie, y el manejo era muy parecido a Linux: escribir y leer sobre una variable.
Cuando escribíamos se enviaba el byte al dispositivo, y obteníamos respuesta en otra variable, y con este sistema tan sencillo podíamos configurar la velocidad de transmisión, los datos que queríamos recibir, etc, porque primero le indicábamos que le mandábamos un comando (enviamos un 0), luego el comando, y despues los datos que fueran necesarios...
Con Linux era aun más sencillo, porque despues de OPEN, podíamos leer los datos que llegaban con READ (datos que se iban almacenando en un buffer de forma transparente) y mandarlos con WRITE...
Pero claro, esto es a muy bajo nivel, y conociendo el HW específico, por lo que tenemos que saber el protocolo del aparato, pero para eso se crearon los estandars ¿no?
A mi me gustaría conocer el protocolo USB creando un programa para meterlo en la GP2X, que leyese la info que manda el HOST (el PC al que lo conecte) y se la mandase a un mando (SLAVE) para oir su respuesta... vamos, oir y reenviar.
Animanegra escrivió:
La verdad es que yo solo veo util el tema de puerto serie o paralelo para cosas mas pachaneras y hechas por nosotros mismos. Si la idea es la de manejar distintos aparatos optaria por una libreria de comunicacion usb. Eso si, la programacion serie o paralela es relativamente sencilla. pero el usb... a mi me parece casi magia.
Esque el uso de serie ya es solo para hard casi arcaico.
El caso es que existen y existiran miles.. millones de posibles aplicaciones para el puerto serie, el paralelo ya no tanto.. pues es jurasico y poco difundido en informatica.. pero el puerto serie sirve por ejemplo para: Conectar el puerto serie de nuestros routers, hubs, swicth´s y poder configurarlos por telnet, para poder leed datos de un aparato de lecturas, por ejemplo un osciloscopio, espectrometro, generador de frecuencias portadoras con modulacion seteable, para configurar cuaquier telefono mobil e incluso husarlo y transperiri info, conectarlo a nuestra red, pasarle o leer datos de el, para comunicarnos con maquinas viejas..
El caso es que existen empresas "el 99,9 periodico %" que gastan miles de millones en tecnologia que deve durar muchos años, y por una razon muy obbia, que sond e hace años.. son configurables por puerto serie..
Robots con servomotores por doquier.. que sus controladoras se configuran por puerto serie..
In finidad de casos asi en la industria y en casa.. y en mi caso tengo como unos miles de millones invertidos en tecnologia laser para el guiado de aeronaves al llegar al aeropuerto de barcelona... van por puerto serie.. y no voi a cambiar las maquinas para que tengan el maldito usb hehehe..
Ademas de toda la funcionalidad añadida a la imaginacion de cada uno para poder crear hardware que trabaje por puerto serie..
En casa de todos seguro que hay algun aparato que tiene el puerto serie para alguna cosa..
El caso es que el puerto serie, ahunque queramos negarlo, esta vigente en todos sitios..
Acabo de ver que las máquinas de billetes del cercanías de Madrid tienen al lado un pequeño panel con un teclado y un pequeño display que se usa cuando se paga con tarjeta.
Pues por lo que he podido ver, se comunica con el resto del sistema por RS232... :)
Hola, perdonad que insista, pero cada vez veo más útil que Bennu tenga alguna capacidad para comunicarse con el exterior vía el puerto serie. No sé si conocéis Scratch (http://scratch.mit.edu), es un lenguaje de programación para ¿niños? con el que se pueden hacer películas tipo flash y también videojuegos. Bien, pues tiene una librería llamada Catenary (http://scratchconnections.wik.is/User:Chalkmarrow/Catenary) que permite comunicarlo con Arduino, de manera que si éste tiene algún sensor, el programa Scratch pueda reaccionar ante él. Incluso sin esta librería, se puede utilizar un Nunchuck con Scratch (http://scratchconnections.wik.is/User:Sburlappp/Emulating_a_ScratchBoard_with_an_Arduino). Por otro lado, el propio Arduino es capaz de comunicarse con Processing -siempre vía comunicación serie- (http://www.processing.org), el cual es un lenguaje de programación especialmente pensado para artistas, donde generar gráficos es tan simple como llamar a funciones tipo circle(), rect(), etc.
En fin, que viendo las posibilidades que se abren a una plataforma hacia multitud de otros usos solamente con la capacidad de recibir y enviar bits en un determinado orden, creo que merecería la pena ver si se puede adaptar algún módulo de alguna librería que haya ya para estos menesteres, que las debe haber a patadas.
He dicho.
Finit.
Yo lo miraría, pero mi ordenador no tiene un puerto serie...
...y ¿directamente pasando del puerto serie y programando para el puerto usb? Por ejemplo haciendo un wrapper de libusb:
http://www.libusb.org
USB también podría ser útil para un uso similar, aún así hay MUCHOS equipos que funcionan por RS232.
Por poner un ejemplo, en la universidad colaboro con uno de los departamentos y muchos de los equipos de adquisición de datos (que vienen de sensores tipo acelerómetros) funcionan a través del puerto serie.
Pero no sólo eso: casi todos los routers, placas base y equipamiento electrónico en general llevan un puerto serie, aunque muchas veces no se encuentra disponible para el usuario final.
Aún así ambas cosas parecen muy interesantes. Puede que en algún momento le eche un ojo.
A eso le podemos sumar que el estandar bluetooth añade un modo de funcionamiento que simula un puerto serie... y la verdad es que me iría de perlas un módulo para obtener datos via serie para el proyecto, pues dada la capacidad para manejar gráficos de bennu me simplificaría mucho la investigación (necesito ver las formas de onda).
De todas formas, creo que ya lo dije anteriormente: en Linux es un simple wrapper a las funciones open, close, read y write del sistema sobre los ficheros de dispositivos correspondientes (para aquellos que sepan hacer módulos).
He visto que hay una librería para comunicarse via Usb específicamente con determinados microcontroladores. Lo malo es que hay varios bindings, pero no para C, sólo para C++ y otros. Es Firmdata: http://www.firmata.org
También he visto esto, que tiene pinta de ser más interesante todavía: http://todbot.com/blog/2006/12/06/arduino-serial-c-code-to-talk-to-arduino/