TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: otto_79 en 13 de Febrero de 2010, 22:17:36
-
Buenas, necesito ideas, necesito establecer comuniacion serial con un dispositivo, es sensillo envio una orden y recivo un valor. la respuesta seria (1,32021) esto serian 7 bytes, pero esto varia, pueden ser tres cuantro o 9, como puedo hacer para que Hserin "entienda donde comienza el array y donde termina?
desde ya agradezco cualquier idea.
-
Debes de establecer una plantilla de trama con una cabecera, seguido del número de bytes a recibir en ese momento.
Lee te este articulo a ver si te aclara algo:
http://www.4shared.com/file/5696260/d22cbdd8/crfrl_tx_rx_11.html
En el ejemplo la trama es de longitud fija, pero una vez que se entiende el funcionamiento la puedes hacer variable.
-
gracias por la data, voy a estudiarla.
entoces es factible trabajar con arrays variables? y de ser asi, es posible saber cuantos bytes envio por el puerto serie?
muchas gracias.
-
Lee el articulo primero. De todas formas puedes simplificar, enviando un byte de cabecera y otro de fin de trama, claro esta, siempre y cuando tengas bytes libres en la trama que no tengan significado, es decir que no utilices.
-
Buen dia a todos, les comento las novedades. mediante comunicacion serie estableci comunicacion con este dispositivo y el mismo envia la respuesta, pero al querer exibir los datos en el lcd me muestra cualquier caracter y no los que corresponde.
eh probado el dispositivo con la pc y la respuesta la veo en pantalla como corresponde, entonces creo que hay un error de configuracion en el pic, les dejo el codigo a ver si me tiran una idea . ah el dispositivo que trato de leer tiene una comuniaccion serial 9600 paridad par un bus de datos de 7 bits y uno de stop.
el comando a envviar seria asi: #1 AI 1 pregunta el estado del canal 1 y el dispositivo me responde por ejemplo : 1,16223 que es el valor de conversion de 16 bits el "1," identifica al dispositivo.
gracias y
saludos.
OPTIMISER_LEVEL = 6
Device 16F877
Declare XTAL 20
'configuracion del lcd
Declare LCD_LINES 2
Declare LCD_INTERFACE 8
Declare LCD_DTPIN PORTB.0
Declare LCD_RSPIN PORTD.6
Declare LCD_ENPIN PORTD.7
Declare ADIN_RES 10
Declare ADIN_TAD 2
Declare ADIN_STIME 100
'configuracion de la comunicacion serial
Declare HSERIAL_BAUD 9600
Declare HSERIAL_RCSTA %10000000
Declare HSERIAL_TXSTA %00100100
Declare HSERIAL_PARITY = EVEN
Dim cadena[10] As Byte ' Create a 10-byte array.
Dim Temp As Word
TRISA.0 = 1
TRISC = %10111111
Main:
DelayMS 500
HSerOut ["#1 AI 1",13]
HSerIn [wait(1,) Str cadena]
Print Str cadena
DelayMS 300
GoTo Main