[Ovmsdev] Coding help
Michael Balzer
dexter at expeedo.de
Sat Mar 6 04:45:59 HKT 2021
Shane,
OvmsVehicle::PollSetPidList(m_can1, obdii_polls);
OvmsVehicle::PollSetState(0);
needs to be done in your vehicle init, i.e. the constructor after
RegisterCanBus().
Please read the vehicle_obdii module source for a complete polling example.
Regards,
Michael
Am 05.03.21 um 17:59 schrieb Shane @ Kilve Engineering:
> Thanks Michael,
>
> Had a try and ended up with this bit added but return anything
>
> Where am I going wrong?
>
> Shane
>
> *******
>
> #include "ovms_log.h"
> *static**const**char**TAG= "v-edeliver3";
>
> #include "vehicle_edeliver3.h"
> #include "metrics_standard.h"
>
> *namespace* {
>
> *const*OvmsVehicle::poll_pid_tobdii_polls[] =
> {
> { 0x7e3, 0x7eb, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0xf194, { 10, 10,
> 10, 10 }, 0, ISOTP_STD }, //VIN
> { 0x7e3, 0x7eb, VEHICLE_POLL_TYPE_OBDIIEXTENDED, 0xe003, { 10, 10,
> 10, 10 }, 0, ISOTP_STD }, //SOH
> POLL_LIST_END
> };
> };
>
> OvmsVehicleEdeliver3::OvmsVehicleEdeliver3()
> {
> ESP_LOGI(TAG, "Start eDeliver3 vehicle module");
>
>
> RegisterCanBus(1,CAN_MODE_ACTIVE,CAN_SPEED_500KBPS);
> }
>
> OvmsVehicleEdeliver3::~OvmsVehicleEdeliver3()
> {
> ESP_LOGI(TAG, "Stop eDeliver3 vehicle module");
>
>
> memset(m_vin, 0, *sizeof*(m_vin));
> }
>
>
> //testing polls
>
> *void*OvmsVehicleEdeliver3::IncomingPollReply(
> canbus* bus, uint16_t type, uint16_t pid, uint8_t* data, uint8_t
> length, uint16_t mlremain)
> {
> string& rxbuf = med_obd_rxbuf;
>
>
> OvmsVehicle::PollSetPidList(m_can1, obdii_polls);
> OvmsVehicle::PollSetState(0);
>
>
>
> // init / fill rx buffer:
> *if* (m_poll_ml_frame == 0) {
> rxbuf.clear();
> rxbuf.reserve(length + mlremain);
> }
> rxbuf.append((*char**)data, length);
> *if* (mlremain)
> *return*;
>
> // complete:
> *switch* (pid) {
> *case* 0xe003: {
> *unsigned* *int* soh_raw = ((*unsigned* *int*)rxbuf[0] << 8) |
> (*unsigned* *int*)rxbuf[1];
> *float* soh = soh_raw / 10;
> StdMetrics.ms_v_bat_soh->SetValue(soh);
> *break*;
> }
> }
> }
>
>
> // end testing polls
>
>
>
>> On 5 Mar 2021, at 12:37, Michael Balzer <dexter at expeedo.de
>> <mailto:dexter at expeedo.de>> wrote:
>>
>> Shane,
>>
>> on OBD polling basics:
>> http://lists.openvehicles.com/pipermail/ovmsdev/2020-December/014758.html
>>
>> Regards,
>> Michael
>>
>>
>> Am 04.03.21 um 19:45 schrieb Shane @ Kilve Engineering:
>>> Good evening Michael,
>>>
>>> Or any one that has the time to help,
>>>
>>> Ive now successfully retrieved as much info as I can without polling
>>> any info for the maxus, but I have have now found an ecu that
>>> responds to pid requests.
>>>
>>> For example if I use the obdii pid scanner I get the loads of data
>>> back and I’ve decoded some of it, just need a bit of guidance how to
>>> write the code to get the same info
>>>
>>> A part of a scan is as follows
>>>
>>> Scan complete (7e3 e000-e100)
>>> Scan started : 2021-03-04 18:32:36 GMT
>>> Last response: 2021-03-04 18:32:39 GMT
>>> 7e3[7eb]:e000 00
>>> 7e3[7eb]:e001 64
>>> 7e3[7eb]:e002 4b
>>> 7e3[7eb]:e003 26 bc
>>> 7e3[7eb]:e004 00 07
>>> 7e3[7eb]:e005 2f
>>> 7e3[7eb]:e006 2e
>>> 7e3[7eb]:e007 02 00
>>> 7e3[7eb]:e008 01 ff
>>> 7e3[7eb]:e009 02 00
>>> 7e3[7eb]:e010 02 00
>>>
>>> I know that e003 is SOH = 26bc = 9916 /100 = 99.16% SOH
>>> And e002 is a temp 4b = 75 / 10 = 7.5 degrees
>>>
>>> So if some one can help me with an example of how to correctly code
>>> this one I can work out the rest,
>>>
>>> Ive looked through various vehicles but everyone uses different
>>> methods and I can’t seem to get one to work for me.
>>>
>>> Any help much appreciated
>>>
>>> Shane
>>>
>>>> On 15 Feb 2021, at 08:05, Michael Balzer <dexter at expeedo.de
>>>> <mailto:dexter at expeedo.de>> wrote:
>>>>
>>>> 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 at lists.openvehicles.com <mailto:OvmsDev at lists.openvehicles.com>
>> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
>
>
> _______________________________________________
> OvmsDev mailing list
> OvmsDev at lists.openvehicles.com
> http://lists.openvehicles.com/mailman/listinfo/ovmsdev
--
Michael Balzer * Helkenberger Weg 9 * D-58256 Ennepetal
Fon 02333 / 833 5735 * Handy 0176 / 206 989 26
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20210305/2e429854/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 203 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openvehicles.com/pipermail/ovmsdev/attachments/20210305/2e429854/attachment-0001.sig>
More information about the OvmsDev
mailing list