dle_byte 0x10 etx_byte 0x03
dle and etx bytes:
Software written to receive the two records should filter dle and etx bytes as described below:
typedef enum |
|
{ |
|
dat, |
|
dle, |
|
etx |
|
} rx_state_type; |
|
char | in_que[256]; |
int | in_que_ptr = 0; |
rx_state_type | rx_state = dat; |
void add_to_que( char data )
{
#define
#define
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;
}
}
31