跳转到内容

SwisTrack/SwisTrack 接口

来自维基教科书,自由的教科书

SwisTrack 充当 TCP 服务器(默认端口:3000),因此可以轻松连接到其他程序以进一步处理结果。文本格式的 NMEA 0183 协议(可选校验和)用于对数据进行编码。

在 Linux 或 Mac OS X 上测试连接

[编辑 | 编辑源代码]

如果你在系统上安装了 netcat,请键入

nc HOSTNAME 3000

打开与 SwisTrack 的 TCP 连接。Netcat 将在你的终端上打印来自 SwisTrack 的消息,并将你键入的所有内容发送回 SwisTrack。(你也可以使用 telnet,尽管 telnet 不仅打开 TCP 连接。)

如果你使用的是最新版本的 bash,你也可以在 bash shell 上键入

cat < /dev/tcp/HOSTNAME/3000

读取来自 SwisTrack 的所有消息。请注意,这只会将来自 SwisTrack 的消息打印到你的终端,但不会发送你键入的内容。

在 Windows 上测试连接

[编辑 | 编辑源代码]

要连接到 SwisTrack,请启动 HyperTerminal 并在“连接到”对话框中选择“TCP / IP Winsock”。将主机地址设置为“localhost”,或 SwisTrack 运行的计算机的主机名/IP 地址,并将端口号设置为 3000。当你单击“确定”时,HyperTerminal 将建立与 SwisTrack 的连接。(请注意,SwisTrack 目前不会显示连接是否打开。)

HyperTerminal's configuration screen

如果你从另一台计算机连接,你可能需要配置 SwisTrack 运行的计算机上的防火墙以允许端口 3000 上的传入连接。

如果你现在在 SwisTrack 中执行一个步骤,并且至少有一个输出组件(例如 Output Particles 组件)处于活动状态,你将在 HyperTerminal 窗口中看到几行出现。

HyperTerminal with output from SwisTrack (two manual steps)

消息格式

[编辑 | 编辑源代码]

SwisTrack 使用 NMEA 0183 消息与其他程序交换数据。(请注意,NMEA 0183 不仅是消息格式,但 SwisTrack 不使用协议的其他部分。)此类消息如下所示

$MESSAGE_TYPE,FIELD1,FIELD2,...FIELDn*XX

其中 XX 表示校验和,通过对 $ 和 * 之间的每个字节进行异或运算并以两位十六进制数形式写出结果来获得。SwisTrack 始终将校验和添加到传出消息,但不要求传入消息上的校验和。没有校验和或校验和正确的消息将被接受,而校验和不正确的消息将被丢弃。

所有消息都以 $ 符号开头,并以 <CR><LF>(字符 13 或 0xD,后跟字符 10 或 0xA)结束。数据字段以逗号分隔,小数用点表示。消息类型是不区分大小写且长度任意的字符串(与标准不同,标准将其限制为 5 个字符)。

示例代码

[编辑 | 编辑源代码]

在 SwisTrack SVN 树的 Examples/OutputProcessing 文件夹中提供了用于以各种编程语言解析 NMEA 消息的示例代码。

消息类型

[编辑 | 编辑源代码]

输出组件可以自由定义自己的消息类型。这些类型的文档可在相应的 输出组件描述 中获得。

此外,SwisTrack 还提供一些内置消息类型

SUBSCRIBE
告诉 SwisTrack 仅发送特定类型的消息,而不是所有消息。例如,要仅接收 STEP_START 和 STEP_STOP 消息,请向 SwisTrack 发送以下消息
$SUBSCRIBE,STEP_START,STEP_STOP
要再次接收所有消息,请发送
$SUBSCRIBE
STEP
执行一个步骤,就像你在工具栏中单击了 步骤 按钮一样。示例
$STEP
RUN
设置运行模式。示例
$RUN,true          or          $RUN,false
START
在测试或生产模式下启动管道。示例
$START          or          $START,production
STOP
停止管道。示例
$STOP
RELOADCONFIGURATION
重新加载配置。示例
$RELOADCONFIGURATION
BROADCAST
将消息广播到所有 SwisTrack 客户端。第一个参数将成为广播消息的消息类型。如果你想插入来自另一个程序的信息(例如状态信息),这将很有用。例如,你的主要实验控制程序可能会使用以下内容广播实验的开始
$BROADCAST,EXPERIMENT_START,some_parameters

从 Linux 或 Mac OS X 与 SwisTrack 接口

[编辑 | 编辑源代码]

记录或处理来自 SwisTrack 的数据的最简单方法是将输出管道到 PerlPython 脚本(或你喜欢的任何其他脚本语言)。如果你的 bash 版本支持 /dev/tcp,那么你可以编写

./my-filter-script.pl < /dev/tcp/HOSTNAME/3000

你也可以使用 netcat

nc HOSTNAME 3000 | ./my-filter-script.pl

有时,将所有数据同时写入日志文件非常有用。为此,你可以使用 tee

nc HOSTNAME 3000 | tee mylogfile.txt | ./my-filter-script.pl

如果你还需要向 SwisTrack 发送命令,那么你必须从你的脚本打开你自己的 TCP 连接。

示例脚本可在 SwisTrack SVN 树的 Examples/OutputProcessing 文件夹中找到。

从 Windows 与 SwisTrack 接口

[编辑 | 编辑源代码]

在 Windows 上,你必须编写一个专用程序来打开与 SwisTrack 的 TCP 连接。解析 NMEA 消息的示例代码可在 SwisTrack SVN 树的 Examples/OutputProcessing 文件夹中找到。

华夏公益教科书