# Programacion Puerto serie semejante a paralelo?



## microniano (Sep 18, 2009)

Hola como estan? bueno mi duda es la siguiente, creo que no fue planteada porque no la encontre o quizas sea algo medio tonto de preguntar pero bueno aca voy:
Estoy interesado en comenzar a controlar el puerto serie a traves de programación en C, lo cual manejo un poco. Encontre muchos libros que hablan de manejo de puerto paralelo, pero poco en puerto serie.Mi pregunta concreta es: que es lo que cambia en la programacion en cada caso? las instrucciones serian mas o menos las mismas? Y otra cosa lei por ahi que es complicado el acceso a los puertos a traves del vista, es asi? muchas gracias desde ya y desde ya disculpen por la ignorancia


----------



## Dr. Zoidberg (Sep 18, 2009)

microniano dijo:


> Estoy interesado en comenzar a controlar el puerto serie a traves de programación en C, *lo cual manejo un poco*.



Hummm...mal comienzo. Tenés que manejar bien el C como para empezar tranquilo



microniano dijo:


> Encontre muchos libros que hablan de manejo de puerto paralelo, pero poco en puerto serie.Mi pregunta concreta es: que es lo que cambia en la programacion en cada caso? las instrucciones serian mas o menos las mismas?



La programación del serie es *totalmente diferente* del puerto paralelo. No sé que tipo de programación querés hacer: si manejar vos los registros del chip o comunicarte con el driver de Windows. Si es lo primero...vas a complicarte la vida, no es que sea difícil, pero si no entendés y analizas el chip y además se te ocurre usar interrupciones para la gestión I/O...va a estar difícil hacerlo...y mas aún bajo windows, que virtualiza el hardware en modo usuario. Si es lo segundo...es mucho mas simple, pero vas a tener que conocer y aprender a realizar invocaciones *ioctrl *y pasar estructuras raras al driver para poder operar correctamente y lograr lo que quieres.



microniano dijo:


> Y otra cosa lei por ahi que es complicado el acceso a los puertos a traves del vista, es asi? muchas gracias desde ya y desde ya disculpen por la ignorancia



No solo en el vista...sino en cualquier sistema operativo moderno, ya que en modo usuario no tenés la autorización de realizar operaciones I/O sobre los puertos del sistema aislado. La unica forma de hacerlo es:
Trabajar en modo kernel: mmmuuuuyyyy dificil, por que tenés que escribir un device driver.
Trabajar con una dll (y un driver) que te permita el acceso: Bastante mas fácil, pero no he visto ninguno que funcione bien al 100%.
Autorizar al programa a realizar operaciones I/O mediante un driver+programa externo: Muy simple y bastante útil si no querés complicaciones extra. Te recomiendo este método, así qeue andá a www.beyondlogic.com y buscá el PortTalk.

Saludos!


----------



## tecnogirl (Sep 18, 2009)

microniano: Solo para añadir que la tarea de la transmision serial de datos en la PC la realizan los llamados UART o USART para que busques sobre ellos. Salu2


----------



## cibertronic (Oct 7, 2009)

hola y permitan discrepar... yo he programado tanto sobre puertos serie como paralelo y la programacion es la ......

lo que envias o recibes es un byte o bits segun lo veas ya sea al puerto serie o paralelo 

en la paguina : 

http://www.todoexpertos.com/categor...-access/respuestas/213913/leer-del-puerto-com

encuentras un programa para ilustrarte como programar en un puerot serie.

EL CAMBIO ES: la forma de como interpretas ese bit, es decir la parte electronica, el paralelo es muuuuyyyy facil pues con solo un transistor ocnectado ya puedes aser uso de ese bit.

*En PARALELO*

Byte digamos la "A" 
asc                  65
binario              0100 0001

es decir que en el puerto paralelo habra dos patitas con 5 voltios ( 1 - 5vol/ 0 - 0vol) en los cuales conectas digamos dos motores y para detenerlo vastara envia un  0 (bin 00000000)


*
En serie la cosa cambia:
*

 envias "A" -> en el puerto encuentras  0100001
                    ... pero aqui 1 significa -10voltios y 0 es 10 voltios

para eso utilizamos el max232 que transformadorma ese 1(-10v) a un 1 de 5 voltios


Luego usas un convertidor de serie a paralelo :
http://www.pablin.com.ar/electron/circuito/mc/sertopar/index.htm
y bueno ya tienes las dos patitas con 5 voltios como el caso de paralelo

............................

Como pueden ver la programacion sera la misma, la que camiba es laparte electronica de como tratar ese bit, es decir el HARD.

Bueno ojala haya sido de ayuda mi explicacion.

Nuevamente mucho gusto, espero que este foro nos permita aprender bastante.....


*para programar sobre los puertos COM no es nesesario drives
para programar sobre puertos USB ahi si pero hay drives genericos para el caso.*


----------



## microniano (Oct 7, 2009)

Muchas gracias por sus respuestas las tendre en cuenta!


----------



## Nstalej (Oct 8, 2009)

Hola a todos que tal....!!!

bueno la verdad es que yo estoy mas interesado en manejar el puerto serial a travez de visual basic .NET espero que puedan ayudarme....!!!

Gracias  =)....


----------



## darioarmella (Nov 11, 2009)

Hola como estan? soy un estudiante de ing en sistemas y estoy en un proyecto personal, basicamente consiste en un estacionamiento de autos en el que cada posicion tiene un sensor que detecte la presencia de un automovil, estoy trabajando con puerto paralelo y quisiera saber como programar la lectura del puerto paralelo en modo interrup. Solo se realizaria la lectura de los puertos en el momento que el sensor detecte la presencia de un auto.El lenguaje a usar seria c++ o c#


----------



## Meta (Nov 12, 2009)

Hace tiempo estaba metido con C# y elpuerto paralelo para hacer un manual con ellos como he hecho con otros sobre el puerto serie. Cuando pueda lo hará ya para el Visual C# Express 2010.

http://www.slideshare.net/Metaconta/presentations

Saludo.


----------



## tecnogirl (Nov 13, 2009)

darioarmella: Tu consulta no la debes poner dentro de otro foro, creando un tema nuevo, pero te voy adelantando algo:

Es viable manejar el puerto mediante interrupciones y para ello debes:

- buscar una interrupcion que est‚ disponible en la PC (esto es, que no la este usando otro dispostivo).
- habilitar esa interrupcion en el controlador de interrupciones (PIC) de la PC para que la CPU la reconozca y
- habilitar el bit 4 en el registro de control del puerto paralelo para que al activar la señal de interrrupcion en el puerto paralelo, el hardware produzca la interrupcion.

Una vez hecho lo anterior, hay que hacer un programa que atiende la interrupcion (suele llamarse Interrupt Service Rutine -ISR-) que basicamente lo que hace es reconocer la interrupcion, resetear el bit de la interrupcion en el PIC y darle paso a la rutina que atiende a la interrupcion, etc.

Dificil ?.. Si, un poco... pero luego de estrellar la computadora muchas veces lo vas logrando. Hay informacion de esto en Internet, google: "Programing parallel port". Salu2.


----------

