Documentos de Académico
Documentos de Profesional
Documentos de Cultura
La función indica el envío de bytes por el puerto serial. Esta función indica como es el proceso de
envio de 1byte (8bits) a través del puerto serial. Se declara una variable b (byte) y el i (como bit)
por eso observara en la condición del for (i=0; i<8; i++) indicando la cantidad de bits que hay en un
byte (8 bits), en este caso el proceso se dará por los encendidos de led’s con un retardo indicado
en ms.
Los bytes se transmiten bit a bit
Se transmite un bit de comienzo (start bit), los bits de información y un bit de parada (stop
bit) que indica que el dato se ha transmitido con éxito.
Se puede detectar errores de un solo bit, mediante la paridad.
2. Escriba el código en C para enviar un byte por el puerto serie.
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <iostream>
#include <string.h>
#include <windows.h>
using namespace std;
int main()
{
HANDLE h; /* handler, sera el descriptor del puerto */
DCB dcb; /* estructura de configuracion */
DWORD dwEventMask; /* mascara de eventos */
/* Configuramos el puerto */
dcb.BaudRate = 9600; // 9600 baudios
dcb.ByteSize = 8; // 8 bits
dcb.Parity = NOPARITY; // Sin paridad
dcb.StopBits = ONESTOPBIT; // Un bit de parada
dcb.fBinary = TRUE;
dcb.fParity = TRUE;
/* Establecemos la nueva configuracion */
if(!SetCommState(h, &dcb))
{
/* Error al configurar el puerto */
}
//Función para enviar bytes por el puerto serie
If(!WriteFile(h, &a/*puntero al buffer*/, 1/* 1 byte*/, &n, NULL))
{
/* Error al enviar */
}
if(!WriteFile(h, &Tx/*puntero al buffer*/, 10/* 1 byte*/, &n, NULL))
{
/* Error al enviar */
}
int i;
b=1;
for (i=0; i<8; i++)
{
b=b*2;
if(!WriteFile(h, &b/*puntero al buffer*/, 1/* 1 byte*/, &n, NULL))
{
/* Error al enviar */
//Delay ms
}
}
return 0;
}
3. Escriba el código para enviar una cadena de caracteres por el puerto serie.
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <iostream>
#include <string.h>
#include <windows.h>
using namespace std;
int main()
{
HANDLE h; /* handler, será el descriptor del puerto */
DCB dcb; /* estructura de configuración */
DWORD dwEventMask; /* mascara de eventos */
/* abrimos el puerto */
//Abrir el puerto COM
h=CreateFile("COM10",GENERIC_READ|
GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
if(h == INVALID_HANDLE_VALUE)
{
/* ocurrio un error al intentar abrir el puerto */
}
/* Configuramos el puerto */
dcb.BaudRate = 9600; // 9600 baudios
dcb.ByteSize = 8; // 8 bits
dcb.Parity = NOPARITY; // Sin paridad
dcb.StopBits = ONESTOPBIT; // Un bit de parada
dcb.fBinary = TRUE;
dcb.fParity = TRUE;
int i;
b=1;
for (i=0; i<8; i++)
{
b=b*2;
if(!WriteFile(h, &b/*puntero al buffer*/, 1/* 1 byte*/, &n, NULL))
{
/* Error al enviar */
//Delay ms
}
}
return 0;
}
4. Dibuje el diagrama de bloques de cómo se realiza la comunicación serial
entre la PC y un dispositivo que tenga el protocolo RS232.
Para conectar el PC a un microcontrolador por el puerto serie se utilizan las señales TXD,
RXD y GND. El PC utiliza la norma RS232, por lo que los niveles de tensión de las patillas
entán comprendidos entre +15 y -15 voltios. Los microcontroladores normalmente trabajan
con niveles TTL (0-5v). Es necesario por tanto intercalar un circuito que adapte los
niveles:
5. Dibuje la trama bit a bit para la transmitir lo siguiente: ‘H’, ‘O’, ‘L’, ‘A’,
indicando la configuración usada.
0 1 0 0 1 0 0 0 0 1
Bit start 7bits de data bit parity bit stop
0 1 0 0 1 1 1 1 0 1
Bit start 7bits de data bit parity bit stop
0 1 0 0 1 1 0 0 0 1
Bit start 7bits de data bit parity bit stop
0 1 0 0 0 0 0 1 0 1
Bit start 7bits de data bit parity bit stop