当前位置:   article > 正文

CAPL中TCP协议相关函数_capl tcpopen

capl tcpopen

TCPBasicCAPL源码解读

连接

1.1 实例工程路径:C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 15.5.23\Ethernet\Simulation\TCPBasicCAPL

在这里插入图片描述

1.2 作为初学者,什么也不懂,就只会点CANoe的 “闪电”,运行后,Trace 输出了一些信息,大概是Server和Client 建立通信的过程输出的协议信息,但是为什么会打印这些报文呢?

在这里插入图片描述

我们把桌面窗口切到Setup ,看到这个Demo 使用了CANoe 的 Start Values功能,简单来说,就是CANoe启动的时候,就初始化一些信号,系统变量,局部变量等,更加详细的有兴趣可以参考探讨下 CANoe Enveriment下 Start Values的使用,小刀有大用处
在这里插入图片描述

官方Demo 没有更多的Debug 信息,对于初学者不利,可能不清楚TCP连续的过程,我就把每个变量和函数下面都加了 一行 Debug 信息,

在这里插入图片描述

再来看下,运行的打印情况:

在这里插入图片描述

这样我们就可以看出先后触发的代码是

  • Server端的 on sysvar_update sysvar::Server::Listen
  • Client端的 on sysvar_update sysvar::Client::Connect
  • Client端的 void OnTcpConnect( dword socket, long result)
  • Server端的 void OnTcpListen( dword socket, long result)

再根据这个顺序去读下 CAPL源码,大概就明白了TCP创建连接的过程是 下图所示的。

在这里插入图片描述

发送

再来看下实例的两个Panel ,客户端待发送数据,默认填充了Hello World! ,我们先点击Send,然后再Trace上看得到我们发送的数据。
我们学习任何一个新的编程都是从 hello world开始的,所以这个Demo也确实是CAPL脚本TCP连接的入门的实例
在这里插入图片描述
其次,我们再缕一缕 源码,首先点击Send按钮后触发事件,然后核心函数就是 gConnectionSocket.Send( text, strlen(text) );将系统变量中Hello World发给客户端

在这里插入图片描述

当客户端收到数据时会触发 OnTcpReceive事件,将buffer中的数据复制给客户端的系统变量
在这里插入图片描述

TCP函数库

这个官方示例中使用的是TcpSocket类并使用了其中的TCP方法。例子虽然简单,但是完整的体现了这些方式的使用和创建连接,发送数据的方法。

在这里插入图片描述

CAPL脚本内置的类方法,都有另一种写法,有时候我们也会选择这种方法。
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/730310
推荐阅读
相关标签
  

闽ICP备14008679号