Programación Específica > Matlab

 Inicio De Proyecto

<< < (2/4) > >>

allisap:
Saludos :)

En el hiperterminal no lo puedes hacer, ya que transforma los valores que recibe desde el serial a caracteres ascii,

en matlab creo que lo puedes hacer con fread, checalo en la ayuda

Carlitros82:
Ya he conseguido introducir el paquete de datos en un array con la funcion fread. Pero no se como identificar el byte de cabecera para que lo guarde desde ahí. Y tampoco se como se haría la comprobación con el cheksum. Tampoco se como se juntan dos bytes, es decir tengo msb, lsb y los tengo que unir (se que arriba alguien me dijo que con un for pero no se hacerlo  :( ). Alguna idea? Gracias.

fa61an:
Hoy se me dio por revisar los mensajes en donde he contestado y como me ha pasado en otros temas, no recibí notificación de nuevas respuestas espero que esto se arregle pronto..

Para lo cheksum, depende de que método se realice en el PLC, conozco uno que es hacer la función lógica Xor de cada byte recibido y luego comparar, hay otro que es sumar y luego invertir los bits.... hay varios métodos como te dijo, pero por lo general esos métodos implica realizar una función lógica digital, recomedaria que buscaras el protocolo que utiliza el dispositivo..

En matlab no recuerdo como hacerlo pero debe haber alguna función de concatenar bits... se hacerlo en Labview pero no en matlab...

Buscare a ver si encuentro como hacerla en Matlab

Geo:
En MATLAB concatenas así:


--- Código: Text --- c = [ MSB LSB ]  Lo que tienes que verificar es el orden de los bits en cada byte, si el bit más significativo lo tienes a la derecha o a la izquierda.

Si deseas invertir un vector, lo puedes hacer así:

--- Código: Text --- m = [ 1 2 3 4 ]invertida = m(4:-1:1)  
Suerte.

fa61an:

--- Citar ---  En MATLAB concatenas así: c = [ MSB LSB ]
--- Fin de la cita ---

NO me convence pues esa linea lo que hace es crear un arreglo o array con dos posiciones, pues si por ejemplo escribes esto c(1) te dará el valor del MSB, o si escribes c(2) te dará el LSB eso quiere decir que no se concateno......... si que se creo un array con dos posiciones no es lo mismo que concatenar... la verdad investigue y no encontre como hacerlo en matlab, se hacerlo en LabVIEW, la verdad es que no me gusta como se manajas los tipos de datos en matlab. no se por ejemplo como hacer para crear una variable int de 8 bits, o por ejemplo crear una Char 8 bits..

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

[*] Página Anterior

Ir a la versión completa