?? 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 + -