You are on page 1of 3

///my code

/*
void receivedOP_CRC() { /// fourdigit crc

uint8_t i;
_INTEGER inCRC;

for(i=0; i<6; i++)


Disp[curDisp].stText[i] = conn.commBuff[3+i];
Disp[curDisp].stText[i] = 0;

inCRC.I = crc_kermit(Disp[curDisp].stText, 6);


Disp[curDisp].stText[6] = inCRC.C[0] + inCRC.C[1];
Disp[curDisp].stText[7] = conn.commBuff[1];
}
*/

u16 crc_kermit( char *input_str, uint16_t num_bytes ) {

u16 crc;
u16 low_byte;
u16 high_byte;
char *ptr;
u16 a;

if ( ! crc_tab_init )
init_crc_tab();

crc = CRC_START_KERMIT;
ptr = input_str;

if ( ptr != NULL )
for (a=0; a<num_bytes; a++) {

crc = (crc >> 8) ^ crc_tab[ (crc ^ (u16) *ptr++) & 0x00FF ];


}

low_byte = (crc & 0xff00) >> 8;


high_byte = (crc & 0x00ff) << 8;
crc = low_byte | high_byte;

return crc;
}

uint8_t sendOP_CRC(void) { // five digit crc

/*uint8_t buff[13];
uint8_t inBuff[2];

toHex(Disp[curDisp].stText[6], inBuff);
buff[0] = STX;
buff[1] = Disp[curDisp].dispID;
buff[2] = SELECTING;
buff[3] = '0';
buff[4] = '0';
buff[5] = inBuff[0];
buff[6] = inBuff[1];
buff[7] = '1';
buff[8] = '0';
buff[9] = '0';
buff[10] = '0';
buff[11] = ETX;
buff[12] = getCRC(buff, 11);
writeUSART1(buff, 11);*/
// return OP_CRC_OUT;
}

YOUR CODE CONVERTED IN MY CODE


//void calc_send_crc() new name

void receivedOP_CRC()
{

uint8_t buff[13];
uint8_t inBuff[2];

uint16_t POLYNIL = 0x8408;


uint16_t crc = 0;
int y,v;
for (y = 3; y < 9; y++)
{
// crc ^= rec_text[y];
crc ^= conn.commBuff[y]; ;
for (v = 0; v < 8; v++)
{
bool x = crc & 1;
crc >>= 1;
if (x)
{
crc ^= POLYNIL;
}
}
}
char lo = crc & 0xff;
char hi = (crc >> 8 ) & 0xff;
unsigned char result = (lo + hi) & 0xff;
unsigned char r1 = (result >> 4) & 0x0f;
unsigned char r2 = result & 0x0f;
if (r1 < 10)
{
r1 += '0';
}
else
{
r1 += '7';
}
if (r2 < 10)
{
r2 += '0';
}
else
{
r2 += '7';
}

//toHex(Disp[curDisp].stText[6], inBuff);
buff[0] = STX;
buff[1] = Disp[curDisp].dispID;
buff[2] = SELECTING;
buff[3] = '0';
buff[4] = '0';
buff[5] = r1;
buff[6] = r2;
buff[7] = '1';
buff[8] = '0';
buff[9] = '0';
buff[10] = '0';
buff[11] = ETX;
buff[12] = 0;
buff[12] = getCRC(buff, 12);

// writeUSART1(conn.commBuff, 9);
writeUSART1(buff,12 );
// return OP_CRC_OUT;
/*rec_text[0] = _STX_;
rec_text[1] = noz_no;
rec_text[2] = 'A';
rec_text[3] = '0';
rec_text[4] = '0';
rec_text[5] = r1;
rec_text[6] = r2;
rec_text[7] = '1';
rec_text[8] = '0';
rec_text[9] = '0';
rec_text[10] = '0';
rec_text[11] = _ETX_;
trn = 12;
char bcc_chk = calc_BCC();
send_ch1(_STX_);
send_ch1(noz_no);
send_ch1('A');
send_ch1('0');
send_ch1('0');
send_ch1(r1);
send_ch1(r2);
send_ch1('1');
send_ch1('0');
send_ch1('0');
send_ch1('0');
send_ch1(_ETX_);
send_ch1(bcc_chk);*/

You might also like