Una pregunta sobre los puertos RS232.

Started by Erkosone, December 02, 2009, 06:55:15 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Erkosone

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.

josebita

Movido a mesa de ayuda.

Habías posteado en el foro en inglés.

Drumpi

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...
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Sandman

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?
-- Sandman

Erkosone

! 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..

josebita

#5
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

Drumpi

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?
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

josebita

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í.

Drumpi

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).
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

Erkosone

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..

animanegra

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.
"PoCoYo es dios!!"

Windgate

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
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

osk

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).

animanegra

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
"PoCoYo es dios!!"

josebita

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.