首页 > 其他分享 >总线出现错误帧或负载帧

总线出现错误帧或负载帧

时间:2023-12-09 15:12:37浏览次数:25  
标签:char 负载 word 字节 错误 int 总线 ErrorCode bufferSize

on errorFrame
{
const int bufferSize = 256; //bufferSize不可以再被赋值
char buffer[bufferSize];
char cdirection[2][3] = {"RX","TX"};
int ndir;
word ecc;
word extInfo;//byte: 声明一个字节的变量 word: 声明两个字节的变量 dword: 声明四个字节的变量
int isProtocoleException;

ecc = (this.ErrorCode >> 6) &0x23;
extInfo = (this.ErrorCode >> 12) &0x3;
isProtocoleException = (this.ErrorCode & (1 << 15)) != 0;//2的15次方????
ndir = extInfo == 0 || extInfo == 2 ? 0 : 1;
//CAN控制器类型:(1,SJA1000)、(2,CAN Core)、(3、未知)
if(this.CtrlType == 1){
switch(ecc)
{
case 0 : snprintf(buffer,bufferSize,"bit error");break;//将bit error格式化后写入buffer数组中
case 1 : snprintf(buffer,bufferSize,"Form error");break;
case 2 : snprintf(buffer,bufferSize,"Stuff error");break;
case 3 : snprintf(buffer,bufferSize,"Other error");break;
default: snprintf(buffer,bufferSize,"Unkown error code");
}
}
else if(this.CtrlType == 2){
switch(ecc)
{
case 0 : snprintf(buffer,bufferSize,"bit error");break;//将bit error格式化后写入buffer数组中
case 1 : snprintf(buffer,bufferSize,"Form error");break;
case 2 : snprintf(buffer,bufferSize,"Stuff error");break;
case 3 : snprintf(buffer,bufferSize,"Other error");break;
case 4 : snprintf(buffer,bufferSize,"CRC error");break;
case 5 : snprintf(buffer,bufferSize,"ACK Del. error");break;
case 7 :
{
switch(extInfo)
{
case 0 : snprintf(buffer,bufferSize,"RX NACK error (recessive error flag)");break;
case 1 : snprintf(buffer,bufferSize,"TX NACK error (recessive error flag)");break;
case 2 : snprintf(buffer,bufferSize,"RX NACK error (dominant error flag)");break;
case 3 : snprintf(buffer,bufferSize,"TX NACK error (dominant error flag)");break;
}
break;
}
case 8: snprintf(buffer,bufferSize,"Overload frame");break;
case 9: snprintf(buffer,bufferSize,"FDF or res recessive");break;
default: snprintf(buffer,bufferSize,"Unkown error code"); break;
}
}
else snprintf(buffer,bufferSize,"Unsupported CAN controller");
if(isProtocoleException){
write("Protocel exception on CAN%d at %fs :%s",this.can,this.time/1e5,buffer);
}
else{
write("%s ERROR Psi5SensorFrameStruct on CAN%d at %f: %s",this.can,this.time/1e5,buffer);
}
}

  

标签:char,负载,word,字节,错误,int,总线,ErrorCode,bufferSize
From: https://www.cnblogs.com/hanhao970620/p/17890986.html

相关文章

  • 发现工作负载使用的 Linux 内核子系统 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/admin-guide/workload-tracing.html发现工作负载使用的Linux内核子系统作者[email protected]@gmail.com维护者[email protected]要点了解构建和运行工......
  • 通过静态HTTP实现负载均衡
    在当今的互联网环境中,随着用户数量的不断增加和业务需求的不断扩大,单台服务器往往无法承受所有的访问压力。为了确保网站的可用性和性能,负载均衡成为了一种常见的解决方案。本文将探讨如何通过静态HTTP实现负载均衡,以提升网站的性能和可扩展性。负载均衡是通过将来自客户端的请求分......
  • 分布式系统-负载均衡
    分布式系统中,业务系统都是集群部署,而且一般会做微服务化。那么,从一个系统rpc请求到另一个系统,应该路由到哪一台节点呢?这,就涉及到负载均衡。负载均衡的核心,便是负载均衡算法,算法有很多,主要介绍其中六种,并说一说各自算法的优缺点。1.加权随机加权随机,顾名思义,就是路由到哪一台节......
  • SpingBoot学习系列-错误集结
    1.Error:java:无效的源发行版:12 2.Identifyandstoptheprocessthat’slisteningonport8080orconfigurethisapplicationtolistenonanotherport.表明端口被占用,更改其他端口或者将被占用的端口对应的进程杀掉 查找端口被占用的进程或程序Windows系统:net......
  • onnxruntime GPU 推理错误
    错误[E:onnxruntime:Default,provider_bridge_ort.cc:1480TryGetProviderInfo_CUDA]/onnxruntime_src/onnxruntime/core/session/provider_bridge_ort.cc:1193onnxruntime::Provider&onnxruntime::ProviderLibrary::Get()[ONNXRuntimeError]:1:FAIL:Failedto......
  • 共享式以太网采用总线型拓扑结构通信方式简介
    共享式以太网是早期局域网的主要形式,它主要采用总线型拓扑结构进行通信。在这种结构中,所有的站点都通过相应的硬件接口直接连接到一条共享的通信介质上。这条通信介质通常为同轴电缆,各个站点能被所有其他的站点接收。在通信方式上,共享式以太网主要采用CSMA/CD(CarrierSenseMultipl......
  • [3分钟]GO:不要错误的使用并发
    七、并发由于Go语言的并发功能,经常被选作项目编程语言。Go语言团队已经竭尽全力以廉价(在硬件资源方面)和高性能来实现并发,但是Go语言的并发功能也可以被用来编写性能不高同时也不太可靠的代码。这里有一个二分法;Go语言的最大特点是简单、轻量级的并发模型。作为一种产品......
  • waitgroup如何其中一个协程发生错误,应该如何处理
    等待一个协程组全部正确完成则结束;但其中一个协程发生错误,这时候就会阻塞,全部停止运行(本次任务失败)以免浪费系统资源,此时可以结合通道(channel)或者select语句两种方式来处理。1、考虑使用两个通道:一个用于报告错误,另一个用于通知所有协程停止。在协程内部捕获错误,并将错误信息......
  • 查看linux负载情况
    1.cpu负载平均负载:指的是单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是单位时间内活跃的进程数。1.1uptime命令20:47:25显示当前系统时间up20:39系统已运行时间loadaverage:1.05,1.07,1.04......
  • Linux7 查看系统版本,禁用登陆错误超过5次的ip
    cat/etc/centos-releaseuname-a #!/bin/bash#定义失败次数的阈值threshold=5#提取登录失败的IP地址failed_ips=$(awk'/Failedpassword/{print$(NF-3)}'/var/log/secure|sort|uniq-c|awk'{if($1>='$threshold')print$2}')......