📄 main.c
字号:
/*
****************************************Copyright (c)**************************************************
** 广州致远电子有限公司
** CAN开发组
** http://www.zyinside.com
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: mian.c
**创 建 人: 滕欣欣
**创 建 日 期: 2006-03-03
**描 述: CAN驱动模块测试程序
**最后修改日期:
**原 始 版 本:v1.0
**--------------历史修改--------------------------------------------------------------------------------
**修 改 人:
**修 改 日 期:
**修 改 原 因:
**修 改 版 本:
********************************************************************************************************
*/
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
#include <linux/errno.h> /* error codes */
#include "../SJA1000.h"
#define WRITE_TEST 'n' //发送测试程序宏标
#define READ_TEST 'y' //接收测试程序标志
#define SET_TEST 'n' //通信参数设置测试程序标志
int main()
{
int i,count,fd;
//**********************
stcSJA1000_BufInfo Buf;
Buf.FrID = 0x12345678; //设置帧ID 0x12345678
Buf.FrIf.Byte = 0;
Buf.FrIf.Bits.DLC = 8; //设置帧数据长度为8字节
Buf.FrIf.Bits.FF = 1; //帧为扩展帧
for(i=0; i<Buf.FrIf.Bits.DLC; i++) //帧数据设定为0x00 0x11 0x22 0x33 0x44
{ //0x55 0x66 0x77
Buf.DA[i] = i<<4|i;
}
//************************
system("sh autoload"); //加载autolaod文件
fd = open("/dev/SJA1000_CAN", O_RDWR); //打开CAN设备
//************************** //通信参数设置测试程序部分
#if('y' == SET_TEST)
i = ioctl(fd, IOCTL_BAUD, BTR_500K);
if(i<0)
{
printf("BTR Set Err!.\n");
}
else
{
printf("BTR Set OK!.\n");
}
#endif
//***************************
if(fd == -1)
{
printf("Can't open SJA1000 Device!\n");
close(fd);
exit(-1);
}
while(1)
{
#if('y' == READ_TEST) //接收测试程序
count = read(fd,(void*)(&Buf), sizeof(Buf));
if(count < 0)
{
printf("read err!.\n");
}
else
{
printf("CAN Recive %d Bytes.\n", count);
printf("CAN ID = 0x%08X.\n", Buf.FrID);
printf("CAN FramID = 0x%08X.\n", Buf.FrIf.Byte);
for(i=0; i<(Buf.FrIf.Bits.DLC); i++)
{
printf("CAN Data[0x%02X] = 0x%02X.\n",i,Buf.DA[i]);
}
}
#elif('y' == WRITE_TEST) //发送测试程序标志
printf("CAN Send Frame:\n");
printf("\tCAN ID = 0x%08X\n", Buf.FrID);
printf("\tCAN Info = 0x%08X\n", Buf.FrIf.Byte);
for(i=0; i<(Buf.FrIf.Bits.DLC); i++)
{
printf("\tCAN Data[0x%02X] = 0x%02X.\n",i,Buf.DA[i]);
}
count = write(fd,(void*)(&Buf),sizeof(Buf));
sleep(2);
(unsigned long)i = (Buf.FrID&0xff000000)>>24;
Buf.FrID = ((Buf.FrID<<8)|i)&0x1fffffff;
#elif('y' == SET_TEST) //通信参数设置测试程序
count = read(fd,(void*)(&Buf), sizeof(Buf));
if(count < 0)
{
printf("read err!.\n");
}
else
{
printf("CAN Recive %d Bytes.\n", count);
printf("CAN ID = 0x%08X.\n", Buf.FrID);
printf("CAN FramID = 0x%08X.\n", Buf.FrIf.Byte);
for(i=0; i<(Buf.FrIf.Bits.DLC); i++)
{
printf("CAN Data[0x%02X] = 0x%02X.\n",i,Buf.DA[i]);
}
}
#endif
}
close(fd);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -