📄 send.c
字号:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "sbscan.h"
#define NUM 2
#define TOTAL 4
#define MESSAGE_LEN (sizeof(struct CAN_frame))
void print_tx_p(struct CAN_frame *ptr)
{
int i,j;
struct CAN_frame *p;
unsigned char *ch;
p=ptr;
printf("\n----------send data--------------------------------------\n");
for (i=0;i<NUM;i++,p++) {
printf("send message %d ==> ",i);
ch=(unsigned char *)p;
for (j=0;j<MESSAGE_LEN;j++)
printf("%02x ",*(ch++));
printf("\n");
}
printf("--------send end-----------------------------------------\n");
}
int main(void)
{
//发送四个报文,每次发送两个报文
int txfd;
struct CAN_frame *tx_m_e,*ptr;
int count,result;
int i,j;
char ch;
unsigned char data[8]={10,20,30,40,50,60,70,80};
txfd=open("/dev/can1",O_RDWR);
if (txfd<0) {
printf("open failed\n");
exit(-1);
}
ioctl(txfd,CAN_IOCRESET);
tx_m_e=(struct CAN_frame *)malloc(TOTAL*sizeof(struct CAN_frame));
if (!tx_m_e)
exit(-1);
memset(tx_m_e,0,TOTAL*sizeof(struct CAN_frame));
ptr=tx_m_e;
for (count=0;count<TOTAL;count++,ptr++)
{
ptr->ff=0x88;
ptr->id1=0xab;
ptr->id2=0xcd;
ptr->id3=0xab;
ptr->id4=0xcd;
for (i=0;i<8;i++)
ptr->data[i]=data[i]+count;
}
ptr=tx_m_e;
for (i=0;i<TOTAL;i+=NUM) {
print_tx_p(ptr);
if (result=write(txfd,ptr,NUM*sizeof(struct CAN_frame))!=NUM)
printf("error send,count=%d\n",count);
//ch=getchar();
ptr=ptr+NUM;
}
if (close(txfd))
printf("close failed\n");
free(tx_m_e);
return ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -