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));
#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));
相关文章推荐
- Qt 剪贴板操作
- 使用VS创建的Qt工程,设置应用程序图标
- [安装配置][Win10]Qt提示“调试器未设置”错误
- vs+qt 设置图标
- Qt进程间调用.exe可执行文件
- qt 解析json文件
- Qt 使用QPluginLoader 加载外部dll的方法笔记
- Qt实现顶层窗口特效--阴影和圆角
- Qt学习记录--02 Qt的信号槽机制介绍(含Qt5与Qt4的差异对比)
- QT与PYQT出现问题解决(新手小白的-,-不足请评价指出)
- QT 信号与槽在不同线程不能连接的问题
- QT 学习之路 图片显示
- QtInternal 之 高效使用QString
- QLatin1String类的学习
- Qt对话框的生命周期及模态设置
- 信号和槽机制
- find-dialog
- Qt简介
- QProcess::readAll() 函数
- 学习记录-对Qt的QLineEdit进行输入字符限制