Использование CAPL с CANoe для передачи большого количества данных через ISO-TP на CAN. Существует ли процедура, которая обеспечивает обработку сегментации данных, встроенную в CAPL, или мне нужно написать собственную интерпретацию?Передача данных через ISO-TP (транспортный протокол) в CANoe с использованием CAPL
1
A
ответ
2
Посмотрите на OSEK_TP CANoe demo. Он показывает, как передавать и получать дату по ISO-TP (Transport Protocol, ISO 15765-2). См. Файл nodeA.can
и ссылку API OSEL_TP для деталей реализации.
Вот минимальный пример:
Создание и настройка соединения:
long handle;
handle = CanTpCreateConnection(0); // 0 = Normal mode
CanTpSetTxIdentifier(handle, 0x700); // Tx CAN-ID
CanTpSetRxIdentifier(handle, 0x708); // Rx CAN-ID
Отправить данные:
BYTE data[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
CanTpSendData(handle, data, elcount(data));
Для получения данных, вы должны выполнить следующие функции обратного вызова:
void CanTp_ReceptionInd(long connHandle, byte data[])
{
write("Received %d byte on connection %d: [%02x] ...",
elcount(data), connHandle, data[0]);
}
+0
Спасибо за пример и подсказки. Сейчас он работает как очарование. – Georgiev
«последовательных кадров» вы говорите об ISO-TP? – sergej
Да Протокол передачи используется. – Georgiev
Вы имеете в виду Transport Protocol? – sergej