📄 main.c
字号:
/****************************************Copyright (c)**************************************************
** 研 发 部
** http://www.FFTChina.com
**-----------------------------------------文件信息-----------------------------------------------------
**文 件 名: cantest.c
**创 建 人:
**最后修改日期: 2005年6月30日
**描 述: CAN模块测试程序
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "stdio.h"
#include "stdlib.h"
#include "sys/types.h"
#include "sys/stat.h"
#include "fcntl.h"
#define Senddatnum 6 //宏定义要发送的数据个数,确定发送的DLC值
#define CAN0ID 0x100 //CAN0的ID值
#define CAN1ID 0x200 //CAN1的ID值
#define RTR 0 //RTR数据位,1的话为远程帧,0的话为数据帧
int main(void)
{
int fd1;
unsigned long fft_ac,fft_am,fft_btr0,fft_btr1;//定义为32位数据
char bufdat[10];
char candat[]="fftcan" ; //待发送的数据
char canbuf[11];
char panduan,i;
unsigned long t,ffttemp1;
printf("Begin to test fftcan drivers\n");
fd1=open("/dev/fftcan", O_RDWR);
if(fd1==-1)
{
printf("can not open fftcan device\n");
exit(1);
}
//CAN0进行初始化
fft_ac = 0x01 << 24;
fft_am = 0xff << 16;
fft_btr0 = 71 <<8;
fft_btr1 = 175;
ffttemp1 = fft_ac+fft_am+fft_btr0+fft_btr1;
ioctl(fd1,3,ffttemp1); //初始化CAN0
//CAN1初始化
fft_ac = 0x01 << 24;
fft_am = 0xff << 16;
fft_btr0 = 71 << 8;
fft_btr1 = 175;
ffttemp1 = fft_ac+fft_am+fft_btr0+fft_btr1;
//调用系统函数,将组合的数据传递进去
ioctl(fd1,4,ffttemp1); //初始化CAN1
bufdat[0] = (unsigned char )((CAN1ID & 0x7f0) >> 3); //ID的高8位
bufdat[1] = (unsigned char)((CAN1ID & 0x07) | (RTR << 4) | Senddatnum); //ID的低三位加上数据位和DLC位
memcpy((bufdat+2),candat,sizeof(candat)); //将待要发送的数据写到BUF里面
if(write(fd1,bufdat,1))
{
printf("can't send data!\n");
exit(1);
} //发送数据
//CAN1接收数据
for(;;)
{
panduan=ioctl(fd1,0,0); //检查can0是否收到数据
if(panduan == 0)
break;
}
read(fd1,canbuf,0); //读出CAN0里面的数据,收到接收缓冲区里面的全部数据
printf("Receive data ASCII:\n");
for(i = 0; i < (canbuf[1] & 0x0f) + 2; i++)
printf("%x\n",canbuf[i]); //以16进制显示数据
printf("Receive data string:\n");
printf("%s\n",canbuf); //以字符窜形式显示 .fftcan为正确结果
close(fd1);
printf("finished FFT can test\n");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -