Как отправлять пакеты Ethernet или UDP-пакеты через CAPL? Я знаю, что есть блок Ethernet IG, но я хотел знать, можем ли мы отправить его через сценарий capl, как сообщение CAN отправляется через CaPL.
Отправить пакет Ethernet / UDP через CAPL
Ответы (2)
Вы действительно можете отправлять пакеты Ethernet через CAPL.
С опцией .Ethernet предоставляется несколько API для приема и передачи кадров Ethernet.
Руководство по функциям CAPL.
Например, функция ethernetPacket
используется для создания объекта отправки Ethernet. К сожалению, я никогда не делал этого сам, поэтому у меня нет фрагмента, чтобы продемонстрировать это, но я настоятельно рекомендую вам обратиться к руководству по CANoe / CANalyzer в разделе CAPL Functions
> Ethernet CAPL Functions
. Для связи Ethernet также предусмотрены процедуры, подобные прерыванию, например on ethernetPacket
. Вдобавок, возможно, вы захотите приложить больше усилий для исследования в следующий раз ...
Я ничего не знаю об UDP, но для полноты картины CAPL предоставляет API для TCP / IP, FlexRay, RS232 (последовательный) и таких стандартов, как J1939, K-Line.
Функцию ethernetPacket <packet var>;
можно использовать для создания объекта отправки Ethernet. Данными объекта можно управлять с помощью селекторов, связанных с этим объектом. Более подробную информацию об этих селекторах можно найти в справке по следующему пути: Функции CAPL »Ethernet» ethernetPacket Здесь пример того, как отправить пакет Ethernet через CAPL
ethernetPacket txPacket;
int i;
txPacket.msgChannel = 1;
txPacket.hwChannel = 2;
txPacket.source = EthGetMacAddressAsNumber( "20:00:00:00:00:01" );
txPacket.destination = EthGetMacAddressAsNumber( "FF:FF:FF:FF:FF:FF" );
txPacket.Length = 100;
txPacket.type = 0xF123;
for( i = 0; i < txPacket.Length; i++ )
{
txPacket.Byte(i) = i & 0xFF;
}
output( txPacket );