|
我在开发板上面运行一个linux的can总线调试程序。
程序代码如下:
#include <sys/ioctl.h>
#include <net/if.h>
#include <linux/can.h>
#ifndef PF_CAN
#define PF_CAN 29
#endif
#ifndef AF_CAN
#define AF_CAN PF_CAN
#endif
int main()
{
int s;
unsigned long nbytes;
struct sockaddr_can addr;
struct ifreq ifr;
struct can_frame frame;
s = socket(PF_CAN,SOCK_RAW,CAN_RAW);
strcpy((char *)(ifr.ifr_name),"can0");
ioctl(s,SIOCGIFINDEX,&ifr);//指定can0设备
printf("can0 can_ifindex = %x\n",ifr.ifr_ifindex);
addr.can_family = AF_CAN;
addr.can_ifindex = ifr.ifr_ifindex;
bind(s,(struct sockaddr*)&addr,sizeof(addr));
frame.can_id = 0x123;
strcpy((char *)frame.data,"hello");
frame.can_dlc = strlen(frame.data);
printf("Send a CAN frame from interface %s\n",ifr.ifr_name);
nbytes = sendto(s,&frame,sizeof(struct can_frame),0,(struct sockaddr*)&addr,sizeof(addr));
close(s);
return 0;
}
我用示波器去测can总线接口的,发现示波器一直有输出,不是发完数据应该没输出了呀,请问到底是怎么回事?示波器的波形如下 |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|