2019-7-26 15:32:14 [显示全部楼层]
2921浏览
查看: 2921|回复: 1

[求助] 用arduino nano 和CAN BUS SHIELD v1.1做CAN 总线,实现arduino与整车...

[复制链接]
这是我程序的一部分,我想读取两个ID所分别对应的报文,可是只能读一个ID的报文,请大家帮我看看,问题出在哪儿了。
截图201907261525212642.png

陈杏林  学徒
 楼主|

发表于 2019-7-26 16:13:28

  int YouWei=0;
    QD=digitalRead(CANSW);                                                 //读CAN模块启动开关状态
    if(QD==0){
              delay(20);
              QD=digitalRead(CANSW);                                       //延时20ms后再次判断启动开关的状态
              if(QD==0){         
                         if(CAN_MSGAVAIL == CAN.checkReceive())            // check if data coming
                                      {
                                          CAN.readMsgBuf(&len, buf);      // read data,  len: data length, buf: data buf
                                          
                                          Serial.println("\r\n------------------------------------------------------------------");
                                          Serial.print("Get Data From id: ");
                                          Serial.println(CAN.getCanId(),HEX);
                                          for(int i = 0; i<len; i++)    // print the data
                                                      {
                                                          Serial.print("0x");
                                                          Serial.print(buf[i], HEX);
                                                          Serial.print("\t");
                                                      }
                                          Serial.println();                                             
                                         }
                                                         
                                         
                          if(0x08F11EF3 == CAN.getCanId())                //读BMS故障报文 //发送周期500ms      
                           {      
                                  Serial.println("OK01");      
                                 if((buf[0]==0)&&(buf[1]==0))   //如果BMS无故障,无电池温度过高、过低,总电压过高、过低,SOC过高、过低,绝缘检测正常。//BMS Err里的第0、 1 字节  // 改动前 //if((buf[0]&0xFF==0)&&(buf[1]&0xFF==0))
                                  {           
                                               Serial.println("OK02");
                                             
                                               if(0x18F105F3 == CAN.getCanId()) //读BMS电压  //发送周期100ms
                                              {
                                                Serial.println("OK03");
                                                ISGPower[0]=buf[0];             //将电压值写入ISG发电电压报文中,低字节
                                                ISGPower[1]=buf[1];             //将电压值写入ISG发电电压报文中,高字节
                                                SOC=buf[4];                     //读SOC值   
                                               }
                                              Serial.print("SOC=");      Serial.println(SOC);         
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail