Передача данных по 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]);
}