通过 CAPL 发送 ethernet/udp 数据包

Send ethernet/udp packet via CAPL

如何通过CAPL发送以太网包或UDP包?我知道有一个以太网 IG 块,但我想知道我们是否可以通过 capl 脚本发送它,就像通过 CaPL

发送 CAN 消息一样

您确实可以通过 CAPL 发送以太网数据包。

With option .Ethernet several APIs are provided for receiving and transmitting Ethernet frames.

CAPL 函数指南。

例如,函数ethernetPacket用于创建以太网发送对象。不幸的是,我自己从未做过,所以我没有片段来演示这一点,但我强烈建议您参考 CAPL Functions > Ethernet CAPL Functions 部分下的 CANoe/CANalyzer 指南。 Interrupt-like 还提供了用于以太网通信的程序,例如on ethernetPacket。另外,你可能要在研究上多下点功夫,下次...


我对 UDP 一无所知,但为了完整起见,CAPL 为 TCP/IP、FlexRay、RS232(串行)和 J1939、K-Line.

等标准提供 API

函数ethernetPacket <packet var>;可用于创建以太网发送对象。对象数据可以由与该对象关联的选择器操作。有关这些选择器的更多信息可以在以下路径的帮助中找到: CAPL 函数 » 以太网 » ethernetPacket 这里有一个关于如何通过 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 );