나는 내 난방 시스템에 CAN-BUS 쉴드를 연결 했으므로 버스에서 데이터를 얻고 있습니다.
이것이 작동 중입니다 (제 생각 엔). 그러나 원하는 데이터를 가져올 수 없습니다. 첨부 된 사진을 참조하십시오.Arduino & SeeedStudio CAN-BUS 쉴드
열 수와 실행의와 노드 80 (0 × 50의 16 진수)해야한다고 말한다. 그러나 노드 80의 데이터 만 표시하는 필터를 추가하면 데이터가 표시되지 않습니다.
또한 필터를 사용하지 않으면 모듈에서 데이터를 가져올 수 없습니다.
또한 1 초마다 하트 비트를 보냈다 고합니다. 이 노드는 노드 ID 1862 (0X746 16 진수)에서 찾았습니다.
모듈에서 데이터를 읽으려면 어떻게해야합니까?
코드 실드에서 읽기 :
#include <SPI.h>
#include "mcp_can.h"
INT32U canId = 0x000;
MCP_CAN CAN(9);
unsigned char len = 0;
unsigned char buf[11];
char str[40];
void setup()
{
Serial.begin(38400);
START_INIT:
if(CAN_OK == CAN.begin(CAN_125KBPS))
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}
}
void loop()
{
if(CAN_MSGAVAIL == CAN.checkReceive())
{
CAN.readMsgBuf(&len, buf);
canId = CAN.getCanId();
Serial.print("<");
Serial.print(canId);
for(int i = 0; i<len; i++)
{
Serial.print(",");
Serial.print(buf[i]);
}
Serial.print(">");
Serial.println();
}
}
라벨과 'goto'에는 해당 위치가 있습니다. 루프 대신에 그것들을 사용하는 것은 그런 장소가 아닙니다. –
죄송합니다, 요아킴 나는 당신이 무슨 말을하고 있는지 잘 모르겠습니다! –
질문과 관련이 없지만 루프를 구현하는 방법으로 'goto'를 사용하지 마십시오. –