05-01-2017 09:29 AM
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
05-02-2017 09:53 AM
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
05-02-2017 10:27 AM - edited 05-02-2017 10:28 AM
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