Getting garbage output in serial monitor while communicating with OBD using CAN

I am doing a project which involves getting vehicle speed from a car’s OBD port and storing it in my database using nodemcu.

I am programming nodemcu using Arduino IDE and using this library for working with CAN.

Here is a simple example program which I am trying to test but getting garbage output on serial monitor:

#include <SPI.h>
#include "mcp_can.h"

INT32U canId = 0x000;
unsigned char buf[8];
char str[20];
MCP_CAN CAN0(10);

void setup()
{
    Serial.begin(38400);
START_INIT:

    if(CAN_OK == CAN0.begin(MCP_ANY, CAN_125KBPS, MCP_80MHZ))
    {
        Serial.println("Initialized successfully");
    }
    else
    {
        Serial.println("Initializing is failed");
        Serial.println("Reloading...");
        delay(100);
        goto START_INIT;
    }
}


void loop()
{
  INT8U len=8;
    if(CAN_MSGAVAIL == CAN0.checkReceive()) 
    {          
        CAN0.readMsgBuf(&canId,&len, buf);
        Serial.print("<");Serial.print(canId);Serial.print(",");
        for(int i = 0; i<len; i++)
        {
            Serial.print(buf[i]);Serial.print(",");
        }
        Serial.print(">");
        Serial.println();
    }
}

My speculations:

A CAN Id can differ from car to car if so how do I know CAN Id of my car?(It is Maruti Suzuki Ertiga)
The baudrate which I am using maybe wrong
The frequency or the kbps I am using in the function call CAN0.begin(MCP_ANY, CAN_125KBPS, MCP_80MHZ) maybe wrong.

If any of the above mentioned points are wrong, then how do I know/what are the correct values?

What kind of garbage? One kind of garbage shows when you have wrong serial speed at serial monitor.