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¿y como hago eso? es que de programar no tengo mucha idea.
en matalab deberia arreglarse si en lugar de leer del sensor caracteres lees los bytes como enteros
En MATLAB concatenas así: c = [ MSB LSB ]
Insisto eso no quiere decir que los concateno, ademas estamos hablado de bits recibidos por el puerto serial.Gracias por las contestaciones al final lo he conseguido
no es lo mismo
12 que equivale en binario --->00010010
a un array de dos posiciones [1 2] en el cual si representamos cada valor por 8 bits daria
1 ----> 00000001
2 ----> 00000010
Para nada es lo mismo, el echo que el promt de matlab los muestre como si estuvieran juntos para nada lo mismo decir el array [1 2], al numero 12.
El esta hablando que el PLC envía sus datos de a 16 bits y como el puerto serie como máximo maneja 9 bits entonces se le propuso que recibiera dos tramas de a 8 bits y luego los concatene y luego convertilo a double para tener su valor.
El ultimo ejemplo digamos, que el PLC va a enviar el numero 300 por el puerto serial , para hacer esto yo conozco una manera que seria enviar tres bytes de a 8 bits y luego verificar si todo se recibió bien con un byte de checksum.
Esos tres bytes estarían conformados por su equivalente en ASCII "podría ser" de cada cifra.
3 ----- > 0011 0011
0 ----- > 0011 0000
0 ----- > 0011 0000
Y luego se procedería a concatenar cada carácter OJO carácter no bytes, en una sola variable tipo String de valor "300" pero no es lo mismo "CONCATENAR" como tu lo dices en una matriz, de un tipo de dato Llamado Array de la siguiente manera [3 0 0], eso quiere decir que creaste una array con tres posición pero no una sola variable de valor 300
Parece interesante tu metodo lo probrare pero pues con el ejemplo del numero 300 yo lo habia pensado hacer de la siguiente maneraSi te entiendo, pero el problema es que lo que me manda el sensor son datos de 16 bits en complemento a 2. Y Matlab me lee 8 bits y me lo da en decimal. Por eso paso cada numero a binario y las uno para ahora intentar deshacer el complemento a 2 y saber que valor es realmente.
Primero se recibe el caracter '3' se conviente a entero y se multimplica por 100 ("en el caso de que solo se reciban 3 cifras") luesgo se recibe el caracter '0' se convierte a entero y se multiplica por 10....
espero me entiendas la idea