Передача данных по ISO-TP (транспортный протокол) в CANoe с использованием CAPL

Использование CAPL с CANoe для передачи большого количества данных через ISO-TP по CAN. Есть ли подпрограмма, которая обеспечивает обработку сегментации данных, встроенной в CAPL, или мне нужно написать свою собственную интерпретацию?

1 ответ

Решение

Взгляните на демо OSEK_TP CANoe. Он показывает, как передавать и получать дату по ISO-TP (Транспортный протокол, ISO 15765-2). Увидеть nodeA.can файл и ссылка на OSEL_TP API для деталей реализации.

Вот минимальный пример:

Создайте и настройте соединение:

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]);
}
Другие вопросы по тегам