Garmin 16" x Manuale Utente

Pagina di 36
190-00228-08 
GPS 16x Technical Specifications  
Rev. A 
Page 24 
Sample C Code 
DLE and ETX bytes: 
Sample C code to receive the two records should filter DLE and ETX bytes as described below: 
typedef enum 
    { 
    DAT, 
    DLE, 
    ETX 
    } rx_state_type; 
 
/* Declare and initialize static variables */ 
static char 
in_que[ 256 ]; 
static int 
in_que_ptr = 0; 
static rx_state_type rx_state = DAT; 
 



 
void add_to_que( char data ) 

#define DLE_BYTE 0x10 
#define ETX_BYTE 0x03 
 
if ( rx_state == DAT ) 
    { 
    if ( data == DLE_BYTE ) 
        { 
        rx_state = DLE; 
        } 
    else 
        { 
        in_que[ in_que_ptr++ ] = data; 
        } 
    } 
else if ( rx_state == DLE ) 
    { 
    if ( data == ETX_BYTE ) 
        { 
        rx_state = ETX; 
        } 
    else 
        { 
        rx_state = DAT; 
        in_que[ in_que_ptr++ ] = data; 
        } 
    } 
else if ( rx_state == ETX ) 
    { 
    if ( data == DLE_BYTE )  
        { 
        rx_state = DLE; 
        } 
    } 
 
if ( in_que_ptr > 255 ) 
    { 
    in_que_ptr = 0; 
    }