LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

Create a function code for comparing data frame and response frame in CVI

Hi,

I'm new in CVI  i want to create a function that can compare between data frame and response frame and this my try any help please 

thank you 

0 Kudos
Message 1 of 3
(2,380 Views)

Hi Ahmedkochbati92,

 

Could you provide some more information on what you mean by data and response frame? Also, what data are you hoping to compare within them and what are you looking for in return?

 

Thanks,

 

ShaneK

Applications Engineering

0 Kudos
Message 2 of 3
(2,311 Views)

Hi, 

Thank you for the response 

 

i need to send this frame CAN :->88 55 0E 22 07 65 08 02 10 60 FF FF FF FF FF 16 and i verify if i get this frame  02,50,60,xx,xx,xx,xx,xx in response , so  this is the function that i write but i can't compare always .

this the whole code 

in the others functions i send frame without receiving  nothing after that i build a DLL to call in TestStand and it works properly .

 

int init_can (int Port_CAN)
{

int state=0;

strcpy(DEVICE,"COM6");

//TD=OpenComConfig(Port_CAN,DEVICE,57600, 2, 8, 1, 0, 0); //COM pour la passerelle CAN
TD=OpenComConfig(Port_CAN,DEVICE,9600, 2, 8, 1, 0, 0);
if(TD != 0)
{
printf ("port not open\n" );

goto END;
}

FlushInQ(Port_CAN);
FlushOutQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x06);
ComWrtByte(Port_CAN,0x21);
ComWrtByte(Port_CAN,0xC3);
ComWrtByte(Port_CAN,0x3A);
ComWrtByte(Port_CAN,0xFA);
ComWrtByte(Port_CAN,0xF9);
ComRd(Port_CAN,Reponse,5);


if(Reponse[3]==0x41)
{
printf (" INIT VITESSE CAN SUCCESS\n ");
state++;
Delay(1);
}

else
{

printf ( " ERROR CAN INIT VITESSE\n ");

CloseCom(Port_CAN);
goto END;
}
FlushInQ(Port_CAN);
FlushOutQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x05);
ComWrtByte(Port_CAN,0x20);
ComWrtByte(Port_CAN,0xFE);
ComWrtByte(Port_CAN,0x01);
ComWrtByte(Port_CAN,0x07);
ComRd(Port_CAN,Reponse,5);

if(Reponse[3]==0x46)
{
printf (" SYNCHRO RS232 SUCCESS\n ");
state++;
Delay(1);
}
else
{
printf ( " ERROR CAN SYNCHRO RS232\n ");
CloseCom(Port_CAN);
goto END;
}

CloseCom(Port_CAN);
OpenComConfig(Port_CAN, DEVICE, 57600, 2, 8, 1, 0, 0); // COM pour la passerelle CAN 115200
FlushInQ(Port_CAN);
//FlushOutQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x03);
ComWrtByte(Port_CAN,0x2B);
ComWrtByte(Port_CAN,0xF5);
ComRd(Port_CAN,Reponse,5);

if(Reponse[3]==0x46)
{
printf (" TEST RS232 SUCCESS\n ");
state++;
Delay(1);
}
else
{
printf ( " ERROR CAN TEST RS232\n ");
CloseCom(Port_CAN);
goto END;
}
// INIT REGISTER
FlushInQ(Port_CAN);
FlushOutQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x05);
ComWrtByte(Port_CAN,0x23);
ComWrtByte(Port_CAN,0xFF);
ComWrtByte(Port_CAN,0xFF);
ComWrtByte(Port_CAN,0xFB);
// RESET Can Reception Buffer
FlushInQ(Port_CAN);
FlushOutQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x03);
ComWrtByte(Port_CAN,0x2D);
ComWrtByte(Port_CAN,0xF3);
//Time maxi beetween 2 char is 200 ms ( on RS232 link)
FlushInQ(Port_CAN);
FlushOutQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x04);
ComWrtByte(Port_CAN,0x2E);
ComWrtByte(Port_CAN,0x14);
ComWrtByte(Port_CAN,0xE3);
// Can Message not acknowledge request
FlushInQ(Port_CAN);
FlushOutQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x03);
ComWrtByte(Port_CAN,0x29);
ComWrtByte(Port_CAN,0xF7);

if(state==3)
{
printf (" CAN INIT SUCCESS...PLEASE PRESS BSI ON\n");
}
else
{
printf ( "ERROR CAN INIT\n");

}


END:

return 0;
}


/******** Display ON screen Callback **************/

int Wake_up_Commandes_BSI_ON (int Port_CAN)
{



//CloseCom(Port_CAN);
//OpenComConfig(Port_CAN, DEVICE, 57600, 2, 8, 1, 0, 0); */ // COM pour la passerelle CAN 115200

FlushInQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x10);
ComWrtByte(Port_CAN,0x3B);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x36);
ComWrtByte(Port_CAN,0x08);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x0F);
ComWrtByte(Port_CAN,0x01);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x01);
ComWrtByte(Port_CAN,0x0A);
ComWrtByte(Port_CAN,0xCD);

return 1;
}


int Wake_up_Donnees_BSI_Lentes_ON (int Port_CAN)
{


//Wake up Donnees BSI Lentes ON
FlushInQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x10);
ComWrtByte(Port_CAN,0x3B);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0xF6);
ComWrtByte(Port_CAN,0x08);
ComWrtByte(Port_CAN,0x10);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x02);
ComWrtByte(Port_CAN,0x32);
ComWrtByte(Port_CAN,0x28);

Delay(1);

//printf ("GOOD BSI ON ");

return 2;

}



int Wake_up_BSI_INF_PROFILS_ON (int Port_CAN)

{

//Wake up BSI_INF_PROFILS ON
FlushInQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x10);
ComWrtByte(Port_CAN,0x0D);
ComWrtByte(Port_CAN,0x3B);
ComWrtByte(Port_CAN,0x02);
ComWrtByte(Port_CAN,0x60);
ComWrtByte(Port_CAN,0x05);
ComWrtByte(Port_CAN,0x80);
ComWrtByte(Port_CAN,0x04);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x03);
ComWrtByte(Port_CAN,0x32);
ComWrtByte(Port_CAN,0x39);
ComWrtByte(Port_CAN,0x0A);
ComWrtByte(Port_CAN,0xCD);
Delay(1);

return 3;

}
int Wake_up_DONNEES_BSI_LENTES_3_ON (int Port_CAN)
{

//Wake up DONNEES_BSI_LENTES_3 ON
FlushInQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x0D);
ComWrtByte(Port_CAN,0x3B);
ComWrtByte(Port_CAN,0x02);
ComWrtByte(Port_CAN,0x76);
ComWrtByte(Port_CAN,0x05);
ComWrtByte(Port_CAN,0x89);
ComWrtByte(Port_CAN,0x0B);
ComWrtByte(Port_CAN,0x1E);
ComWrtByte(Port_CAN,0x10);
ComWrtByte(Port_CAN,0x0F);
ComWrtByte(Port_CAN,0x04);
ComWrtByte(Port_CAN,0x64);
ComWrtByte(Port_CAN,0x79);
ComWrtByte(Port_CAN,0x02);
ComWrtByte(Port_CAN,0x32);
ComWrtByte(Port_CAN,0x28);
Delay(1);

return 4;

}

int Wake_up_Commandes_BSI_OFF (int Port_CAN)
{



//CloseCom(Port_CAN);
//OpenComConfig(Port_CAN, DEVICE, 57600, 2, 8, 1, 0, 0); */ // COM pour la passerelle CAN 115200

FlushInQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x10);
ComWrtByte(Port_CAN,0x3B);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x36);
ComWrtByte(Port_CAN,0x08);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x01);
ComWrtByte(Port_CAN,0x0A);
ComWrtByte(Port_CAN,0xC3);

return 5;
}


int Wake_up_Donnees_BSI_Lentes_OFF (int Port_CAN)
{


//Wake up Donnees BSI Lentes OFF
FlushInQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x10);
ComWrtByte(Port_CAN,0x3B);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0xF6);
ComWrtByte(Port_CAN,0x08);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x02);
ComWrtByte(Port_CAN,0x32);
ComWrtByte(Port_CAN,0x38);

Delay(1);

//printf ("GOOD BSI ON ");

return 6;

}



int Wake_up_BSI_INF_PROFILS_OFF (int Port_CAN)


{

//Wake up BSI_INF_PROFILS OFF
FlushInQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x0D);
ComWrtByte(Port_CAN,0x3B);
ComWrtByte(Port_CAN,0x02);
ComWrtByte(Port_CAN,0x60);
ComWrtByte(Port_CAN,0x05);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x03);
ComWrtByte(Port_CAN,0x32);
ComWrtByte(Port_CAN,0xBD);


Delay(1);

return 7;

}
int Wake_up_DONNEES_BSI_LENTES_3_OFF (int Port_CAN)
{

//Wake up DONNEES_BSI_LENTES_3 OFF
FlushInQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x0D);
ComWrtByte(Port_CAN,0x3B);
ComWrtByte(Port_CAN,0x02);
ComWrtByte(Port_CAN,0x76);
ComWrtByte(Port_CAN,0x05);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x04);
ComWrtByte(Port_CAN,0x64);
ComWrtByte(Port_CAN,0xFA);

Delay(1);


return 8;

}

int Commandes_BSI (int Port_CAN) {

//Commandes BSI


FlushInQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x10);
ComWrtByte(Port_CAN,0x3B);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x36);
ComWrtByte(Port_CAN,0x08);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x0F);
ComWrtByte(Port_CAN,0x01);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x00);
ComWrtByte(Port_CAN,0x01);
ComWrtByte(Port_CAN,0x0A);
ComWrtByte(Port_CAN,0xCC);



Delay(1);


return 9;

}


int Entrer_Mode_Diag (int Port_CAN )
{

 

FlushInQ(Port_CAN);
FlushOutQ(Port_CAN);
ComWrtByte(Port_CAN,0x88);
ComWrtByte(Port_CAN,0x55);
ComWrtByte(Port_CAN,0x0E);
ComWrtByte(Port_CAN,0x22);
ComWrtByte(Port_CAN,0x07);
ComWrtByte(Port_CAN,0x65);
ComWrtByte(Port_CAN,0x08);
ComWrtByte(Port_CAN,0x02);
ComWrtByte(Port_CAN,0x10);
ComWrtByte(Port_CAN,0x60);
ComWrtByte(Port_CAN,0xFF);
ComWrtByte(Port_CAN,0xFF);
ComWrtByte(Port_CAN,0xFF);
ComWrtByte(Port_CAN,0xFF);
ComWrtByte(Port_CAN,0xFF);
ComWrtByte(Port_CAN,0x16);
ComRd(Port_CAN,Reponse,10);


if( (Reponse[3]==0x02) &&( Reponse[4]==0x50)&&(Reponse[5]==0x60) )
{
printf (" ENTRER MODE DIAG VALIDE\n");

Delay(1);
}

else
{
printf (" ENTRER MODE DIAG NON VALIDE\n");
}

return 10;
}

 

Best Regards 

Ahmed Kochbati

 

 

0 Kudos
Message 3 of 3
(2,305 Views)