2016-02-25 2 views
1

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

+0

«последовательных кадров» вы говорите об ISO-TP? – sergej

+0

Да Протокол передачи используется. – Georgiev

+0

Вы имеете в виду Transport Protocol? – sergej

ответ

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