Programación Específica > Matlab

 Inicio De Proyecto

(1/4) > >>

Carlitros82:
Buenas, he empezado el proyecto de fin de carrera en el que utilizo un sensor que conecta directamente al puerto serie del ordenador. Utilizo este programa que he realizado para MATLAB:

s = serial('COM4');
set(s, 'BaudRate', 38400)
set(s, 'DataBits', 8)
set(s, 'Parity','none')
set(s, 'StopBits', 1)
set(s, 'FlowControl', 'none')
fopen(s)
fprintf(s,'G')
out = fscanf(s)
fclose(s)
delete(s)
clear s

y por pantalla lo que me da es lo siguiente:

Warning: A timeout occurred before the Terminator was reached.
out = ÿ

Alguien sabe a que se debe ese warning.
Y otra pregunta que tengo es que este sensor envia un paquete de formato de datos codificado de la siguiente manera:

El sensor envia 22 bytes, el byte #0 es el de cabezera y lleva el valor 255.
el byte #1 es el MSB de la medida 1
el byte #2 es el LSB de la medida 1
el byte #3 es el MSB de la medida 2
el byte #4 es el LSB de la medida 2
......
.....
El ultimo bytye, el byte #21 es el checksum

¿Cual serie el programa para descodificarlo y poner las medidas en un array? Gracias de antemano por la ayuda porque mi nivel de programación es ridiculo, jejeje.

fa61an:
Yo guardaria la lectura 1 en una variable de 16 bits, ya que dices que el primer Byte es el MSB y el Byte que le sigue es el LSB entonces como el puerto serie puede manejar entre 8 y  9 bits pues lo almaceno y con un for los concateno ...


Nunca he usado el puerto Serie por el matlab,,, pero supongo que lo que te dice el que debes especificar el TIME Out,  ahi algunos dispositivos que necesitan este time out, cuando utilizan el puerto, recuerdo que hacde poco use un PLC que necesita 500mS de Timeout y antes de fijarle ese valor no me funcionaba, claro esta que la aplicacion la realice en LABVIEW y no en Matlab...

Me imagino que ya probaste la captura de datos con el Hyperterminal... !!! y si es asi podras caracterizar tu sensor..

Por ejemplo si fuera un sensor que entregue medida de distancia, entonces primero mirar la hojas de datos para obtener la curva del sensor , segundo fijar una distancia conocida y mirar que datos me entraga y con esto lo podras caracterizar.

Carlitros82:
Gracias por la respuesta, ya he entendido lo del timeout. Pero sigo sin poder descodificar los datos. El sensor me envia un paquete de datos y tanto en hyperterminal como en matlab solo veo caracteres extraños.

Al parecer lo que debo hacer es localizar el byte de cabecera y guardar los datos en arrays (que tampoco se como se hace) y a esos datos guardados en las arrays no se si tendre que dividirle o multiplicarle o algo asi por el checksum, estoy muy perdido.

Gracias de antemano.

allisap:
mira lo de los caracteres extraños probablemente sea poque el sensor entrega la medicion en forma binaria, y si la envias directamente al hiperterminal trabaja con valores de caracteres ascii, es decir si tu sensor te envia un 65 binario en el hiperterminal aparecera una A (la A es un 65 en ascii) y asi con todos los valores

en matalab deberia arreglarse si en lugar de leer del sensor caracteres lees los bytes como enteros

Carlitros82:

--- Cita de: "allisap" --- mira lo de los caracteres extraños probablemente sea poque el sensor entrega la medicion en forma binaria, y si la envias directamente al hiperterminal trabaja con valores de caracteres ascii, es decir si tu sensor te envia un 65 binario en el hiperterminal aparecera una A (la A es un 65 en ascii) y asi con todos los valores

en matalab deberia arreglarse si en lugar de leer del sensor caracteres lees los bytes como enteros
--- Fin de la cita ---
¿y como hago eso? es que de programar no tengo mucha idea.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa