Я подключил экран CAN-BUS к моим системам отопления, и я получаю данные от автобуса.
Это работает (я думаю). Однако я не могу получить данные, которые я хочу. См. Прикрепленные фотографии.Arduino & SeeedStudio CAN-BUS Shield
Он говорит, что он работает с CAN открыть и узел должен быть 80 (0x50 шестигранной). Однако, когда я помещаю фильтр, который показывает только данные с узла 80, я не получу никаких данных.
Также, когда я пытаюсь без фильтра, я не получу никаких данных из модуля!
В нем также говорится, что он посылает пульс каждые 1 с. и это я нашел в Node id 1862 (0X746 hex).
Как читать данные с модуля.
код для чтения с экрана:
#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' действительно имеют свое место. Использование их вместо петель не является таким местом. –
Извините, Joachim Я не совсем понимаю, о чем вы говорите! –
Это не связано с вашим вопросом, но не используйте 'goto' как способ реализации циклов. –