?? main.c
字號(hào):
/*
****************************************Copyright (c)**************************************************
** 廣州致遠(yuǎn)電子有限公司
** CAN開發(fā)組
** http://www.zyinside.com
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: mian.c
**創(chuàng) 建 人: 滕欣欣
**創(chuàng) 建 日 期: 2006-03-03
**描 述: CAN驅(qū)動(dòng)模塊測(cè)試程序
**最后修改日期:
**原 始 版 本: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' //發(fā)送測(cè)試程序宏標(biāo)
#define READ_TEST 'y' //接收測(cè)試程序標(biāo)志
#define SET_TEST 'n' //通信參數(shù)設(shè)置測(cè)試程序標(biāo)志
int main()
{
int i,count,fd;
//**********************
stcSJA1000_BufInfo Buf;
Buf.FrID = 0x12345678; //設(shè)置幀ID 0x12345678
Buf.FrIf.Byte = 0;
Buf.FrIf.Bits.DLC = 8; //設(shè)置幀數(shù)據(jù)長(zhǎng)度為8字節(jié)
Buf.FrIf.Bits.FF = 1; //幀為擴(kuò)展幀
for(i=0; i<Buf.FrIf.Bits.DLC; i++) //幀數(shù)據(jù)設(shè)定為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設(shè)備
//************************** //通信參數(shù)設(shè)置測(cè)試程序部分
#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) //接收測(cè)試程序
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) //發(fā)送測(cè)試程序標(biāo)志
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) //通信參數(shù)設(shè)置測(cè)試程序
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;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -