您的位置:首页 > 编程语言 > Qt开发

QT 环境下开发socketCan接口程序

2016-07-28 16:50 351 查看
#include <QMainWindow>

#include "QTimer"

#include "QTime"

#include "QMessageBox"

#include <QSocketNotifier>

#include <sys/ipc.h>

#include <sys/shm.h>

#include <sys/types.h>

#include "stdio.h"

#include "stdlib.h"

#include "unistd.h"

#include "fcntl.h"

#include "sys/ioctl.h"

#include "sys/stat.h"

#include <net/if.h>

#include <sys/ioctl.h>

#include <sys/socket.h>

#include <sys/types.h>

#include <sys/uio.h>

#include <linux/can.h>

#include <linux/can/raw.h>

#define PF_CAN 29

定义相关变量

struct sockaddr_can addr;

struct ifreq ifr;

struct can_frame frame;

int canfd;

接口初始化

canfd=socket(PF_CAN, SOCK_RAW, CAN_RAW);

if(canfd==-1)

{

perror("socket");

exit(1);

}

strcpy(ifr.ifr_name, "can0" );

if(ioctl(canfd, SIOCGIFINDEX, &ifr))

{

qDebug("ioctl");

}

addr.can_family = PF_CAN;

addr.can_ifindex = ifr.ifr_ifindex;

if(bind(canfd, (struct sockaddr *)&addr, sizeof(addr))<0)

{

qDebug("bind");

}

发送数据

memcpy(frame.data,buf,8);

frame.can_dlc=8;

frame.can_id=0x32;

write(canfd, &frame, sizeof(struct can_frame));

接收数据

read(canfd, &frame, sizeof(struct can_frame));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: