Shane,
I forgot to mention: if you're working on a new vehicle module, you'll also need to start the bus somewhere in your initialization code. Example:
RegisterCanBus(1, CAN_MODE_ACTIVE, CAN_SPEED_500KBPS);
Regards,
Michael
Am 15.02.21 um 08:36 schrieb Michael Balzer:
Shane,
Am 14.02.21 um 16:42 schrieb Shane @ Kilve Engineering:
can any one help me with a bit of code to retrieve ve some data from ecu can1/6f2 00 4c 00 00 01 97 bc 00 as i cant poll this ecu it just broadcasts when its active, ive tried polling it but does not respond, i need to choose one byte and allocate it to a PID.
I don't know what you mean by "allocating a byte to a PID", but if you want to process frames received directly, simply override IncomingFrameCan1() (or …2/3/4 depending on your bus).
Reduced example:
void OvmsVehicleXYZ::IncomingFrameCan1(CAN_frame_t *p_frame)
{
uint8_t *d = p_frame->data.u8;
switch (p_frame->MsgID)
{
case 0x6f2:
// for example, assuming the SOC is in byte 1:
StdMetrics.ms_v_bat_soc->SetValue(d[1]);
break;
}
}
If you're outside a vehicle context, you can register your own CAN receiver by creating a queue and calling MyCan.RegisterListener(). See the vehicle module for an example.
Regards,
Michael
--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
_______________________________________________
OvmsDev mailing list
OvmsDev@lists.openvehicles.comhttp://lists.openvehicles.com/mailman/listinfo/ovmsdev