📄 can_rec1.cpp
字号:
#include "can.h"
#define NUM 3600
#define INTMODE 1
#define DISF 1
extern unsigned int PCSCANBaseAddress1;
extern unsigned int PCSCANBaseAddress2;
extern int can1flag;
extern int can2flag;
extern unsigned int irq1;
extern unsigned int irq2;
void main()
{
unsigned long waitexit=0;
int handle,i,key,k,kk;
int line;
unsigned char can1sendid=0;
unsigned char can2sendid=0;
unsigned char can2snum=0,can2rnum=0;
unsigned char can1rnum=0,can1snum=0;
unsigned long can1rerr=0,can2rerr=0;
unsigned long can2s=0,can2r=0;
unsigned long can1r=0,can1s=0;
char intrmode = 0;
int bau=0;
PORT_STRUCT ptrStruct;
CAN_PACKET canpacket;
CAN_RPACKET can_rpacket;
can1flag = 0;
can2flag = 0;
clrscr();
printf("Can test program\n");
//printf("Usage:%s <CANADR1> <CANADR2> [IRQ1] [IRQ2]\n",argv[0]);
PCSCANBaseAddress1 = 53248;
// PCSCANBaseAddress2 = hextoint(argv[2]);
// printf("%x\n", PCSCANBaseAddress1);
irq1 = 5;
// irq2 = 11;
printf("IQR:%d\n",irq1);
intrmode = 1;
printf("baud rate select:0-1000K 1-800K 2-500K 3-320K 4-250K 5-160K\n");
printf("baud rate select:6-125K 7-100K 8-80K 9-40K 10-20K 11-10K 12-5K\n");
printf("please input baud rate:(0-12):");
scanf("%d",&bau);
ptrStruct.filter=SINGLE;
ptrStruct.lis_on=LOFF;
ptrStruct.test=TOFF;
ptrStruct.sleep=SOFF;
ptrStruct.baud_rate=bau;
ptrStruct.code1=0;
ptrStruct.code2=0;
ptrStruct.code3=0;
ptrStruct.code4=0;
ptrStruct.mask1=0xff;
ptrStruct.mask2=0xff;
ptrStruct.mask3=0xff;
ptrStruct.mask4=0xff;
CanConfigPort(PCSCANBaseAddress1,&ptrStruct); /* Can port config */
// CanConfigPort(PCSCANBaseAddress2,&ptrStruct); /* Can port config */
#if INTMODE
if (intrmode == 1)
{
GetIrqP();
Inter_Rece();
CanEnableReceive(PCSCANBaseAddress1);
// CanEnableReceive(PCSCANBaseAddress2);
}
#endif
printf("Press ESC quit\n");
canpacket.f_pattern=E;
canpacket.f_type=D;
canpacket.byte_len=EIGHT;
canpacket.id1=0x08;
canpacket.id2=can1sendid;
canpacket.id3=0xcd;
canpacket.id4=0xa0;
/* for(i=0;i<8;i++)
canpacket.data[i]=can2snum;
can2snum++;
CanSendMsg(PCSCANBaseAddress2,&canpacket);
can1sendid++;
can2s++;*/
while(intrmode)
{
if(Inquiry_IntCanflag(1) == 1) /* If can interrupt request be generated */
{
/*if(can1flag==1) printf("int1 error\n");*/
Clear_Canflag(1); /* Clear can interrupt flag */
line=wherey();
CanRcvMsg(PCSCANBaseAddress1,&can_rpacket); /* Receive can message and display */
#if DISF
gotoxy(1,line); printf("can1 r:");
gotoxy(10,line); printf("%x",can_rpacket.ff);
gotoxy(15,line); printf("%x",can_rpacket.id1);
gotoxy(20,line); printf("%x",can_rpacket.id2);
gotoxy(25,line); printf("%x",can_rpacket.id3);
gotoxy(30,line); printf("%x",can_rpacket.id4);
gotoxy(35,line); printf("%x",can_rpacket.data[0]);
gotoxy(40,line); printf("%x",can_rpacket.data[1]);
gotoxy(45,line); printf("%x",can_rpacket.data[2]);
gotoxy(50,line); printf("%x",can_rpacket.data[3]);
gotoxy(55,line); printf("%x",can_rpacket.data[4]);
gotoxy(60,line); printf("%x",can_rpacket.data[5]);
gotoxy(65,line); printf("%x",can_rpacket.data[6]);
gotoxy(70,line); printf("%x\n",can_rpacket.data[7]);
#endif
can1r++;
canpacket.f_pattern=E;
canpacket.f_type=D;
canpacket.byte_len=EIGHT;
canpacket.id1=0x08;
canpacket.id2=can1sendid;
canpacket.id3=0xcd;
canpacket.id4=0xa0;
for(i=0;i< 8;i++)
canpacket.data[i]=can1snum;
can1snum++;
if (can1s <= NUM)
CanSendMsg(PCSCANBaseAddress1,&canpacket); /* Send can message */
can1sendid++;
can1s++;
}
/*if(Inquiry_IntCanflag(2) == 1)
{
Clear_Canflag(2);
line=wherey();
CanRcvMsg(PCSCANBaseAddress2,&can_rpacket);
#if DISF
gotoxy(1,line); printf("can2 r:");
gotoxy(10,line); printf("%x",can_rpacket.ff);
gotoxy(15,line); printf("%x",can_rpacket.id1);
gotoxy(20,line); printf("%x",can_rpacket.id2);
gotoxy(25,line); printf("%x",can_rpacket.id3);
gotoxy(30,line); printf("%x",can_rpacket.id4);
gotoxy(35,line); printf("%x",can_rpacket.data[0]);
gotoxy(40,line); printf("%x",can_rpacket.data[1]);
gotoxy(45,line); printf("%x",can_rpacket.data[2]);
gotoxy(50,line); printf("%x",can_rpacket.data[3]);
gotoxy(55,line); printf("%x",can_rpacket.data[4]);
gotoxy(60,line); printf("%x",can_rpacket.data[5]);
gotoxy(65,line); printf("%x",can_rpacket.data[6]);
gotoxy(70,line); printf("%x\n",can_rpacket.data[7]);
#endif
for(i=0;i< 8;i++)
{
if(can_rpacket.data[i]!=can2rnum)
{
can2rerr++;
printf("error\n");
}
}
can2rnum++;
can2r++;
canpacket.f_pattern=E;
canpacket.f_type=D;
canpacket.byte_len=EIGHT;
canpacket.id1=0x08;
canpacket.id2=0xcd;
canpacket.id3=can2sendid;
canpacket.id4=0xc0;
for(i=0;i< 8;i++)
canpacket.data[i]=can2snum;
can2snum++;
if (can2s <= NUM)
CanSendMsg(PCSCANBaseAddress2,&canpacket);
can2sendid++;
can2s++;
}*/
if (NUM <= can1s)
{
waitexit++; //2006.4.30
//delay(10);
//exit(0);
}
if (waitexit > 100) //2006.4.30
break;
if(kbhit())
{
key=getch();
if(key == 27) break;
//2006 4.30
}
}
while(!intrmode) //pool
{
if((canreadb(PCSCANBaseAddress1,2)&0x01) == 1)
{
line=wherey();
CanRcvMsg(PCSCANBaseAddress1,&can_rpacket); /* Receive can message and display */
#if DISF
gotoxy(1,line); printf("can1 r:");
gotoxy(10,line); printf("%x",can_rpacket.ff);
gotoxy(15,line); printf("%x",can_rpacket.id1);
gotoxy(20,line); printf("%x",can_rpacket.id2);
gotoxy(25,line); printf("%x",can_rpacket.id3);
gotoxy(30,line); printf("%x",can_rpacket.id4);
gotoxy(35,line); printf("%x",can_rpacket.data[0]);
gotoxy(40,line); printf("%x",can_rpacket.data[1]);
gotoxy(45,line); printf("%x",can_rpacket.data[2]);
gotoxy(50,line); printf("%x",can_rpacket.data[3]);
gotoxy(55,line); printf("%x",can_rpacket.data[4]);
gotoxy(60,line); printf("%x",can_rpacket.data[5]);
gotoxy(65,line); printf("%x",can_rpacket.data[6]);
gotoxy(70,line); printf("%x\n",can_rpacket.data[7]);
#endif
for(i=0;i<8;i++)
{
if(can_rpacket.data[i]!=can1rnum)
{
can1rerr++;
printf("error\n");
}
}
can1rnum++;
can1r++;
canpacket.f_pattern=E;
canpacket.f_type=D;
canpacket.byte_len=EIGHT;
canpacket.id1=0x08;
canpacket.id2=can1sendid;
canpacket.id3=0xcd;
canpacket.id4=0xa0;
for(i=0;i< 8;i++)
canpacket.data[i]=can1snum;
can1snum++;
if (can1s <= NUM)
CanSendMsg(PCSCANBaseAddress1, &canpacket); /* Send can message */
can1sendid++;
can1s++;
}
if((canreadb(PCSCANBaseAddress2,2)&0x01) == 1)
{
line=wherey();
CanRcvMsg(PCSCANBaseAddress2,&can_rpacket); /* Receive can message and display */
#if DISF
gotoxy(1,line); printf("can2 r:");
gotoxy(10,line); printf("%x",can_rpacket.ff);
gotoxy(15,line); printf("%x",can_rpacket.id1);
gotoxy(20,line); printf("%x",can_rpacket.id2);
gotoxy(25,line); printf("%x",can_rpacket.id3);
gotoxy(30,line); printf("%x",can_rpacket.id4);
gotoxy(35,line); printf("%x",can_rpacket.data[0]);
gotoxy(40,line); printf("%x",can_rpacket.data[1]);
gotoxy(45,line); printf("%x",can_rpacket.data[2]);
gotoxy(50,line); printf("%x",can_rpacket.data[3]);
gotoxy(55,line); printf("%x",can_rpacket.data[4]);
gotoxy(60,line); printf("%x",can_rpacket.data[5]);
gotoxy(65,line); printf("%x",can_rpacket.data[6]);
gotoxy(70,line); printf("%x\n",can_rpacket.data[7]);
#endif
for(i=0;i< 8;i++)
{
if(can_rpacket.data[i]!=can2rnum)
{
can2rerr++;
printf("error\n");
}
}
can2rnum++;
can2r++;
canpacket.f_pattern=E;
canpacket.f_type=D;
canpacket.byte_len=EIGHT;
canpacket.id1=0x08;
canpacket.id2=0xcd;
canpacket.id3=can2sendid;
canpacket.id4=0xc0;
for(i=0;i< 8;i++)
canpacket.data[i]=can2snum;
can2snum++;
if (can2s <= NUM)
CanSendMsg(PCSCANBaseAddress2, &canpacket); /* Send can message */
can2sendid++;
can2s++;
}
if (NUM <= can1s)
{
waitexit++; //2006.4.30
//delay(10);
//exit(0);
}
if (waitexit > 100) //2006.4.30
break;
if(kbhit())
{
key=getch();
if(key == 27) break;
//2006 4.30
#if 0
else if(key == 50) /* If press "2" then send can message */
{
canpacket.f_pattern=E;
canpacket.f_type=D;
canpacket.byte_len=EIGHT;
canpacket.id1=0x08;
canpacket.id2=can1sendid;
canpacket.id3=0xcd;
canpacket.id4=0xa0;
for(i=0;i<8;i++)
canpacket.data[i]=can2snum;
can2snum++;
CanSendMsg(PCSCANBaseAddress2,canpacket); /* Send can message */
can1sendid++;
can2s++;
/*printf("can2 send packet\n");*/
}
#endif
}
}
#if INTMODE
if (intrmode == 1)
{
CanDisableReceive(PCSCANBaseAddress1);
// CanDisableReceive(PCSCANBaseAddress2);
Close_Rece();
}
#endif
CanDisableReceive(PCSCANBaseAddress1);
// CanDisableReceive(PCSCANBaseAddress2);
Close_Rece();
//2006 4.30
//printf("can2 s= %ld can1 r=%ld can1rerror=%ld \n",can2s,can1r,can1rerr);
//printf("can1 s= %ld can2 r=%ld can2rerror=%ld \n",can1s,can2r,can2rerr);
if ( (0 == can1rerr) && (NUM <= can1r))
printf("CAN2--->CAN1 OK\n");
else
{
printf("CAN2--->CAN1 FAIL!! There are %ld error!rec:%ld\n",can1rerr,can1r);
}
if ( (0 == can2rerr) && (NUM <= can2r))
printf("CAN1--->CAN2 OK\n");
else
{
printf("CAN1--->CAN2 FAIL!! There are %ld error!rec:%ld\n",can1rerr,can2r);
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -