⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 send.c

📁 盛博can驱动程序功能很全
💻 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 + -