Autor Tema: ayuda, Hserin con un array variable  (Leído 2818 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado otto_79

  • PIC10
  • *
  • Mensajes: 17
ayuda, Hserin con un array variable
« 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.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: ayuda, Hserin con un array variable
« Respuesta #1 en: 14 de Febrero de 2010, 22:12:19 »
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.
Saludos desde Granada, España.

Desconectado otto_79

  • PIC10
  • *
  • Mensajes: 17
Re: ayuda, Hserin con un array variable
« Respuesta #2 en: 15 de Febrero de 2010, 09:07:09 »
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.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: ayuda, Hserin con un array variable
« Respuesta #3 en: 15 de Febrero de 2010, 10:08:16 »
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.
Saludos desde Granada, España.

Desconectado otto_79

  • PIC10
  • *
  • Mensajes: 17
Re: ayuda, Hserin con un array variable
« Respuesta #4 en: 17 de Febrero de 2010, 09:00:56 »
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
 
 
 


 

anything