编程界面

使用编程界面菜单可显示和设定配置并对配置发出命令。编程界面允许简单的HTTP脚本,以供浏览器使用或集成到其它具有Web功能的平台中。您可以在下面找到有关支持的命令和命令结构的附加信息。

如何使用编程命令

使用编程界面命令,必须具备以下条件:

  • TCP/IP链路中的一个GNSS接收机。这可以是以太网连接,也可以是串口上的PPP连接。
  • 可通过TCP/IP链路将HTTP请求发送到GNSS接收机的一台电脑。如果Web浏览器可以用GNSS接收机的Web界面进行通讯,则可确保此方式可用。
  • 允许发送CGI请求并接收响应的一种编程工具。在大多数Unix/Linux系统中,这可以通过命令行实用程序perl或curl实现。

编程命令必须编码为URL或CGI请求。这需要汇总几条信息。

  • 所需的协议(http或https)。
  • 目标系统的DNS名称或IP地址。
  • 形成命令的动词、对象和参数。

URL的格式为:

http://SystemName/prog/Verb?Object&param=value&param=value...

如果任何参数值中有特殊字符(例如空格或&符),则必须用%hex格式化对其进行编码。例如,必须用序列%20替换每个空格。

确定了URL之后,将用CGI传输工具把包含编码命令的“GET”请求发送到目标GNSS接收机。GNSS接收机将通过五种响应类型中的一种,将文档发送回来作为响应。几乎所有响应都是简单的ASCII文本,然后可以根据应用要求进行显示或解析。

上一段落的一个例外是将文件上传到GNSS接收机的情况。上传命令使用的是“POST”请求,而不是“GET”请求。详细信息,请参看上传文件。

使用Curl

测试编程命令的一种简单方法是将URLs手动输入到curl(一种常用的命令行工具)中。这里是一个显示用法的Unix会晤样本。

$ curl 'http://Alloy.Trimble.com/prog/show?serialNumber'
SerialNumber sn=60350239BF

$ curl 'http://Alloy.Trimble.com/prog/show?gpstime'
GpsTime gpsweek=1244 weekseconds=437597

$ curl 'http://Alloy.Trimble.com/prog/badcommand?abc'
ERROR: invalid verb 'badcommand'

$ curl 'http://Alloy.Trimble.com/prog/set?elevationmask&mask=10'
OK: ElevationMask mask=10

$ curl 'http://Alloy.Trimble.com/prog/show?position'
<Show Position>
GpsWeek 1244
WeekSeconds 498154.0
Latitude 37.3891271874 deg
Longitude -122.0368443968 deg
Altitude -4.898 meters

....

<end of Show Position>

可以将多个curl命令组装到一个shell脚本中,以实现远程控制的基本形式。

如果GNSS接收机启用了安全功能,则需要用帐户名和密码才能使用编程界面命令。Curl接收‘-u’命令行参数中的内容。例如:

$ curl -u admin:adminpw 'http://Alloy.trimble.com/prog/show?serialNumber'
SerialNumber sn=60350239BF

然后,用帐户名“admin”和密码“adminpw”提交请求。

用Curl下载二进制文件只需要将输出指定到一个文件。

$ path=/Internal
$ name=60350239BF200906181935.T01
$ curl "http://Alloy/prog/download?file&path=$path/$name" > $name
$

请注意 - 在这种情况下没有命令行响应。如果发生错误(例如,如果GNSS接收机中不存在文件),则该消息将最终出现在该文件中。

文件上传命令需要curl对带有二进制附件的POST请求进行格式化。Curl用一个-F选项来实现:

$ f=/tmp/fina_V401.timg
$ curl 'http://Alloy/prog/upload?firmwareFile' -F firmwareFile=@$f

该命令会将新固件影像文件上传到GNSS接收机,并触发新固件的安装。

使用Perl

Perl是一种功能强大的脚本语言。该语言带有许多库程序包,使其可用于自动执行许多复杂的任务。它也可用在大多数操作系统中,非常适合跨平台的一些应用。

使用编程接口命令,Perl可以轻松地用于控制GNSS接收机。一种简单的方法是使用LWP - Perl中用于WWW访问的库。在Linux中,将man LWP用于概述文档。这是一个功能强大且复杂的程序包,在此处无法记录文档。一些样本程序显示了所需的基本技巧。第一个显示了如何对基本URL请求进行编码:

#!/usr/bin/perl -w
use strict;
use LWP::Simple;

print get( "http://fbtc/prog/show?systemname" ) ;
print get( "http://fbtc/prog/show?gpstime" ) ;
print get( "http://fbtc/prog/badCommand?abc" ) ;
print get( "http://fbtc/prog/set?elevationMask&mask=10" ) ;
print get( "http://fbtc/prog/show?position" ) ;

运行该程序将产生以下输出:

SystemName name=NewName
GpsTime gpsweek=1244 weekseconds=498371
ERROR: Invalid verb 'badCommand'
OK: ElevationMask mask=10
<Show Position>
GpsWeek 1244
WeekSeconds 498373.2
Latitude 37.3891241306 deg
Longitude -122.0368464236 deg
Altitude -4.078 meters
....
<end of Show Position>

与只将一个get()请求重定指向一个文件相比较,文件下载要稍微复杂些,这主要是由于文件可以任意大的缘故。更复杂的语法将允许Perl下载并将结果直接放入文件中。

#!/usr/bin/perl -w

use LWP::UserAgent;

my $f = '60350239BF200906181935.T01' ;
my $path = '/Internal' ;

my $ua = LWP::UserAgent->new ;

my $req = HTTP::Request->new(GET=>
"http://Alloy/prog/download?file&path=$path/$f" ) ;

my $res = $ua->request( $req, $f ) ;

运行此命令时,GNSS接收机上记录的文件将复制到本地电脑中的一个同名文件中。请注意 - 标准输出中不出现文本。

文件上传使用类似的技巧。

#!/usr/bin/perl -w

use strict ;
use HTTP::Request::Common qw(POST) ;
use LWP::UserAgent ;

print "OKAY\n" ;
my $fname = '/tmp/fina_V401.timg' ;
my $ua = LWP::UserAgent->new ;
my $command = 'http://fbtc/prog/Upload?FirmwareFile' ;
my $response = $ua->request( POST( $command ,

Content_Type => 'form-data',
Content => [ 'firmwareFile'
=> [ $fname ]
]

)
) ;

print $response->content ;

运行该程序将产生:

OK: 故障安全固件安装开始。

其它技巧

使用其它方法将编程命令传输到目标系统完全可行。例如,C或C++程序直接打开到GNSS接收机的套接字连接,并通过这些通道直接发送请求。这是中高级编程,详细信息不在本文档讨论范围之内。

编程命令列表

以下是编程界面接受的操作-对象(Action-Object)命令的完整列表。单击单个命令会将您带到该命令的特定信息。

  • 状态命令
  • 卫星命令
  • 配置命令
  • I/O命令
  • 固件命令

状态命令

所有这些命令都将显示来自GNSS接收机的一些信息。这些信息可以是静态项目(例如序列号),也可以是动态项目(例如当前时间或接收机位置)。

命令 描述
Show SerialNumber(显示序列号) 返回此GNSS接收机的序列号。
Show UtcTime(显示Utc时间) 返回当前的UTC日期和时间。
Show GpsTime(显示Gps时间) 返回当前的GPS周数和时间。
Show Position(显示位置) 返回当前测量的位置和相关联的值。
Show Voltages(显示电压) 返回所有电源或电池输入位置的电压。
Show Temperature(显示温度) 返回GNSS接收机的内部温度。
Show Commands(显示命令) 返回所有受支持命令的列表。

卫星命令

这些命令与卫星跟踪和数据相关联。

命令 描述
Show TrackingStatus(显示跟踪状态) 返回所有被跟踪卫星的信息。
Show Tracking(显示跟踪) 返回信号跟踪设置。
Set Tracking(设置跟踪) 修改信号跟踪设置。
Show GpsSatControls(显示Gps卫星控制) 返回所有GPS卫星值的启用/禁用/忽略健康设置。
Set GpsSatControls(设置Gps卫星控制) 修改GPS卫星的启用/禁用/忽略健康设置。
Show SbasSatControls(显示Sbas卫星控制) 返回所有SBAS卫星的启用/禁用/忽略健康设置。
Set SbasSatControls(设置Sbas卫星控制) 修改SBAS卫星的启用/禁用/忽略健康设置。
Show GlonassSatControls(显示Glonass卫星控制) 返回所有GLONASS卫星的启用/禁用/忽略健康设置。
Set GlonassSatControls(设置Glonass卫星控制) 修改GLONASS卫星的启用/禁用/忽略健康设置。
Show Ephemeris(显示星历) 返回GNSS卫星的星历数据。
Show Almanac(显示年历) 返回GNSS卫星的年历数据。
Show GpsHealth(显示Gps健康) 返回所有GPS卫星的健康状态。
Show GpsUtcData(显示GpsUtc数据) 返回从GPS卫星解码的UTC数据。
Show GpsIonoData(显示Gps电离层数据) 返回从GPS卫星解码的电离层模型数据。
Reset GnssData(重置Gnss数据) 清除所有解码的GNSS星历和年历数据。

配置命令

这些命令显示或修改各种系统功能的状态。

命令 描述
Reset System(重置系统) 重新启动(重新引导)GNSS接收机。
Show ReferenceFrequency(显示参考频率) 返回10MHz参考时钟的当前源。
Set ReferenceFrequency(设置参考频率) 修改10MHz参考时钟的源。
Show ElevationMask(显示截止高度角) 返回当前的截止高度角控制设置。
Set ElevationMask(设置截止高度角) 修改截止高度角控制设置。
Show PdopMask(显示Pdop限制) 返回当前的PDOP限制控制设置。
Set PdopMask(设置Pdop限制) 修改PDOP限制控制设置。
Show ClockSteering(显示时钟操纵) 返回当前的时钟操纵控制设置。
Set ClockSteering(设置时钟操纵) 修改时钟操纵控制设置。
Show MultipathReject(显示多路径抑制) 返回当前的多路径抑制控制设置。
Set MultipathReject(设置多路径抑制) 修改多路径抑制控制设置。
Show PPS(显示PPS) 返回每秒脉冲控制的当前设置。
Set PPS(设置PPS) 修改每秒脉冲控制的设置。
Show AntennaTypes(显示天线类型) 返回受支持天线类型的列表。
Show Antenna Clears(显示天线间隙) 返回当前的天线规格。
Set Antenna(设置天线) 修改天线规格

输入/输出命令

这些部分显示如何配置输入/输出端口以流式传输数据等。

命令 描述
Show IoPorts(显示Io端口) 返回所有I/O端口及其设置的列表
Show IoPort(显示Io端口) 返回单一I/O端口的设置。
Set IoPort(设置Io端口) 修改I/O端口的控件。
Delete IoPort(删除Io端口) 移除TCP/IP端口定义。
Show RefStation(显示参考站) 返回当前的参考站控制设置。
Set RefStation(设置参考站) 修改参考站控制设置。
PortParameters(端口参数) 端口规格参数。
StreamParameters(流参数) 流规格参数。

固件命令

这些命令与GNSS接收机的更新固件相关联。

命令 描述
Show FirmwareVersion(显示固件版本) 返回当前正在运行的固件版本。
Show FirmwareWarranty(显示固件保修) 返回接收机中设置的固件保修日期。
Set FirmwareWarranty(设置固件保修) 发送选项代码以更新固件保修日期。
Upload FirmwareFile(上传固件文件) 将新的固件文件加载到接收机。