Тема: CITROEN-ARDUINO
Показать сообщение отдельно
Старый 04.02.2016, 18:49   #168
T_r_D
Старший Пользователь
 
Регистрация: 03.07.2015
Регион: 77, 97, 99, 177
Сообщений: 372
T_r_D is a jewel in the roughT_r_D is a jewel in the roughT_r_D is a jewel in the rough
По умолчанию

вот полный код
PHP код:
#include <SPI.h>
#include "mcp_can.h"
MCP_CAN CAN(10);
unsigned char len 0;
unsigned char buf[8];
INT32U canId 0x000// идентификаторы могут быть 11-ти или 29-битные

int LengthP
int DataBuf[100];
int DataBufSize;

void setup()
{
    
Serial.begin(38400);
    
pinMode(9INPUT);

START_INIT:
    if(
CAN_OK == CAN.begin(CAN_125KBPS,MCP_8MHz))
    {
Serial1.println("Init OK!");}
    else
    {
Serial1.println("Init fail");delay(100);goto START_INIT;}
}


void loop()
{
//  if(CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
if(!digitalRead(9))
    {
        
CAN.readMsgBuf(&lenbuf);
        
canId CAN.getCanId();
         
          if(
canId == 293// 125HEX
          
{
            
Serial.println("PKG");
            if ((
buf[0] >> 4) == 0x01)
            {
              
LengthP = (buf[0] & 0x0F 256 buf[1]) - (len 2);
              for (
int i=0i<len;i++){
              
DataBuf[i] = buf[i];
              
DataBufSize i;
              }
              
Serial.print("FIRST Length=");
              
Serial.println(LengthP);              
            }

            if(((
buf[0] >> 4) == 0x02) && LengthP 0){
              
int Length2 LengthP len;
              
Serial.print("SECOND Length=");
              
Serial.print(LengthP);
              
Serial.print(" len=");
              
Serial.println(len);
              
              if (
Length2 len){
              
Serial.println("SECOND>>> Length=");
              
Serial.print(LengthP);
              
Serial.print(" len=");
              
Serial.println(len);
              
                for (
int i 0len;i++){
                
DataBuf[i+DataBufSize] = buf[i];
                }
                
DataBufSize DataBufSize len;
              }
              else{
              
Serial.println("SECOND2>>> Length=");
              
Serial.print(LengthP);
              
Serial.print(" len=");
              
Serial.println(len);
              
                for (
int i=0LengthP;i++){
                
DataBuf[DataBufSize] = buf[i];
                }
                
DataBufSize DataBufSize LengthP;
                
                for (
int iDataBufSize;i++){
                 
Serial.print(DataBuf[i], HEX); 
                }
                
Serial.println(" ");
              }
            }  
          
          }
    }

T_r_D вне форума   Ответить с цитированием