Merge pull request #996 from ElectronicCats/CAN232-LAWICEL

fix: dynamic timestamp extraction for LAWICEL CAN frames
This commit is contained in:
Collin Kidder
2026-01-13 20:04:29 -05:00
committed by GitHub
+20 -2
View File
@@ -497,11 +497,29 @@ void LAWICELSerial::readSerialData()
}
else
{
char offset;
char len_index;
switch(mBuildLine[0].toLatin1()) {
case 't':
case 'd':
offset = 5;
len_index = 4;
break;
case 'T':
case 'D':
offset = 10;
len_index = 9;
break;
default:
offset = 5;
len_index = 4;
break;
}
//If total length is greater than command, header and data, timestamps must be enabled.
if (data.length() > (5 + mBuildLine.mid(4, 1).toInt() * 2 + 1))
if (data.length() > (offset + mBuildLine.mid(len_index, 1).toInt() * 2 + 1))
{
//Four bytes after the end of the data bytes.
buildTimestamp = mBuildLine.mid(5 + mBuildLine.mid(4, 1).toInt() * 2, 4).toInt(nullptr, 16) * 1000l;
buildTimestamp = mBuildLine.mid(offset + mBuildLine.mid(len_index, 1).toInt() * 2, 4).toInt(nullptr, 16);
buildFrame.setTimeStamp(QCanBusFrame::TimeStamp(0, buildTimestamp));
}
else