通过C ++ Console提供TCL脚本控制窗口

时间:2014-08-13 13:20:29

标签: c++ tcl sensor

我有一个汽车模拟软件,它允许通过脚本控制窗口输入参数。

我想要做的是编写一个小型C ++应用程序,它进行一些计算并开始逐行输入到汽车模拟器的tcl脚本控制窗口。

我们的想法是使用头部跟踪传感器来获取xyz平面中的当前位置,然后根据数据进行一些处理并自动编写如下内容:

>> Movie eval {dict set View(0:0) xrot 12 yrot 0 zrot 0}

进入脚本窗口,调整当前视图。

以上命令将转换为将当前摄像机视图平移到右侧(x方向)的12度位置,0度=向前看。

所以现在我的问题是: 如何告诉我的C ++应用程序将上述命令写入打开的脚本控制窗口?

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是在Tcllib(Tcl社区标准库)中使用comm包。唯一真正的复杂性是它使用的协议没有公开定义(它主要发送以特定格式编码的命令),所以你需要一些方法来轻松地进行对话。

最简单的讨论方法可能是在C ++应用程序中嵌入一个Tcl解释器。然后,您就可以将comm包加载到解释器中并使用comm::comm send来执行您想要的操作(您还需要在另一端使用包并复制ID,但这应该很容易)。

set remoteid ???;  # Look this up with [comm::comm self] on the other side
comm::comm send $remoteid \
    dict set View(0:0) xrot 12 yrot 0 zrot 0

当然,在使用Tcl_Eval()初始化Tcl库之后首先使用Tcl_CreateInterp()创建了一个本地解释器时,您需要将其包含在Tcl_FindExecutable()的适当调用中。在,但这只是标准嵌入。