赞
踩
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 信息,
再来看下,运行的打印情况:
这样我们就可以看出先后触发的代码是
on sysvar_update sysvar::Server::Listen
on sysvar_update sysvar::Client::Connect
void OnTcpConnect( dword socket, long result)
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
中的数据复制给客户端的系统变量
这个官方示例中使用的是TcpSocket类并使用了其中的TCP方法。例子虽然简单,但是完整的体现了这些方式的使用和创建连接,发送数据的方法。
CAPL脚本内置的类方法,都有另一种写法,有时候我们也会选择这种方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。