As you are using an OBDLINK LX, you should send the following sequence:
"ATZ" & Chr(13) ' reset dongle
"ATSP6" & Chr(13) ' CAN 11 bits @ 500k
"ATE0" & Chr(13) ' Echo OFF
"ATH1" & Chr(13) ' Header ON
"ATL0" & Chr(13) ' no crlf
"STFAP 374, FFF" & Chr(13) ' put pass filter B_SoC
"STM" & Chr(13) ' read frames
You should receive only frames with id 374, they look like this:
374 B8 BC 00 00 43 3F 4E 00
the SoC is in the second data byte BC
BC converted to dec = 188
formula to apply:
SoC= (X- 10) / 2
SoC= 89% (188- 10) / 2
What you started to develop is not the right way to start with....
Xavier