Transmisión de Datos Práctica 4
Enviado por wirevive • 11 de Noviembre de 2016 • Práctica o problema • 1.607 Palabras (7 Páginas) • 222 Visitas
[pic 1][pic 2]
Instituto Politécnico Nacional
Unidad Profesional Interdisciplinaria en Ingeniería y Tecnologías Avanzadas
Transmisión de Datos
Práctica 4
Chequeo de paridad
Sensor de temperatura
ADC0804 y PIC a PC con RS-232
Viveros Villaseñor Bryan
Objetivo: Aterrizar el concepto del algoritmo de chequeo par simple implementando la detección de error en un sistema real de comunicaciones.
Desarrollo:
Programación del PIC
Instrucción: Contará uno o ceros y agregará 0 o 1 según su convención. Simular Bits Erróneos.
Volví a utilizar el IDE mikroBasic Pro for PIC
Para simular el error usé un dipswtich para seleccionar exactamente la posición del bit erroneo.
SYMBOL ADC = PORTB ‘Lo recibido del ACD está en el puerto B
SYMBOL err = PORTA ‘El eror agregado por el DipSwitch en el Puerto A
Procedimiento de lectura (y conteo de bits erróneos)
SUB PROCEDURE LEER()’Procedimiento para LEER la información mandada por ADC
dim uarttxt as string[16] ‘y enviar al lcd y al módulo UART
dim impar as byte ‘Variable de conteo de 1s
dim i as integer ‘variable para for
dim impb as bit ‘bit de paridad
DIM STR AS STRING[9] ‘Cadena de bits mostrada en el LCD
dim uarb as byte ‘Byte enviado al UART
delay_ms(300) ‘Pausa de 300ms
BYTETOSTR(ADC,TEMPBYTE) ‘Convierte el valor del byte recibido a texto
ltrim(tempbyte) ‘Recorta el byte extra
LCD_OUT(1,1,TEMPBYTE) ‘Muestra la temperatura muestreada en la LCD
impar=0 ‘inicia el conteo de unos en cero
uarb=ADC XOR err ‘Se suma el valor del del sensor al error
for i=0 to 6
impar=impar+ADC.i‘Se suman los 1 provenientes de la transmisión en paralelo
if uarb.i then STR[i]=char(49) else STR[i]=char(48) end if
‘Se ponen 1s o 0s en la cadena que se vera en el display
next i
uarb.7=impar mod 2 ‘en el bit más significativo del ADC se pone la paridad
if uarb.7 then STR[7]=char(49) else STR[7]=char(48) end if
‘Se agrega de igual manera a la cadena de texto
str[8]=CHR(0) ‘Se agrega fin de línea
LCD_OUT(2,1,str) ‘Se muestra la el byte enviado por el uart
IF (UART1_TX_IDLE=1) THEN ‘Si está listo uarb envía el byte
UART1_Write(uarb)
END IF
END SUB
Programación PC
Instrucción: Cacha los datos y cuenta los unos para determinar si es erróneo o no. En cualquier lenguaje de programación.
Utilicé Java y la librería Giovynet para la comunicación serial
public static void main (String[] arg) throws Exception{
SerialPort serialPort = new SerialPort();//Se crea un puerto serial
List
if(lstFreeSerialPort.size()>0){//Si hay alguno disponible
Parameters parameters = new Parameters();//Crea objeto de parametros
parameters.setPort("COM8");//Seleccionamos el puerto con el que queremos trabajar
parameters.setBaudRate(Baud._9600);//assigns baud rate
parameters.setByteSize("8");// Seleccionamos 8 bits para manejar todos
parameters.setParity("N");// y Sin chequeo de paridad para contralos nosotros mismos
Com com = new Com(parameters);// Con los parametros se crea un nuevo objeto de comunicaciones
...