Вы находитесь на странице: 1из 14

PROGRAMACIN AVANZADA

Puerto Serie
Christian Piedra Sebastin Romn Xavier Zeas

03/02/2012

PROGRAMACIN AVANZADA

Tabla de contenido
INVESTIGACIN ................................................................................................................................... 2 1. El Puerto Serie ...........................................................................Error! Bookmark not defined. 1.1. 1.2. 2. Introduccion ......................................................................Error! Bookmark not defined. Ventajas y Desventajas......................................................Error! Bookmark not defined.

El Estandar RS 232 .....................................................................Error! Bookmark not defined. 2.1. 2.2. 2.3. Definicin ........................................................................................................................ 3 Esquemas del Estandar ................................................................................................... 3 Pasos para construir un cable Serie RS 232 .................................................................... 5

3.

Programacin Puerto Serie ..................................................................................................... 6 3.1. 3.2. Librera IO Port ..................................................................Error! Bookmark not defined. Funciones Principales ........................................................Error! Bookmark not defined.

DOCUMENTACIN DEL PROGRAMA ................................................................................................... 7 1. Anlisis y Diseo del HyperTerminal ....................................................................................... 7 1.1. 1.2. 1.3. 2. Version y caracteristicas de las computadoras ............................................................... 8 Definicion de los parametros ............................................Error! Bookmark not defined. Utilizacion de las funciones ...............................................Error! Bookmark not defined.

Implementacin del HyperTerminal ....................................................................................... 9 2.1. Pantallas de implementacin y operacin del hyperterminal ........ Error! Bookmark not defined.

PROBLEMAS ENCONTRADOS ............................................................................................................ 13 BIBLIOGRAFA .................................................................................................................................... 13

PROGRAMACIN AVANZADA

HYPERTERMINAL PUERTO SERIE TRABAJO SUPLETORIO PROGRAMACIN AVANZADA INVESTIGACIN


1. El Puerto Serie 1.1. Introduccin Los puertos seriales fueron las primeras interfaces que permitieron que los equipos intercambien informacin con el "mundo exterior". El trmino serial se refiere a los datos enviados mediante un solo hilo: los bits se envan uno detrs del otro (consulte la seccin sobre transmisin de datos para conocer los modos de transmisin). Originalmente, los puertos seriales slo podan enviar datos, no recibir, por lo que se desarrollaron puertos bidireccionales. Por lo tanto, los puertos seriales bidireccionales necesitan dos hilos para que la comunicacin pueda efectuarse. La comunicacin serial se lleva a cabo asincrnicamente, es decir que no es necesaria una seal de sincronizacin: los datos pueden enviarse en intervalos aleatorios. A su vez, el perifrico debe poder distinguir los caracteres entre la sucesin de bits que se est enviando. sta es la razn por la cual en este tipo de transmisin, cada carcter se encuentra precedido por un bit de ARRANQUE y seguido por un bit de PARADA. Estos bits de control, necesarios para la transmisin serial, desperdician un 20% del ancho de banda (cada 10 bits enviados, 8 se utilizan para cifrar el carcter y 2 para la recepcin). Los puertos seriales, por lo general, estn integrados a la placa madre, motivo por el cual los conectores que se hallan detrs de la carcasa y se encuentran conectados a la placa madre mediante un cable, pueden utilizarse para conectar un elemento exterior. Generalmente, los conectores seriales tienen 9 25 clavijas y tienen la siguiente forma (conectores DB9 y DB25 respectivamente): Conector DB9 y Conector DB25.

1.2. Ventajas y Desventajas Ventajas: Por el Puerto Serial se puede intercambiar cualquier tipo de informacin. Tiene la capacidad de intercambiar informacin de manera fcil hacia dispositivos de salida electrnicos como displays, motores, brazos robticos, etc.

PROGRAMACIN AVANZADA El hardware es barato y muy accesible a nuestras manos, la mayora de computadoras de la dcada anterior contienen al menos un puerto serial, y sus micro controladores son muy variados. Tienen muchas caractersticas muy utilizables y modificables, como el bit de parada, bit de paridad, etc. Que pueden ser de mucha utilidad. Tambin los puertos seriales pueden alcanzar grandes distancias, como el estndar RS 232 cuya longitud se extiende hasta los 130 pies. Tambin existen otras ventajas a comparacin de otro puerto utilizados en la actualidad. Desventajas Uno de los defectos de los puertos serie iniciales era su lentitud en comparacin con los puertos paralelos. Muchos de los puertos series tienen que convertir la transmisin serial del cable a la transmisin paralela del CPU. Posee un poco ancho de banda, por ejemplo el estndar RS 232 soporta 22 kbps. Windows no garantiza un rendimiento en tiempo real de los puertos series, para enviar o recibir informacin muchas veces se tendr que esperar a que el S.O realice otras tareas.

2. EL ESTANDAR RS 232 2.1. Definicin Es estndar apropiado para comunicaciones bsicas para las comunicaciones entre PC y las comunicaciones PC micro controlador, puede alcanzar distancias de 80 a 130 pies dependiendo de la tasa de bits, el tipo cable. Se puede transmitir desde los 300 baudios (1 Baudio=1 bit/seg) hasta 115,200 Baudios, y la velocidad es de 20kbits por segundo para una distancia mxima de 50 pies. Las especificaciones Elctricas indican un "Space" (0 lgico): +3 y +25 V, un Mark" (1 lgico): -3 y -25 V , y la regin entre -3v y +3v no esta definida. 2.2. Esquemas del estndar El conector viene en dos tamaos: de 25 pines y 9 pines como se muestra en la figura, y sus respectivas lneas se especifican en la tabla siguiente a la figura.

PROGRAMACIN AVANZADA

Las lneas que representan cada conector son: El DTE: Data Terminal Equipment , extremo Terminal del enlace y viene en el Puerto Computador El DCE: Data Comunications Equipment extremo modem del enlace y viene en el Modem Las funciones son nombradas de acuerdo a la perspectiva del DTE TX es una salida en el DTE y una entrada en el DCE, en cambio RX es una entrada en el DTE y una salida en el DCE. Las otras Nueve Lneas se especifican a continuacin: TX y RX: sirve para el envi y recepcin de datos, SG: Signal Ground, Las dems lneas se utilizan para el control de flujo (Hardware). En el CTS y RTS, el DCE activa CTS cuando esta listo para recibir un dato y el DTE activa RTS cuando esta listo para enviar un dato. Las lneas DTR y DST se utilizan

PROGRAMACIN AVANZADA para saber si el enlace esta vivo (funcionando), el RI es el Ring Indicator: indica una seal de timbre, el CD detecta la presencia de una portadora Para el control Flujo se utiliza Software Xon / Xoff , el Xoff es un caracter ASCII 19 y sirve para detener envi de datos, el Xon es un caracter ASCII 17 y sirve para iniciar el envi de datos . 2.3. Pasos para construir un cable serie RS 232.

Primero conseguir los conectores serial tipo hembra, como la figura.

Tambin conseguir el cable multipar para las conexiones, y la respectiva soldadora o cautn y el estao. Despus de conseguir todos los elementos necesarios proseguimos a unir los cables con los respectivos pines segn el tipo de cable que queramos.

o En la figura se especifican los diferentes tipos de cable que podemos armar segn el orden.

PROGRAMACIN AVANZADA Para nuestro caso armamos un cable de transmisin de datos, pero como nos falto un alambre ms multipar omitimos la lnea 9 que es para el uso de el reloj, para nuestro caso irrelevante.

3. Programacin Puerto Serie 3.1. Librera IO Port La librera IO Port del lenguaje C es la librera por defecto de todos los puertos del computador que puedan ser programados para cumplir ciertas funciones, dentro de la librera IO.Port se encuentra la clase SerialPort la cual contiene todas las funciones para el manejo del puerto serial desde el lenguaje de programacin C#. Para la invocacin de esta librera y la declaracin de un objeto para que maneje el puerto serial se escribe. using System.IO.Ports; ---para la importacin de la libreria ---para la declaracion del objeto

static SerialPort sport = new SerialPort(); 3.2. Funciones principales.

Antes de explicar cualquier funcin de la clase SerialPort es importante recalcar que se necesitan especificar todos los parmetros que se utilizaran en el puerto con la siguiente sintaxis: sport.PortName = this.PortName; sport.BaudRate = this.BaudRate; sport.DataBits = this.DataBits; sport.ReadTimeout = this.ReadTimeout; sport.WriteTimeout = this.WriteTimeout; sport.Handshake = System.IO.Ports.Handshake.None; sport.Encoding = System.Text.Encoding.UTF8;//.GetEncoding(936);//System.Text.SBCSCodePageEncodin g sport.ReadBufferSize = 104857600; sport.WriteBufferSize = 104857600; Una vez ya configurados los parmetros del Puerto se procede a iniciar los servicios abriendo el puerto con la funcin sport.Open();

PROGRAMACIN AVANZADA Cuando el puerto esta habilitado se pueden manejar datos y archivos con las siguientes funciones: sport.ReadByte() puerto --para leer los bytes que se estn recibiendo en ese momento por el

sport.WriteLine("0"); --para escribir en el puerto la lnea de bytes en este caso tipo string escribimos el carcter 0 sport.Write(by,0,tam); --esta funcion sirve para escribir en el puerto bytes que sern leidos por el receptor segn el tamao sport.Dispose(); --esta funcion nos ayuda a cerrar el puerto

En la siguiente tabla se muestran algunas funciones que tambin maneja la clase SerialPort.

DOCUMENTACIN DEL CLSTER


1. Anlisis y Diseo del Hyperterminal Nuestro programa primera contendr un cuadro de dialogo principal de logeo para recibir el nombre del usuario que este en la terminal despus aparecer una aplicacin que contendr una ventana de chat, un cuadro de texto para escribir el mensaje que queramos enviar con su respectivo botn y un botn mas para adjuntar archivos y enviarlos por el puerto serie, todo esto como muestra la figura. El programa contendr un hilo que receptara los bytes de informacin y un parmetro que indicara si es un texto o un archivo.

PROGRAMACIN AVANZADA

1.1. Versin y caractersticas de las computadoras. Es evidente que se necesitan 2 computadoras con puerto serial macho, con sistema operativo Windows XP de preferencia Servi Pack 3, que contengan instalado .NET y que tengan C# visual estudio en nuestro caso 2005, de preferencia tambin que tengan 500 de RAM. 1.2. Definicin de los parmetros Para poder utilizar el puerto serie de las computadoras definimos los siguientes parametros: public int BaudRate = 115200; public int DataBits = 8; public int ReadTimeout = 2000000; public int WriteTimeout = 2000000; public string PortName = "COM1"; public string Handshake = ""; public static string user = "user"; public string DataReceived = ""; public string sParity = "none"; public string nombreArchivo = ""; public int iStopBits = 1;

PROGRAMACIN AVANZADA static bool estado = true; public int num = 0; sport.ReadBufferSize = 104857600; sport.WriteBufferSize = 104857600; 1.3. Utilizacin de las funciones Se utilizara las funciones WriteLine como Write para el envio de archivos o texto y las funciones Read como ReadLine para la recepcin de datos, tambin para abrir y cerrar el puerto las funciones open y dispose respectivamente. 2. Implementacin del Hyperterminal Ya para la implementacin del Hyperterminal utilizamos tambien la librera Threading para la implementacin del hilo mediante el objeto Thread hiloLectura = new Thread(leer), tambien se implementa las banderas necesarias para la utilizacin de la lectura de un archivo o texto, utilizando todas las funciones mencionadas anteriormente tenemos que la funcin leer queda:
while (estado) { try { string bandera = sport.ReadLine(); //int conter = 0; if (bandera.Equals("0")) { string data = sport.ReadLine(); appendtexto(data); } else { try{ if (bandera.Equals("1")) { String nombre = sport.ReadLine(); String tama = sport.ReadLine(); appendtexto(user + ": Recibiendo archivo......"); int tam = Convert.ToInt32(tama); byte[] by = new byte[tam]; //Char[] ch = new Char[1]; for (int i = 0; i < tam; i++) { by[i] = (byte)sport.ReadByte(); } DialogResult result = MessageBox.Show("DESEA ACEPTARLO?", "ARCHIVO RECIBIDO", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { SaveFileDialog svf = new SaveFileDialog(); svf.FileName = nombre; svf.ShowDialog(); FileStream destino = new FileStream(svf.FileName, FileMode.OpenOrCreate, FileAccess.ReadWrite); destino.Write(by, 0, tam);

PROGRAMACIN AVANZADA
destino.Close(); sport.WriteLine("0"); sport.WriteLine(user+": El archivo fue receptado exitosamente"); } else { sport.WriteLine("0"); sport.WriteLine(user + ": El archivo fue rechasado"); } } } catch (Exception) { Console.WriteLine(user + ": Error cargando el archivo"); } } } catch (TimeoutException) { } }

Mientras que para el envi de datos o texto quedara:


private void btnenviarmensaje_Click(object sender, EventArgs e) { try { String mensaje = user+": "+txtenviarmensaje.Text; sport.WriteLine("0"); sport.WriteLine(mensaje); txtenviarmensaje.Text = ""; appendtexto(mensaje); } catch (Exception) { appendtexto(user + ": Error al enviar elmensaje"); } } private void btnenviararchivo_Click(object sender, EventArgs e) { try { appendtexto(user + ": Enviando archivo por favor espere...."); OpenFileDialog ofd = new OpenFileDialog(); ofd.ShowDialog(); String[] str = ofd.FileName.Split('\\'); String nombre = str[str.Length - 1]; FileStream archivo = new FileStream(ofd.FileName,FileMode.Open,FileAccess.Read); //StreamReader lector = new StreamReader(archivo); BinaryReader reader = new BinaryReader(archivo,Encoding.UTF8); int tam=(int)archivo.Length; //Char [] ads=new Char[tam]; //lector.Read(ads, 0, tam); byte[] by = new byte[tam]; reader.Read(by, 0,tam); archivo.Close(); //lector.Close(); sport.WriteLine("1"); sport.WriteLine(nombre); sport.WriteLine(tam.ToString()); sport.Write(by,0,tam); appendtexto(user + ": Archivo enviado con exito " + DateTime.Now.Date); //MessageBox.Show(Name+": ARCHIVO ENVIADO CON EXITO "+DateTime.Now.Date); } catch(Exception){ appendtexto(user + ": Error enviando el archivo"); } }

PROGRAMACIN AVANZADA

2.1. Pantallas de implementacin y operacin del Hyperterminal. Pantalla inicial:

Pantalla chateo o comunicacin de terminales:

Pantalla adjuntando archivo:

PROGRAMACIN AVANZADA Pantalla recibiendo archivo y guardandolo:

Pantalla Final:

PROGRAMACIN AVANZADA

PROBLEMAS ENCONTRADOS
Computadoras validas: ya que para la realizacin de esta practica se necesitaba una tecnologa posterior fue difcil encontrar computadoras validas para este trabajo con buenos rendimientos. Configuracin del cable: tambin se dificulto el proceso de realizacin del cable debido a que los pines no se acoplaban correctamente, lo que poda haber causado algn tipo de cortocircuito o interferencia. Envi de archivos: El mayor problema encontrado fue el envi de archivos, pues al inicio se poda enviar el archivo con el correcto tamao pero con caracteres o bytes nulos, lo que provocaban archivos daados, despus implementamos cdigos string, lo que provocaba la perdida de bytes, el problema se soluciono enviando byte por byte en un array de bytes, y nos dimos cuenta que el tiempo de recepcin era muy lento a comparacin de la velocidad del CPU lo que provocaba que se llenen los datos con campos nulos, es por eso que el problema se resolvi aumentando el tiempo de recepcin.

BIBLIOGRAFA
http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/8b97df03-6e7f-4b85-8fbcd208f82012bf http://www.dreamincode.net/forums/topic/35775-serial-port-communication-in-c%23/ http://es.scribd.com/ionela13/d/6162040-Serial-Port-Communication-in-C http://www.todopic.com.ar/foros/index.php?topic=29642.0 http://www.ovredal.com/_articulos/cable_rs232_nullmodem.htm Serial_Port_Complete_2nd_edition, Second Edition, Jan Axelson MANEJO DE FICHEROS http://www.elguille.info/colabora/NET2005/svalsse_leyendo_y_escribiendo_archivos.htm

Вам также может понравиться