Está en la página 1de 10

Universidad Nacional Autónoma

de México

Facultad de Ingeniería

División de Ingeniería Mecánica e Industrial

Técnicas de programación

Práctica 19: Comunicación serial

Profesor: Jorge Armando Rodríguez Vera

Grupo 05

Integrantes:
● Galarza Martinez Abel
● Gutiérrez Villanueva Perla Citlallin
● Gaona Amezcua Aarón Ernesto

Fecha entrega:Noviembre 17 , 2018


1. Seguridad en la ejecución

Peligro o Fuente de Riesgo asociado


energía

1 Tensión alterna Electrocución

2. Objetivos de aprendizaje

I. Objetivo general: Realizar una comunicación serial entre dos


dispositivos.

II. Objetivos específicos:

v Implementar comunicación serial con cualquier cliente.


v Manipular cadena de caracteres y adquisición de variables.

3. Introducción

Un puerto serial permite el envío de datos, uno detrás de otro, entre dos
dispositivos interconectados. Ejemplos de comunicación serial incluyen los
protocolos: RS-232, USB y Bluetooth, por mencionar algunos.

Típicamente, la comunicación serial se utiliza para transmitir datos en formato


ASCII. Para realizar la comunicación se utilizan 3 líneas de transmisión: (1)
Tierra (o referencia), (2) Transmitir, (3) Recibir. Debido a que la transmisión
es asíncrona, es posible enviar datos por una línea mientras se reciben datos
por otra.

Las características más importantes de la comunicación serial son la


velocidad de transmisión, los bits de datos, los bits de parada, y la paridad.
Para que dos puertos se puedan comunicar, es necesario que dichas
características sean iguales en ambos.

a) Bits de datos. Se refiere a la cantidad de bits en la transmisión.


Cuando la computadora envía un paquete de información, el
tamaño de ese paquete no necesariamente será de 8 bits. Las
cantidades más comunes de bits por paquete son 5, 7 y 8 bits. El
número de bits que se envía depende del tipo de información que
se transfiere. Por ejemplo, el ASCII estándar tiene un rango de 0 a
127, es decir, utiliza 7 bits; para ASCII extendido es de 0 a 255, lo
que utiliza 8 bits. Si el tipo de datos que se está transfiriendo es
texto simple (ASCII estándar), entonces es suficiente con

utilizar 7 bits por paquete para la comunicación. Un paquete se refiere


a una transferencia de byte, incluyendo los bits de inicio/parada, bits de
datos, y paridad. Debido a que el número actual de bits depende del
protocolo que se seleccione, el término paquete se puede usar para
referirse a todos los casos.

a) Bits de parada. Usado para indicar el fin de la comunicación de


un solo paquete. Los valores típicos son 1 o 2 bits. Debido a la
manera como se transfiere la información a través de las líneas de
comunicación y que cada dispositivo tiene su propio reloj, es
posible que los dos dispositivos no estén sincronizados. Por lo
tanto, los bits de parada no sólo indican el fin de la transmisión sino
además dan un margen de tolerancia para esa diferencia de los
relojes. Mientras más bits de parada se usen, mayor será la
tolerancia a la sincronía de los relojes, sin embargo la transmisión
será más lenta.

b) Paridad. Es una forma sencilla de verificar si hay errores en la


transmisión serial. Existen cuatro tipos de paridad: par, impar,
marcada y espaciada. La opción de no usar paridad alguna también
está disponible.

Ejemplo de envío de datos en comunicación serial

4. Equipo y Material
Computadora

Dispositivo con capacidad de comunicación serial

5. Desarrollo

I. Actividad 1
Captura de secuencia de datos
Conectarse a un dispositivo mediante un puerto de comunicación serial y
capturar una secuencia de datos, desplegándose en un programa con una caja
de texto.
///////////////////////////////////////////////////////Programa de Arduino/////////////////////////////////////////

const int sensor =1;


int temp;

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
// put your main code here, to run repeatedly:
temp=(analogRead(sensor)*-500)/1023;
Serial.println("Temperatura \n:");
Serial.println(temp);
delay(1000);
}

//////////////////////////////////////////////////////Form 1, Conectar//////////////////////////////////////////////////
using System;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;

namespace Practica_19
{
public partial class Form1 : Form
{
SerialPort puertoserial;

public Form1()
{
InitializeComponent();
puertoserial = new SerialPort();
puertoserial.BaudRate = 9600;
puertoserial.PortName = "COM5";
selecciona();
}
public void selecciona()
{
string[] puertos = SerialPort.GetPortNames();
Array.Sort(puertos);
tmbsPuert.Items.AddRange(puertos);
}

private void btnConectar_Click(object sender, EventArgs e)


{
try
{
puertoserial.Open();
MessageBox.Show("Coneccion Exitosa");
}
catch (IOException error)
{
MessageBox.Show("Error: " + error.Message);
}
}

private void button1_Click(object sender, EventArgs e)


{
try
{

puertoserial.PortName = tmbsPuert.SelectedItem.ToString();

}
catch (IOException error)
{
MessageBox.Show("Error: " + error.Message);
}
}

private void button2_Click(object sender, EventArgs e)


{
FormTemperatura formtemperatura = new FormTemperatura();
formtemperatura.Show();

}
}
}

Pantallazos de salida:
II. Actividad 2

Manejo de Información
Desarrollar un programa que recoja una cadena de valores (al menos diez)
separados por uno o varios caracteres especiales. Realizar la separación de valores
y manipular con ellos algún control en una interfaz gráfica.
////////////////////////////////////////////////////////// temperatura//////////////////////////////////////////////////////

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.IO;
using System.IO.Ports;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace ControlEstacionamiento
{
public partial class MonitorTemperatura : Form
{

SerialPort serialPort;
byte temperatura;
int tiempo;

public MonitorTemperatura(SerialPort serialPort, ControlGeneral


controlGeneral)
{
InitializeComponent();
this.serialPort = serialPort;
this.MdiParent = controlGeneral;
controlGeneral.guardarToolStripMenuItem.Click += new
System.EventHandler(this.guardarToolStripMenuItem_Click);
}
private void guardarToolStripMenuItem_Click(object sender, EventArgs e)
{
}
private void timerTemperatura_Tick(object sender, EventArgs e)
{
temperatura =(byte)serialPort.ReadByte();
chtGrafica.Series[0].Points.AddXY(tiempo++, temperatura);

private void graficarToolStripMenuItem_Click(object sender, EventArgs e)


{
timerTemperatura.Start();
}

private void detenerToolStripMenuItem_Click(object sender, EventArgs e)


{
timerTemperatura.Stop();
}

private void chtGrafica_Click(object sender, EventArgs e)


{

}
}
}

6. Conclusiones

● Galarza Martinez Abel

Se aprendió el uso de los puertos seriales de la computadora y el cómo conectarse


a estos y recibir datos e interpretarlos, lo anterior es de importancia dado que se
pudieron controlar puertos seriales y flujo de datos desde un programa. Asimismo se
presentaron problemas en la impresión de bytes en un cuadro de texto y manejar
estos datos,debido posiblemente a imperfecciones en el sensor con el que se
hicieron las pruebas
● Gutiérrez Villanueva Perla Citlallin
Por medio de esta práctica pude comprender mejor cómo se realiza una
conexión con un microcontrolador desde un programa de interfaz C#, además
de recabar datos desde un sensor térmico.

● Gaona Amezcua Aarón Ernesto


7. Bibliografía
v CEBALLOS SIERRA, Francisco Javier. Microsoft C#. Curso de programación.
México, Alfaomega, 2007
v DEITEL, Harvey y Deitel, PAUL. C# Cómo programar. España,
Pearson, 2007
v LÓPEZ ROMÁN, Leobardo. Metodología de la programación orientada a
objetos. México, Alfaomega, 2007