zoukankan      html  css  js  c++  java
  • how to check CAN frame

    1. check buffer size

    getsockopt(s, SOL_SOCKET, SO_SNDBUF,&snd_size, &optlen);

    setsockopt(s, SOL_SOCKET, SO_SNDBUF,&snd_size, &optlen);

    setsockopt(s,SOL_SOCKET,SO_RCVBUF, (char *)&rcv_size, optlen);

    //RE:https://blog.csdn.net/fuyuehua22/article/details/38232769
    #include <stdio.h> 
    #include <stdlib.h> 
    #include <unistd.h> 
    #include <string.h> 
    #include <errno.h> 
    #include <sys/types.h> 
    #include <sys/socket.h> 
    #include <assert.h> 
    
    int main(int argc,char **argv) 
    { 
    int err = -1; /* 返回值 */ 
    int s = -1; /* socket描述符 */ 
    int snd_size = 0; /* 发送缓冲区大小 */ 
    int rcv_size = 0; /* 接收缓冲区大小 */ 
    socklen_t optlen; /* 选项值长度 */ 
    
    /*建立一个TCP套接字 */ 
    s = socket(PF_INET,SOCK_STREAM,0); 
    if( s == -1){ 
    printf("建立套接字错误
    "); 
    return -1; 
    } 
    
    /* 先读取缓冲区设置的情况,获得原始发送缓冲区大小*/ 
    optlen = sizeof(snd_size); 
    err = getsockopt(s, SOL_SOCKET, SO_SNDBUF,&snd_size, &optlen); 
    if(err<0){ 
    printf("获取发送缓冲区大小错误
    "); 
    } 
    /*打印原始缓冲区设置情况*/ 
    
    /*获得原始接收缓冲区大小*/ 
    optlen = sizeof(rcv_size); 
    err = getsockopt(s, SOL_SOCKET, SO_RCVBUF, &rcv_size, &optlen); 
    if(err<0){ 
    printf("获取接收缓冲区大小错误
    "); 
    } 
    
    printf(" 发送缓冲区原始大小为: %d 字节
    ",snd_size); 
    printf(" 接收缓冲区原始大小为: %d 字节
    ",rcv_size); 
    
    /*设置发送缓冲区大小*/ 
    snd_size = 10*1024; /* 发送缓冲区大小为8K */ 
    optlen = sizeof(snd_size); 
    err = setsockopt(s, SOL_SOCKET, SO_SNDBUF, &snd_size, optlen); 
    if(err<0){ 
    printf("设置发送缓冲区大小错误
    "); 
    } 
    
    /*设置接收缓冲区大小*/ 
    rcv_size = 10*1024; /* 接收缓冲区大小为8K */ 
    optlen = sizeof(rcv_size); 
    err = setsockopt(s,SOL_SOCKET,SO_RCVBUF, (char *)&rcv_size, optlen); 
    if(err<0){ 
    printf("设置接收缓冲区大小错误
    "); 
    } 
    
    /*检查上述缓冲区设置的情况,获得修改后发送缓冲区大小 */ 
    optlen = sizeof(snd_size); 
    err = getsockopt(s, SOL_SOCKET, SO_SNDBUF,&snd_size, &optlen); 
    if(err<0){ 
    printf("获取发送缓冲区大小错误
    "); 
    } 
    
    /*获得修改后接收缓冲区大小 */ 
    optlen = sizeof(rcv_size); 
    err = getsockopt(s, SOL_SOCKET, SO_RCVBUF,(char *)&rcv_size, &optlen); 
    if(err<0){ 
    printf("获取接收缓冲区大小错误
    "); 
    } 
    
    /* 打印结果 */ 
    printf(" 发送缓冲区大小为: %d 字节
    ",snd_size); 
    printf(" 接收缓冲区大小为: %d 字节
    ",rcv_size); 
    
    close(s); 
    return 0; 
    } 
    View Code

    2. 查看统计:

    cat /proc/net/can/stats

    eg:

    nvidia@tegra-ubuntu:~/zrj/laneseg_TRT$ cat /proc/net/can/stats 
    
       503740 transmitted frames (TXF)
       661826 received frames (RXF)
            0 matched frames (RXMF)
    
            0 % total match ratio (RXMR)
            0 frames/s total tx rate (TXR)
            0 frames/s total rx rate (RXR)
    
            0 % current match ratio (CRXMR)
          351 frames/s current tx rate (CTXR)
          351 frames/s current rx rate (CRXR)
    
            0 % max match ratio (MRXMR)
          408 frames/s max tx rate (MTXR)
         3061 frames/s max rx rate (MRXR)
    
            0 current receive list entries (CRCV)
            0 maximum receive list entries (MRCV)

    3. ifconfig can1

    nvidia@tegra-ubuntu:~/zrj/laneseg_TRT$ ifconfig can1
    can1      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
              UP RUNNING NOARP  MTU:72  Metric:1
              RX packets:81647 errors:31020 dropped:0 overruns:0 frame:1262
              TX packets:250985 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:10 
              RX bytes:589825 (589.8 KB)  TX bytes:2007880 (2.0 MB)
              Interrupt:172 

    4. other tools.

    CANoe or CANPro etc...

    END

  • 相关阅读:
    DDOS攻击与防御
    .NET Core 二维码生成Demo
    腾讯云服务器远程登录卡顿严重导致无法登录解决办法
    signalR【一、官方案例】
    Python题目:生成100个随机不重复的字符串【杭州多测师】【杭州多测师_王sir】
    把字符串当中重复的字符打印出来【杭州多测师】【杭州多测师_王sir】
    PC#1 ping PC#2,请描述PC1和PC2之间的通信过程【杭州多测师】【杭州多测师_王sir】
    逻辑题【杭州多测师】【杭州多测师_王sir】
    编程题:给一个网址获取分配网址的协议,域名,路径,端口,参数1的值,参数2的值,并以字典的形式打印出结果【杭州多测师】【杭州多测师_王sir】
    经典的Python题目之找到a开头的元素、组成新的列表【多测师王sir】【杭州多测师_王sir】
  • 原文地址:https://www.cnblogs.com/happyamyhope/p/9070517.html
Copyright © 2011-2022 走看看